sf2-json 1.0.3 → 1.0.4
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/package.json +1 -1
- package/src/sf2-json.js +24 -38
package/package.json
CHANGED
package/src/sf2-json.js
CHANGED
|
@@ -221,44 +221,30 @@ function extractZones(soundFont, parsed, presetHeaderIndex) {
|
|
|
221
221
|
|
|
222
222
|
|
|
223
223
|
async function buildZone(generators, sampleHeader, sample) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
const audioBase64 = mp3Buffer.toString('base64');
|
|
249
|
-
|
|
250
|
-
return {
|
|
251
|
-
originalPitch: midi * 100,
|
|
252
|
-
keyRangeLow: generators.keyRange?.lo ?? 0,
|
|
253
|
-
keyRangeHigh: generators.keyRange?.hi ?? 127,
|
|
254
|
-
loopStart,
|
|
255
|
-
loopEnd,
|
|
256
|
-
coarseTune: generators.coarseTune ?? 0,
|
|
257
|
-
fineTune,
|
|
258
|
-
sampleRate,
|
|
259
|
-
ahdsr: ahdsr,
|
|
260
|
-
file: audioBase64,
|
|
261
|
-
};
|
|
224
|
+
const { originalPitch, pitchCorrection, loopStart, loopEnd } = sampleHeader;
|
|
225
|
+
|
|
226
|
+
const rootKey = (generators.overridingRootKey !== undefined && generators.overridingRootKey !== 255)
|
|
227
|
+
? generators.overridingRootKey
|
|
228
|
+
: originalPitch;
|
|
229
|
+
|
|
230
|
+
const coarseTuneCents = (generators.coarseTune ?? 0) * 100;
|
|
231
|
+
const fineTuneCents = (generators.fineTune ?? 0) + (pitchCorrection ?? 0);
|
|
232
|
+
const totalPitchOffset = coarseTuneCents + fineTuneCents;
|
|
233
|
+
const calculatedPitch = (rootKey * 100) + totalPitchOffset;
|
|
234
|
+
|
|
235
|
+
const wavBuffer = buildWavBuffer(sample);
|
|
236
|
+
const mp3Buffer = encodeOpus(wavBuffer, 96, RESAMPLE_RATE);
|
|
237
|
+
|
|
238
|
+
return {
|
|
239
|
+
originalPitch: calculatedPitch,
|
|
240
|
+
keyRangeLow: generators.keyRange?.lo ?? 0,
|
|
241
|
+
keyRangeHigh: generators.keyRange?.hi ?? 127,
|
|
242
|
+
loopStart,
|
|
243
|
+
loopEnd,
|
|
244
|
+
sampleRate: sampleHeader.sampleRate,
|
|
245
|
+
ahdsr: true,
|
|
246
|
+
file: mp3Buffer.toString('base64'),
|
|
247
|
+
};
|
|
262
248
|
}
|
|
263
249
|
|
|
264
250
|
|