dsp-collection 0.2.2 → 0.2.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.
Files changed (55) hide show
  1. package/README.md +19 -0
  2. package/filter/SpecFilt.d.ts +10 -0
  3. package/filter/SpecFilt.js +99 -0
  4. package/filter/SpecFilt.js.map +1 -0
  5. package/math/Complex.js +1 -1
  6. package/math/Complex.js.map +1 -1
  7. package/math/ComplexArray.d.ts +9 -5
  8. package/math/ComplexArray.js +49 -21
  9. package/math/ComplexArray.js.map +1 -1
  10. package/math/MathUtils.d.ts +2 -1
  11. package/math/MathUtils.js +6 -0
  12. package/math/MathUtils.js.map +1 -1
  13. package/math/MutableComplex.d.ts +1 -1
  14. package/math/MutableComplex.js +1 -1
  15. package/math/MutableComplex.js.map +1 -1
  16. package/math/PolyReal.d.ts +13 -8
  17. package/math/PolyReal.js +180 -32
  18. package/math/PolyReal.js.map +1 -1
  19. package/package.json +5 -7
  20. package/signal/AdaptiveStft.d.ts +6 -6
  21. package/signal/AdaptiveStft.js +3 -3
  22. package/signal/AdaptiveStft.js.map +1 -1
  23. package/signal/Autocorrelation.d.ts +5 -5
  24. package/signal/Autocorrelation.js +2 -2
  25. package/signal/Autocorrelation.js.map +1 -1
  26. package/signal/Dft.d.ts +6 -6
  27. package/signal/Dft.js +3 -3
  28. package/signal/Dft.js.map +1 -1
  29. package/signal/EnvelopeDetection.d.ts +1 -1
  30. package/signal/EnvelopeDetection.js +1 -1
  31. package/signal/EnvelopeDetection.js.map +1 -1
  32. package/signal/Fft.d.ts +7 -4
  33. package/signal/Fft.js +98 -9
  34. package/signal/Fft.js.map +1 -1
  35. package/signal/Goertzel.d.ts +5 -5
  36. package/signal/Goertzel.js +3 -3
  37. package/signal/Goertzel.js.map +1 -1
  38. package/signal/InstFreq.d.ts +3 -3
  39. package/signal/InstFreq.js +1 -1
  40. package/signal/InstFreq.js.map +1 -1
  41. package/signal/PitchDetectionHarm.d.ts +4 -4
  42. package/signal/PitchDetectionHarm.js +6 -6
  43. package/signal/PitchDetectionHarm.js.map +1 -1
  44. package/signal/Resampling.d.ts +7 -0
  45. package/signal/Resampling.js +219 -0
  46. package/signal/Resampling.js.map +1 -0
  47. package/signal/WindowFunctions.d.ts +3 -3
  48. package/signal/WindowFunctions.js +1 -1
  49. package/signal/WindowFunctions.js.map +1 -1
  50. package/utils/ArrayUtils.d.ts +4 -3
  51. package/utils/ArrayUtils.js +14 -10
  52. package/utils/ArrayUtils.js.map +1 -1
  53. package/utils/MiscUtils.d.ts +5 -0
  54. package/utils/MiscUtils.js +5 -0
  55. package/utils/MiscUtils.js.map +1 -1
package/math/PolyReal.js CHANGED
@@ -1,39 +1,76 @@
1
- import MutableComplex from "./MutableComplex";
2
- export function evaluate(a, x) {
1
+ import MutableComplex from "./MutableComplex.js";
2
+ export function evaluateReal(a, x) {
3
3
  if (a.length == 0) {
4
4
  throw new Error("Zero length array.");
5
5
  }
6
6
  const n = a.length - 1;
7
- const sum = new MutableComplex(a[n]);
7
+ let r = a[n];
8
8
  for (let i = n - 1; i >= 0; i--) {
9
- sum.mulBy(x);
10
- sum.addRealTo(a[i]);
9
+ r *= x;
10
+ r += a[i];
11
11
  }
12
- return sum;
12
+ return r;
13
13
  }
14
- export function add(a1, a2) {
14
+ export function evaluateComplex(a, x) {
15
+ if (a.length == 0) {
16
+ throw new Error("Zero length array.");
17
+ }
18
+ const n = a.length - 1;
19
+ const r = new MutableComplex(a[n]);
20
+ for (let i = n - 1; i >= 0; i--) {
21
+ r.mulBy(x);
22
+ r.addRealTo(a[i]);
23
+ }
24
+ return r;
25
+ }
26
+ export function expand(zeros) {
27
+ const n = zeros.length;
28
+ if (n == 0) {
29
+ return Float64Array.of(1);
30
+ }
31
+ let a = Float64Array.of(-zeros[0], 1);
32
+ for (let i = 1; i < n; i++) {
33
+ const a2 = Float64Array.of(-zeros[i], 1);
34
+ a = multiply(a, a2);
35
+ }
36
+ return a;
37
+ }
38
+ export function compareEqual(a1, a2, eps = 0) {
39
+ const n1 = a1.length - 1;
40
+ const n2 = a2.length - 1;
41
+ const n = Math.max(n1, n2);
42
+ for (let i = 0; i <= n; i++) {
43
+ const v1 = (i <= n1) ? a1[i] : 0;
44
+ const v2 = (i <= n2) ? a2[i] : 0;
45
+ if (Math.abs(v1 - v2) > eps) {
46
+ return false;
47
+ }
48
+ }
49
+ return true;
50
+ }
51
+ export function add(a1, a2, eps = 0) {
15
52
  const n1 = a1.length - 1;
16
53
  const n2 = a2.length - 1;
17
54
  const n3 = Math.max(n1, n2);
18
- const a3 = new Array(n3 + 1);
55
+ const a3 = new Float64Array(n3 + 1);
19
56
  for (let i = 0; i <= n3; i++) {
20
57
  const v1 = (i <= n1) ? a1[i] : 0;
21
58
  const v2 = (i <= n2) ? a2[i] : 0;
22
59
  a3[i] = v1 + v2;
23
60
  }
24
- return a3;
61
+ return trim(a3, eps);
25
62
  }
26
- export function multiply(a1, a2) {
63
+ export function multiply(a1, a2, eps = 0) {
27
64
  if (a1.length == 0 || a2.length == 0) {
28
65
  throw new Error("Zero length arrays.");
29
66
  }
30
67
  if (a1.length == 1 && a1[0] == 0 || a2.length == 1 && a2[0] == 0) {
31
- return [0];
68
+ return Float64Array.of(0);
32
69
  }
33
70
  const n1 = a1.length - 1;
34
71
  const n2 = a2.length - 1;
35
72
  const n3 = n1 + n2;
36
- const a3 = new Array(n3 + 1);
73
+ const a3 = new Float64Array(n3 + 1);
37
74
  for (let i = 0; i <= n3; i++) {
38
75
  let t = 0;
39
76
  const p1 = Math.max(0, i - n2);
@@ -43,37 +80,148 @@ export function multiply(a1, a2) {
43
80
  }
44
81
  a3[i] = t;
45
82
  }
46
- return a3;
83
+ return trim(a3, eps);
47
84
  }
48
- export function equals(a1, a2, eps = 0) {
85
+ export function divide(a1r, a2r, eps = 0) {
86
+ if (a1r.length == 0 || a2r.length == 0) {
87
+ throw new Error("Zero length arrays.");
88
+ }
89
+ const a1 = trim(a1r, eps);
90
+ const a2 = trim(a2r, eps);
91
+ if (a2.length == 1) {
92
+ if (a2[0] == 0) {
93
+ throw new Error("Polynomial division by zero.");
94
+ }
95
+ if (a2[0] == 1) {
96
+ return [Float64Array.from(a1), Float64Array.of(0)];
97
+ }
98
+ return [divByReal(a1, a2[0]), Float64Array.of(0)];
99
+ }
49
100
  const n1 = a1.length - 1;
50
101
  const n2 = a2.length - 1;
51
- const n = Math.max(n1, n2);
52
- for (let i = 0; i <= n; i++) {
53
- const v1 = (i <= n1) ? a1[i] : 0;
54
- const v2 = (i <= n2) ? a2[i] : 0;
55
- if (Math.abs(v1 - v2) > eps) {
56
- return false;
102
+ if (n1 < n2) {
103
+ return [Float64Array.of(0), Float64Array.from(a1)];
104
+ }
105
+ const a = Float64Array.from(a1);
106
+ const lc2 = a2[n2];
107
+ for (let i = n1 - n2; i >= 0; i--) {
108
+ const r = a[n2 + i] / lc2;
109
+ a[n2 + i] = r;
110
+ for (let j = 0; j < n2; ++j) {
111
+ a[i + j] -= r * a2[j];
57
112
  }
58
113
  }
59
- return true;
114
+ const quotient = trim(a.subarray(n2), eps);
115
+ const remainder = trim(a.subarray(0, n2), eps);
116
+ return [quotient, remainder];
117
+ }
118
+ export function gcd(a1, a2, eps = 0) {
119
+ let r1 = trim(a1, eps);
120
+ let r2 = trim(a2, eps);
121
+ makeMonic(r1);
122
+ makeMonic(r2);
123
+ if (r1.length < r2.length) {
124
+ [r1, r2] = [r2, r1];
125
+ }
126
+ while (true) {
127
+ if (r2.length < 2) {
128
+ return Float64Array.of(1);
129
+ }
130
+ const r = divide(r1, r2, eps)[1];
131
+ if (r.length == 1 && r[0] == 0) {
132
+ return r2;
133
+ }
134
+ makeMonic(r);
135
+ r1 = r2;
136
+ r2 = r;
137
+ }
60
138
  }
61
- export function evaluateFraction(f, x) {
62
- const v1 = evaluate(f[0], x);
63
- const v2 = evaluate(f[1], x);
139
+ function trim(a, eps = 0) {
140
+ if (a.length == 0) {
141
+ throw new Error("Zero length array.");
142
+ }
143
+ if (Math.abs(a[a.length - 1]) > eps) {
144
+ return Float64Array.from(a);
145
+ }
146
+ let len = a.length - 1;
147
+ while (len > 0 && Math.abs(a[len - 1]) <= eps) {
148
+ len--;
149
+ }
150
+ if (len == 0) {
151
+ return Float64Array.of(0);
152
+ }
153
+ const a2 = new Float64Array(len);
154
+ for (let i = 0; i < len; i++) {
155
+ a2[i] = a[i];
156
+ }
157
+ return a2;
158
+ }
159
+ function makeMonic(a) {
160
+ const len = a.length;
161
+ if (len == 0) {
162
+ throw new Error("Zero length array.");
163
+ }
164
+ const lc = a[len - 1];
165
+ if (lc == 1) {
166
+ return;
167
+ }
168
+ if (lc == 0) {
169
+ throw new Error("Leading coefficient is zero.");
170
+ }
171
+ a[len - 1] = 1;
172
+ for (let i = 0; i < len - 1; i++) {
173
+ a[i] /= lc;
174
+ }
175
+ }
176
+ function divByReal(a, b) {
177
+ const a2 = new Float64Array(a.length);
178
+ for (let i = 0; i < a.length; i++) {
179
+ a2[i] = a[i] / b;
180
+ }
181
+ return a2;
182
+ }
183
+ function divByRealInPlace(a, b) {
184
+ for (let i = 0; i < a.length; i++) {
185
+ a[i] /= b;
186
+ }
187
+ }
188
+ export function evaluateFractionComplex(f, x) {
189
+ const v1 = evaluateComplex(f[0], x);
190
+ const v2 = evaluateComplex(f[1], x);
64
191
  return v1.div(v2);
65
192
  }
66
- export function addFractions(f1, f2) {
67
- if (equals(f1[1], f2[1])) {
68
- return [add(f1[0], f2[0]), f1[1].slice()];
193
+ export function addFractions(f1, f2, eps = 0) {
194
+ if (compareEqual(f1[1], f2[1], eps)) {
195
+ return [add(f1[0], f2[0], eps), Float64Array.from(f1[1])];
196
+ }
197
+ const g = gcd(f1[1], f2[1], eps);
198
+ if (g.length == 1 && g[0] == 1) {
199
+ const top = add(multiply(f1[0], f2[1], eps), multiply(f2[0], f1[1], eps));
200
+ const bottom = multiply(f1[1], f2[1], eps);
201
+ return [top, bottom];
69
202
  }
70
- const top = add(multiply(f1[0], f2[1]), multiply(f2[0], f1[1]));
71
- const bottom = multiply(f1[1], f2[1]);
203
+ const q1 = divide(f1[1], g, eps);
204
+ const q2 = divide(f2[1], g, eps);
205
+ const m1 = q1[0];
206
+ const m2 = q2[0];
207
+ const top = add(multiply(f1[0], m2, eps), multiply(f2[0], m1, eps));
208
+ const bottom = multiply(f1[1], m2, eps);
72
209
  return [top, bottom];
73
210
  }
74
- export function multiplyFractions(f1, f2) {
75
- const top = multiply(f1[0], f2[0]);
76
- const bottom = multiply(f1[1], f2[1]);
211
+ export function multiplyFractions(f1, f2, eps = 0) {
212
+ const top = multiply(f1[0], f2[0], eps);
213
+ const bottom = multiply(f1[1], f2[1], eps);
214
+ return [top, bottom];
215
+ }
216
+ export function normalizeFraction(f, eps = 0) {
217
+ const top = trim(f[0], eps);
218
+ const bottom = trim(f[1], eps);
219
+ const lc = bottom[bottom.length - 1];
220
+ if (lc == 0) {
221
+ throw new Error("Fraction denominator is zero.");
222
+ }
223
+ divByRealInPlace(top, lc);
224
+ divByRealInPlace(bottom, lc);
77
225
  return [top, bottom];
78
226
  }
79
227
  //# sourceMappingURL=PolyReal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PolyReal.js","sourceRoot":"","sources":["../../src/math/PolyReal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PolyReal.js","sourceRoot":"","sources":["../../src/math/PolyReal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsp-collection",
3
- "version": "0.2.2",
3
+ "version": "0.2.5",
4
4
  "description": "A collection of JavaScript modules for digital signal processing (written in TypeScript)",
5
5
  "keywords": [
6
6
  "DSP",
@@ -9,6 +9,8 @@
9
9
  "Goertzel",
10
10
  "FFT",
11
11
  "Fourier Transform",
12
+ "Filter",
13
+ "Spectral filtering",
12
14
  "Window functions",
13
15
  "Instantaneous frequency",
14
16
  "Pitch estimation"
@@ -19,7 +21,8 @@
19
21
  "contributors": [
20
22
  {
21
23
  "name": "Christian d'Heureuse",
22
- "email": "chdh@inventec.ch"
24
+ "email": "chdh@inventec.ch",
25
+ "url": "http://www.source-code.biz"
23
26
  }
24
27
  ],
25
28
  "scripts": {
@@ -29,10 +32,5 @@
29
32
  "doPack": "cd dist && npm pack",
30
33
  "doPublish": "cd dist && npm publish"
31
34
  },
32
- "devDependencies": {
33
- "@types/node": "^11.13.4",
34
- "rimraf": "^2.6.3",
35
- "source-map-support": "^0.5.12"
36
- },
37
35
  "type": "module"
38
36
  }
@@ -1,12 +1,12 @@
1
- import Complex from "../math/Complex";
2
- import * as WindowFunctions from "./WindowFunctions";
1
+ import Complex from "../math/Complex.js";
2
+ import * as WindowFunctions from "./WindowFunctions.js";
3
3
  export interface ComponentResult {
4
4
  component: Complex;
5
5
  frequency: number;
6
6
  windowStartPosition: number;
7
7
  windowWidth: number;
8
8
  }
9
- export declare function getSingle_relWindow(samples: Float64Array, roughFrequency: number, roughWindowCenterPosition: number, relWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): ComponentResult | undefined;
10
- export declare function getSingle_maxWindow(samples: Float64Array, roughFrequency: number, roughWindowCenterPosition: number, maxWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): ComponentResult | undefined;
11
- export declare function getSingle(samples: Float64Array, roughFrequency: number, windowFunction: WindowFunctions.WindowFunction | undefined): Complex;
12
- export declare function getHarmonicAmplitudes(samples: Float64Array, windowCenterPosition: number, f0: number, harmonics: number, relWindowWidth?: number, windowFunction?: typeof WindowFunctions.flatTopWindowNorm): Float64Array | undefined;
9
+ export declare function getSingle_relWindow(samples: Float64Array | Float32Array, roughFrequency: number, roughWindowCenterPosition: number, relWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): ComponentResult | undefined;
10
+ export declare function getSingle_maxWindow(samples: Float64Array | Float32Array, roughFrequency: number, roughWindowCenterPosition: number, maxWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): ComponentResult | undefined;
11
+ export declare function getSingle(samples: Float64Array | Float32Array, roughFrequency: number, windowFunction: WindowFunctions.WindowFunction | undefined): Complex;
12
+ export declare function getHarmonicAmplitudes(samples: Float64Array | Float32Array, windowCenterPosition: number, f0: number, harmonics: number, relWindowWidth?: number, windowFunction?: typeof WindowFunctions.flatTopWindowNorm): Float64Array | undefined;
@@ -1,6 +1,6 @@
1
- import Complex from "../math/Complex";
2
- import * as Goertzel from "./Goertzel";
3
- import * as WindowFunctions from "./WindowFunctions";
1
+ import Complex from "../math/Complex.js";
2
+ import * as Goertzel from "./Goertzel.js";
3
+ import * as WindowFunctions from "./WindowFunctions.js";
4
4
  export function getSingle_relWindow(samples, roughFrequency, roughWindowCenterPosition, relWindowWidth, windowFunction) {
5
5
  if (roughFrequency <= 0 || roughFrequency >= 0.5 || relWindowWidth < 1) {
6
6
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"AdaptiveStft.js","sourceRoot":"","sources":["../../src/signal/AdaptiveStft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AdaptiveStft.js","sourceRoot":"","sources":["../../src/signal/AdaptiveStft.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as WindowFunctions from "./WindowFunctions";
2
- export declare function nonPeriodicAutocorrelationSingle(x: Float64Array, distance: number, compensate: boolean): number;
3
- export declare function findNonPeriodicAutocorrelationMaximum(x: Float64Array, minDistance: number, maxDistance: number, fixedOverlapWidth: boolean): number;
4
- export declare function nonPeriodicAutocorrelation(x: Float64Array, normalize: boolean): Float64Array;
5
- export declare function windowedNonPeriodicAutocorrelation(x: Float64Array, windowFunction: WindowFunctions.WindowFunction, normalize: boolean): Float64Array;
1
+ import * as WindowFunctions from "./WindowFunctions.js";
2
+ export declare function nonPeriodicAutocorrelationSingle(x: ArrayLike<number>, distance: number, compensate: boolean): number;
3
+ export declare function findNonPeriodicAutocorrelationMaximum(x: ArrayLike<number>, minDistance: number, maxDistance: number, fixedOverlapWidth: boolean): number;
4
+ export declare function nonPeriodicAutocorrelation(x: ArrayLike<number>, normalize: boolean): Float64Array;
5
+ export declare function windowedNonPeriodicAutocorrelation(x: ArrayLike<number>, windowFunction: WindowFunctions.WindowFunction, normalize: boolean): Float64Array;
@@ -1,5 +1,5 @@
1
- import * as WindowFunctions from "./WindowFunctions";
2
- import * as ArrayUtils from "../utils/ArrayUtils";
1
+ import * as WindowFunctions from "./WindowFunctions.js";
2
+ import * as ArrayUtils from "../utils/ArrayUtils.js";
3
3
  function autocorrelationKernel(x, distance, n) {
4
4
  let sum = 0;
5
5
  for (let i = 0; i < n; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"Autocorrelation.js","sourceRoot":"","sources":["../../src/signal/Autocorrelation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Autocorrelation.js","sourceRoot":"","sources":["../../src/signal/Autocorrelation.ts"],"names":[],"mappings":"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"}
package/signal/Dft.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import MutableComplex from "../math/MutableComplex";
2
- import ComplexArray from "../math/ComplexArray";
3
- export declare function dftRealSingle(x: Float64Array, relativeFrequency: number): MutableComplex;
1
+ import MutableComplex from "../math/MutableComplex.js";
2
+ import ComplexArray from "../math/ComplexArray.js";
3
+ export declare function dftRealSingle(x: ArrayLike<number>, relativeFrequency: number): MutableComplex;
4
4
  export declare function dftSingle(x: ComplexArray, relativeFrequency: number, direction: boolean): MutableComplex;
5
- export declare function dftReal(x: Float64Array): ComplexArray;
6
- export declare function dftRealHalf(x: Float64Array): ComplexArray;
5
+ export declare function dftReal(x: ArrayLike<number>): ComplexArray;
6
+ export declare function dftRealHalf(x: ArrayLike<number>): ComplexArray;
7
7
  export declare function dft(x: ComplexArray, direction: boolean): ComplexArray;
8
- export declare function dftRealSpectrum(x: Float64Array, inclNyquist?: boolean): ComplexArray;
8
+ export declare function dftRealSpectrum(x: ArrayLike<number>, inclNyquist?: boolean): ComplexArray;
9
9
  export declare function iDftRealSpectrum(x: ComplexArray, len: number): Float64Array;
package/signal/Dft.js CHANGED
@@ -1,6 +1,6 @@
1
- import Complex from "../math/Complex";
2
- import MutableComplex from "../math/MutableComplex";
3
- import ComplexArray from "../math/ComplexArray";
1
+ import Complex from "../math/Complex.js";
2
+ import MutableComplex from "../math/MutableComplex.js";
3
+ import ComplexArray from "../math/ComplexArray.js";
4
4
  export function dftRealSingle(x, relativeFrequency) {
5
5
  const n = x.length;
6
6
  if (n == 0) {
package/signal/Dft.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Dft.js","sourceRoot":"","sources":["../../src/signal/Dft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dft.js","sourceRoot":"","sources":["../../src/signal/Dft.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare function generateSignalEnvelope(signal: Float64Array, windowWidthDc: number, windowWidthEnvelope: number): Float64Array;
1
+ export declare function generateSignalEnvelope(signal: ArrayLike<number>, windowWidthDc: number, windowWidthEnvelope: number): Float64Array;
@@ -1,4 +1,4 @@
1
- import * as MathUtils from "../math/MathUtils";
1
+ import * as MathUtils from "../math/MathUtils.js";
2
2
  export function generateSignalEnvelope(signal, windowWidthDc, windowWidthEnvelope) {
3
3
  const a1 = MathUtils.movingAverage(signal, windowWidthDc);
4
4
  for (let i = 0; i < a1.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"EnvelopeDetection.js","sourceRoot":"","sources":["../../src/signal/EnvelopeDetection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAoB/C,MAAM,UAAU,sBAAsB,CAAE,MAAoB,EAAE,aAAqB,EAAE,mBAA2B;IAC7G,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;IACzC,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC5D,OAAO,EAAE,CAAC;AAAC,CAAC"}
1
+ {"version":3,"file":"EnvelopeDetection.js","sourceRoot":"","sources":["../../src/signal/EnvelopeDetection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAoBlD,MAAM,UAAU,sBAAsB,CAAE,MAAyB,EAAE,aAAqB,EAAE,mBAA2B;IAClH,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE;IACzC,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC5D,OAAO,EAAE,CAAC;AAAC,CAAC"}
package/signal/Fft.d.ts CHANGED
@@ -1,6 +1,9 @@
1
- import ComplexArray from "../math/ComplexArray";
1
+ import ComplexArray from "../math/ComplexArray.js";
2
2
  export declare function fft(x: ComplexArray, direction?: boolean): ComplexArray;
3
- export declare function fftReal(x: Float64Array): ComplexArray;
4
- export declare function fftRealHalf(x: Float64Array): ComplexArray;
5
- export declare function fftRealSpectrum(x: Float64Array, inclNyquist?: boolean): ComplexArray;
3
+ export declare function fftReal(x: ArrayLike<number>): ComplexArray;
4
+ export declare function fftRealHalf(x: ArrayLike<number>, inclNyquist?: boolean): ComplexArray;
5
+ export declare function fftRealSpectrum(x: ArrayLike<number>, inclNyquist?: boolean): ComplexArray;
6
6
  export declare function fftShift(x: ComplexArray): ComplexArray;
7
+ export declare function iFftRealHalfSimple(x: ComplexArray, len: number, inclNyquist?: boolean): Float64Array;
8
+ export declare function iFftRealHalfOpt(x: ComplexArray, len: number, inclNyquist?: boolean): Float64Array;
9
+ export declare function iFftRealHalf(x: ComplexArray, len: number, inclNyquist?: boolean): Float64Array;
package/signal/Fft.js CHANGED
@@ -1,6 +1,7 @@
1
- import ComplexArray from "../math/ComplexArray";
2
- import MutableComplex from "../math/MutableComplex";
3
- import * as MathUtils from "../math/MathUtils";
1
+ import ComplexArray from "../math/ComplexArray.js";
2
+ import MutableComplex from "../math/MutableComplex.js";
3
+ import * as MathUtils from "../math/MathUtils.js";
4
+ var cooleyTukeySineTableCache;
4
5
  export function fft(x, direction = true) {
5
6
  const n = x.length;
6
7
  if (n <= 1) {
@@ -13,7 +14,7 @@ export function fft(x, direction = true) {
13
14
  }
14
15
  function fftCooleyTukey(x) {
15
16
  const n = x.length;
16
- const sineTable = createSineTable(n / 2, n, false);
17
+ const sineTable = getCachedCooleyTukeySineTable(n);
17
18
  const a = copyBitReversed(x);
18
19
  applyButterflies(a, sineTable);
19
20
  return a;
@@ -95,6 +96,19 @@ function convolve(a1, a2) {
95
96
  a5.mulAllByReal(1 / n);
96
97
  return a5;
97
98
  }
99
+ function getCachedCooleyTukeySineTable(n) {
100
+ if (!cooleyTukeySineTableCache) {
101
+ cooleyTukeySineTableCache = new Array(16);
102
+ }
103
+ const log2N = MathUtils.floorLog2(n);
104
+ if (!cooleyTukeySineTableCache[log2N]) {
105
+ cooleyTukeySineTableCache[log2N] = createCooleyTukeySineTable(n);
106
+ }
107
+ return cooleyTukeySineTableCache[log2N];
108
+ }
109
+ function createCooleyTukeySineTable(n) {
110
+ return createSineTable(n / 2, n, false);
111
+ }
98
112
  function createSineTable(tableLength, waveLength, rotationalDirection = true) {
99
113
  const w = 2 * Math.PI / waveLength;
100
114
  const a = new ComplexArray(tableLength);
@@ -125,7 +139,7 @@ function swapReIm(a) {
125
139
  export function fftReal(x) {
126
140
  return fft(new ComplexArray(x));
127
141
  }
128
- export function fftRealHalf(x) {
142
+ export function fftRealHalf(x, inclNyquist = false) {
129
143
  if (x.length <= 1) {
130
144
  return new ComplexArray(x);
131
145
  }
@@ -140,12 +154,16 @@ export function fftRealHalf(x) {
140
154
  a1.im[i] = x[2 * i + 1];
141
155
  }
142
156
  const a2 = fft(a1);
143
- const a3 = new ComplexArray(n);
144
- const w = Math.PI / n;
157
+ const a3 = new ComplexArray(n + (inclNyquist ? 1 : 0));
145
158
  a3.re[0] = a2.re[0] + a2.im[0];
146
159
  a3.im[0] = 0;
160
+ if (inclNyquist) {
161
+ a3.re[n] = a2.re[0] - a2.im[0];
162
+ a3.im[n] = 0;
163
+ }
147
164
  const temp1 = new MutableComplex();
148
165
  const temp2 = new MutableComplex();
166
+ const w = Math.PI / n;
149
167
  for (let i = 1; i < n; i++) {
150
168
  const sRe = Math.sin(i * w);
151
169
  const sIm = Math.cos(i * w);
@@ -162,8 +180,8 @@ export function fftRealSpectrum(x, inclNyquist = false) {
162
180
  throw new Error("Input array must not be empty.");
163
181
  }
164
182
  let a;
165
- if (n % 2 == 0 && !inclNyquist) {
166
- a = fftRealHalf(x);
183
+ if (n % 2 == 0) {
184
+ a = fftRealHalf(x, inclNyquist);
167
185
  }
168
186
  else {
169
187
  const a0 = fftReal(x);
@@ -184,4 +202,75 @@ export function fftShift(x) {
184
202
  }
185
203
  return a;
186
204
  }
205
+ export function iFftRealHalfSimple(x, len, inclNyquist = false) {
206
+ if (x.length == 0 || len <= 0) {
207
+ return new Float64Array(0);
208
+ }
209
+ const x2 = createFullSpectrumFromHalfSpectrum(x, len, inclNyquist);
210
+ const a = fft(x2, false);
211
+ return a.re;
212
+ }
213
+ function createFullSpectrumFromHalfSpectrum(x, len, inclNyquist) {
214
+ const x2 = new ComplexArray(len);
215
+ ComplexArray.copy1(x, 0, x2, 0);
216
+ if (inclNyquist && len % 2 == 0 && x.length > len / 2) {
217
+ ComplexArray.copy1(x, len / 2, x2, len / 2);
218
+ }
219
+ const n2 = Math.min(x.length - 1, Math.floor((len - 1) / 2));
220
+ for (let i = 0; i < n2; i++) {
221
+ const p1 = 1 + i;
222
+ const p2 = len - 1 - i;
223
+ x2.re[p2] = x.re[p1];
224
+ x2.im[p2] = -x.im[p1];
225
+ }
226
+ return x2;
227
+ }
228
+ export function iFftRealHalfOpt(x, len, inclNyquist = false) {
229
+ if (len <= 0) {
230
+ return new Float64Array(0);
231
+ }
232
+ if (len % 2 != 0) {
233
+ throw new Error("output length is not even.");
234
+ }
235
+ const n = len / 2;
236
+ const a1 = new ComplexArray(n);
237
+ a1.re[0] = xRe(0);
238
+ a1.im[0] = xRe(0);
239
+ if (inclNyquist) {
240
+ a1.re[0] += xRe(n);
241
+ a1.im[0] -= xRe(n);
242
+ }
243
+ const temp1 = new MutableComplex();
244
+ const temp2 = new MutableComplex();
245
+ const w = Math.PI / n;
246
+ for (let i = 1; i < n; i++) {
247
+ const sRe = Math.sin(i * w);
248
+ const sIm = Math.cos(i * w);
249
+ temp1.setMul(xRe(i), xIm(i), (1 - sRe) / 2, sIm / 2);
250
+ temp2.setMul(xRe(n - i), xIm(n - i), (1 + sRe) / 2, sIm / 2);
251
+ a1.re[i] = temp1.re + temp2.re;
252
+ a1.im[i] = temp1.im - temp2.im;
253
+ }
254
+ const a2 = fft(a1, false);
255
+ const a3 = new Float64Array(2 * n);
256
+ for (let i = 0; i < n; i++) {
257
+ a3[2 * i] = a2.re[i];
258
+ a3[2 * i + 1] = a2.im[i];
259
+ }
260
+ return a3;
261
+ function xRe(i) {
262
+ return (i < x.length) ? x.re[i] : 0;
263
+ }
264
+ function xIm(i) {
265
+ return (i < x.length) ? x.im[i] : 0;
266
+ }
267
+ }
268
+ export function iFftRealHalf(x, len, inclNyquist = false) {
269
+ if (len % 2 == 0) {
270
+ return iFftRealHalfOpt(x, len, inclNyquist);
271
+ }
272
+ else {
273
+ return iFftRealHalfSimple(x, len, inclNyquist);
274
+ }
275
+ }
187
276
  //# sourceMappingURL=Fft.js.map