spessasynth_lib 3.16.3 → 3.16.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -93,12 +93,27 @@ class BasicSoundFont
93
93
  /**
94
94
  * Get the appropriate preset, undefined if not foun d
95
95
  * @param bankNr {number}
96
- * @param presetNr {number}
96
+ * @param programNr {number}
97
+ * @param fallbackToProgram {boolean} if true, if no exact match is found, will use any bank with the given preset
97
98
  * @return {BasicPreset}
98
99
  */
99
- getPresetNoFallback(bankNr, presetNr)
100
+ getPresetNoFallback(bankNr, programNr, fallbackToProgram = false)
100
101
  {
101
- return this.presets.find(p => p.bank === bankNr && p.program === presetNr);
102
+ const p = this.presets.find(p => p.bank === bankNr && p.program === programNr);
103
+ if(p)
104
+ {
105
+ return p;
106
+ }
107
+ if(fallbackToProgram === false)
108
+ {
109
+ return undefined;
110
+ }
111
+ if(bankNr === 128)
112
+ {
113
+ // any drum preset
114
+ return this.presets.find(p => p.bank === 128);
115
+ }
116
+ return this.presets.find(p => p.program === programNr);
102
117
  }
103
118
 
104
119
  /**
@@ -113,18 +128,18 @@ class BasicSoundFont
113
128
  /**
114
129
  * Get the appropriate preset
115
130
  * @param bankNr {number}
116
- * @param presetNr {number}
131
+ * @param programNr {number}
117
132
  * @returns {BasicPreset}
118
133
  */
119
- getPreset(bankNr, presetNr)
134
+ getPreset(bankNr, programNr)
120
135
  {
121
- let preset = this.presets.find(p => p.bank === bankNr && p.program === presetNr);
136
+ let preset = this.presets.find(p => p.bank === bankNr && p.program === programNr);
122
137
  if (!preset)
123
138
  {
124
- preset = this.presets.find(p => p.program === presetNr && p.bank !== 128);
139
+ preset = this.presets.find(p => p.program === programNr && p.bank !== 128);
125
140
  if(bankNr === 128)
126
141
  {
127
- preset = this.presets.find(p => p.bank === 128 && p.program === presetNr);
142
+ preset = this.presets.find(p => p.bank === 128 && p.program === programNr);
128
143
  if(!preset)
129
144
  {
130
145
  preset = this.presets.find(p => p.bank === 128);
@@ -132,14 +147,14 @@ class BasicSoundFont
132
147
  }
133
148
  if(preset)
134
149
  {
135
- SpessaSynthWarn(`%cPreset ${bankNr}.${presetNr} not found. Replaced with %c${preset.presetName} (${preset.bank}.${preset.program})`,
150
+ SpessaSynthWarn(`%cPreset ${bankNr}.${programNr} not found. Replaced with %c${preset.presetName} (${preset.bank}.${preset.program})`,
136
151
  consoleColors.warn,
137
152
  consoleColors.recognized);
138
153
  }
139
154
  }
140
155
  if(!preset)
141
156
  {
142
- SpessaSynthWarn(`Preset ${presetNr} not found. Defaulting to`, this.presets[0].presetName);
157
+ SpessaSynthWarn(`Preset ${programNr} not found. Defaulting to`, this.presets[0].presetName);
143
158
  preset = this.presets[0];
144
159
  }
145
160
  return preset;