spessasynth_lib 3.21.2 → 3.21.3
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/soundfont/basic_soundfont/modulator.js +22 -4
- package/synthetizer/worklet_processor.min.js +9 -9
- package/synthetizer/worklet_system/worklet_methods/note_off.js +0 -0
- package/synthetizer/worklet_system/worklet_methods/note_on.js +0 -0
- package/synthetizer/worklet_system/worklet_methods/voice_control.js +0 -0
- package/synthetizer/worklet_system/worklet_utilities/modulator_curves.js +9 -9
- package/synthetizer/worklet_system/worklet_utilities/worklet_modulator.js +0 -16
- package/synthetizer/worklet_system/worklet_utilities/worklet_voice.js +0 -0
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -9,21 +9,21 @@ import { modulatorCurveTypes } from "../../../soundfont/basic_soundfont/modulato
|
|
|
9
9
|
export const MOD_PRECOMPUTED_LENGTH = 16384;
|
|
10
10
|
|
|
11
11
|
// Precalculate lookup tables for concave and convers
|
|
12
|
-
const concave = new Float32Array(MOD_PRECOMPUTED_LENGTH);
|
|
13
|
-
const convex = new Float32Array(MOD_PRECOMPUTED_LENGTH);
|
|
12
|
+
const concave = new Float32Array(MOD_PRECOMPUTED_LENGTH + 1);
|
|
13
|
+
const convex = new Float32Array(MOD_PRECOMPUTED_LENGTH + 1);
|
|
14
14
|
// the equation is taken from FluidSynth as it's the standard for soundFonts
|
|
15
15
|
// more precisely, this:
|
|
16
16
|
// https://github.com/FluidSynth/fluidsynth/blob/cb8da1e1e2c0a5cff2bab6a419755b598b793384/src/gentables/gen_conv.c#L55
|
|
17
17
|
concave[0] = 0;
|
|
18
|
-
concave[
|
|
18
|
+
concave[concave.length - 1] = 1;
|
|
19
19
|
|
|
20
20
|
convex[0] = 0;
|
|
21
|
-
convex[
|
|
21
|
+
convex[convex.length - 1] = 1;
|
|
22
22
|
for (let i = 1; i < MOD_PRECOMPUTED_LENGTH - 1; i++)
|
|
23
23
|
{
|
|
24
|
-
let x = (-200 * 2 / 960) * Math.log(i / (
|
|
24
|
+
let x = (-200 * 2 / 960) * Math.log(i / (concave.length - 1)) / Math.LN10;
|
|
25
25
|
convex[i] = 1 - x;
|
|
26
|
-
concave[
|
|
26
|
+
concave[concave.length - 1 - i] = x;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
|
@@ -68,9 +68,9 @@ export function getModulatorCurveValue(direction, curveType, value, polarity)
|
|
|
68
68
|
value = value * 2 - 1;
|
|
69
69
|
if (value < 0)
|
|
70
70
|
{
|
|
71
|
-
return
|
|
71
|
+
return -concave[~~(value * -MOD_PRECOMPUTED_LENGTH)];
|
|
72
72
|
}
|
|
73
|
-
return concave[~~value * MOD_PRECOMPUTED_LENGTH];
|
|
73
|
+
return concave[~~(value * MOD_PRECOMPUTED_LENGTH)];
|
|
74
74
|
}
|
|
75
75
|
return concave[~~(value * MOD_PRECOMPUTED_LENGTH)];
|
|
76
76
|
|
|
@@ -81,7 +81,7 @@ export function getModulatorCurveValue(direction, curveType, value, polarity)
|
|
|
81
81
|
value = value * 2 - 1;
|
|
82
82
|
if (value < 0)
|
|
83
83
|
{
|
|
84
|
-
return
|
|
84
|
+
return -convex[~~(value * -MOD_PRECOMPUTED_LENGTH)];
|
|
85
85
|
}
|
|
86
86
|
return convex[~~(value * MOD_PRECOMPUTED_LENGTH)];
|
|
87
87
|
}
|
|
@@ -231,10 +231,6 @@ for (let curve = 0; curve < 4; curve++)
|
|
|
231
231
|
i / MOD_PRECOMPUTED_LENGTH,
|
|
232
232
|
0
|
|
233
233
|
);
|
|
234
|
-
if (isNaN(transforms[curve][0][0][i]))
|
|
235
|
-
{
|
|
236
|
-
transforms[curve][0][0][i] = 1;
|
|
237
|
-
}
|
|
238
234
|
|
|
239
235
|
// polarity 1 dir 0
|
|
240
236
|
transforms[curve][1][0][i] = getModulatorCurveValue(
|
|
@@ -243,10 +239,6 @@ for (let curve = 0; curve < 4; curve++)
|
|
|
243
239
|
i / MOD_PRECOMPUTED_LENGTH,
|
|
244
240
|
1
|
|
245
241
|
);
|
|
246
|
-
if (isNaN(transforms[curve][1][0][i]))
|
|
247
|
-
{
|
|
248
|
-
transforms[curve][1][0][i] = 1;
|
|
249
|
-
}
|
|
250
242
|
|
|
251
243
|
// polarity 0 dir 1
|
|
252
244
|
transforms[curve][0][1][i] = getModulatorCurveValue(
|
|
@@ -255,10 +247,6 @@ for (let curve = 0; curve < 4; curve++)
|
|
|
255
247
|
i / MOD_PRECOMPUTED_LENGTH,
|
|
256
248
|
0
|
|
257
249
|
);
|
|
258
|
-
if (isNaN(transforms[curve][0][1][i]))
|
|
259
|
-
{
|
|
260
|
-
transforms[curve][0][1][i] = 1;
|
|
261
|
-
}
|
|
262
250
|
|
|
263
251
|
// polarity 1 dir 1
|
|
264
252
|
transforms[curve][1][1][i] = getModulatorCurveValue(
|
|
@@ -267,9 +255,5 @@ for (let curve = 0; curve < 4; curve++)
|
|
|
267
255
|
i / MOD_PRECOMPUTED_LENGTH,
|
|
268
256
|
1
|
|
269
257
|
);
|
|
270
|
-
if (isNaN(transforms[curve][1][1][i]))
|
|
271
|
-
{
|
|
272
|
-
transforms[curve][1][1][i] = 1;
|
|
273
|
-
}
|
|
274
258
|
}
|
|
275
259
|
}
|
|
File without changes
|