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.
@@ -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[MOD_PRECOMPUTED_LENGTH - 1] = 1;
18
+ concave[concave.length - 1] = 1;
19
19
 
20
20
  convex[0] = 0;
21
- convex[MOD_PRECOMPUTED_LENGTH - 1] = 1;
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 / (MOD_PRECOMPUTED_LENGTH - 1)) / Math.LN10;
24
+ let x = (-200 * 2 / 960) * Math.log(i / (concave.length - 1)) / Math.LN10;
25
25
  convex[i] = 1 - x;
26
- concave[MOD_PRECOMPUTED_LENGTH - 1 - i] = x;
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 1 - concave[~~(value * -MOD_PRECOMPUTED_LENGTH)] - 1;
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 1 - convex[~~(value * -MOD_PRECOMPUTED_LENGTH)] - 1;
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
  }