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.
- package/@types/index.d.ts +2 -0
- package/@types/midi_parser/rmidi_writer.d.ts +2 -1
- package/@types/midi_parser/used_keys_loaded.d.ts +10 -0
- package/@types/soundfont/basic_soundfont/basic_soundfont.d.ts +5 -4
- package/@types/soundfont/basic_soundfont/write_sf2/soundfont_trimmer.d.ts +6 -0
- package/@types/synthetizer/worklet_system/worklet_utilities/worklet_processor_channel.d.ts +2 -2
- package/index.js +2 -2
- package/midi_parser/midi_loader.js +9 -0
- package/midi_parser/rmidi_writer.js +225 -244
- package/package.json +1 -1
- package/soundfont/basic_soundfont/basic_soundfont.js +25 -10
- package/synthetizer/worklet_processor.min.js +5 -5
- package/synthetizer/worklet_system/worklet_methods/program_control.js +6 -17
- package/synthetizer/worklet_system/worklet_utilities/worklet_processor_channel.js +1 -1
|
@@ -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
|
|
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,
|
|
100
|
+
getPresetNoFallback(bankNr, programNr, fallbackToProgram = false)
|
|
100
101
|
{
|
|
101
|
-
|
|
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
|
|
131
|
+
* @param programNr {number}
|
|
117
132
|
* @returns {BasicPreset}
|
|
118
133
|
*/
|
|
119
|
-
getPreset(bankNr,
|
|
134
|
+
getPreset(bankNr, programNr)
|
|
120
135
|
{
|
|
121
|
-
let preset = this.presets.find(p => p.bank === bankNr && p.program ===
|
|
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 ===
|
|
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 ===
|
|
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}.${
|
|
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 ${
|
|
157
|
+
SpessaSynthWarn(`Preset ${programNr} not found. Defaulting to`, this.presets[0].presetName);
|
|
143
158
|
preset = this.presets[0];
|
|
144
159
|
}
|
|
145
160
|
return preset;
|