dsp-collection 0.2.5 → 0.2.7

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 (86) hide show
  1. package/README.md +6 -2
  2. package/filter/FirFilterWin.d.ts +8 -0
  3. package/filter/FirFilterWin.d.ts.map +1 -0
  4. package/filter/FirFilterWin.js +55 -0
  5. package/filter/FirFilterWin.js.map +1 -0
  6. package/filter/SpecFilt.d.ts +11 -10
  7. package/filter/SpecFilt.d.ts.map +1 -0
  8. package/filter/SpecFilt.js +98 -98
  9. package/filter/SpecFilt.js.map +1 -1
  10. package/math/Complex.d.ts +43 -42
  11. package/math/Complex.d.ts.map +1 -0
  12. package/math/Complex.js +130 -129
  13. package/math/Complex.js.map +1 -1
  14. package/math/ComplexArray.d.ts +37 -36
  15. package/math/ComplexArray.d.ts.map +1 -0
  16. package/math/ComplexArray.js +170 -170
  17. package/math/ComplexArray.js.map +1 -1
  18. package/math/MathUtils.d.ts +10 -7
  19. package/math/MathUtils.d.ts.map +1 -0
  20. package/math/MathUtils.js +116 -81
  21. package/math/MathUtils.js.map +1 -1
  22. package/math/MutableComplex.d.ts +24 -22
  23. package/math/MutableComplex.d.ts.map +1 -0
  24. package/math/MutableComplex.js +68 -64
  25. package/math/MutableComplex.js.map +1 -1
  26. package/math/NumApprox.d.ts +4 -3
  27. package/math/NumApprox.d.ts.map +1 -0
  28. package/math/NumApprox.js +67 -67
  29. package/math/NumApprox.js.map +1 -1
  30. package/math/PolyReal.d.ts +14 -13
  31. package/math/PolyReal.d.ts.map +1 -0
  32. package/math/PolyReal.js +226 -226
  33. package/math/PolyReal.js.map +1 -1
  34. package/package.json +11 -3
  35. package/signal/AdaptiveStft.d.ts +13 -12
  36. package/signal/AdaptiveStft.d.ts.map +1 -0
  37. package/signal/AdaptiveStft.js +57 -57
  38. package/signal/AdaptiveStft.js.map +1 -1
  39. package/signal/Autocorrelation.d.ts +6 -5
  40. package/signal/Autocorrelation.d.ts.map +1 -0
  41. package/signal/Autocorrelation.js +53 -53
  42. package/signal/Autocorrelation.js.map +1 -1
  43. package/signal/Dft.d.ts +10 -9
  44. package/signal/Dft.d.ts.map +1 -0
  45. package/signal/Dft.js +87 -87
  46. package/signal/Dft.js.map +1 -1
  47. package/signal/EnvelopeDetection.d.ts +2 -1
  48. package/signal/EnvelopeDetection.d.ts.map +1 -0
  49. package/signal/EnvelopeDetection.js +9 -9
  50. package/signal/EnvelopeDetection.js.map +1 -1
  51. package/signal/Fft.d.ts +10 -9
  52. package/signal/Fft.d.ts.map +1 -0
  53. package/signal/Fft.js +275 -275
  54. package/signal/Fft.js.map +1 -1
  55. package/signal/Goertzel.d.ts +6 -5
  56. package/signal/Goertzel.d.ts.map +1 -0
  57. package/signal/Goertzel.js +48 -48
  58. package/signal/Goertzel.js.map +1 -1
  59. package/signal/InstFreq.d.ts +9 -8
  60. package/signal/InstFreq.d.ts.map +1 -0
  61. package/signal/InstFreq.js +26 -26
  62. package/signal/InstFreq.js.map +1 -1
  63. package/signal/PitchDetectionHarm.d.ts +27 -26
  64. package/signal/PitchDetectionHarm.d.ts.map +1 -0
  65. package/signal/PitchDetectionHarm.js +72 -68
  66. package/signal/PitchDetectionHarm.js.map +1 -1
  67. package/signal/Resampling.d.ts +8 -7
  68. package/signal/Resampling.d.ts.map +1 -0
  69. package/signal/Resampling.js +218 -218
  70. package/signal/Resampling.js.map +1 -1
  71. package/signal/WindowFunctions.d.ts +42 -40
  72. package/signal/WindowFunctions.d.ts.map +1 -0
  73. package/signal/WindowFunctions.js +194 -194
  74. package/signal/WindowFunctions.js.map +1 -1
  75. package/utils/ArrayUtils.d.ts +10 -9
  76. package/utils/ArrayUtils.d.ts.map +1 -0
  77. package/utils/ArrayUtils.js +68 -68
  78. package/utils/ArrayUtils.js.map +1 -1
  79. package/utils/DspUtils.d.ts +5 -2
  80. package/utils/DspUtils.d.ts.map +1 -0
  81. package/utils/DspUtils.js +12 -6
  82. package/utils/DspUtils.js.map +1 -1
  83. package/utils/MiscUtils.d.ts +7 -6
  84. package/utils/MiscUtils.d.ts.map +1 -0
  85. package/utils/MiscUtils.js +20 -20
  86. package/utils/MiscUtils.js.map +1 -1
@@ -1,49 +1,49 @@
1
- import Complex from "../math/Complex.js";
2
- import MutableComplex from "../math/MutableComplex.js";
3
- import ComplexArray from "../math/ComplexArray.js";
4
- export function goertzelSingle(x, relativeFrequency) {
5
- const n = x.length;
6
- if (n == 0) {
7
- throw new Error("Input array must not be empty.");
8
- }
9
- const w = 2 * Math.PI / n * relativeFrequency;
10
- const c = Complex.expj(w);
11
- const cr2 = c.re * 2;
12
- let s1 = 0;
13
- let s2 = 0;
14
- for (let p = 0; p < n; p++) {
15
- const s0 = x[p] + cr2 * s1 - s2;
16
- s2 = s1;
17
- s1 = s0;
18
- }
19
- return new MutableComplex(c.re * s1 - s2, c.im * s1);
20
- }
21
- export function goertzel(x) {
22
- const n = x.length;
23
- const a = new ComplexArray(n);
24
- for (let frequency = 0; frequency < n; frequency++) {
25
- const c = goertzelSingle(x, frequency);
26
- a.set(frequency, c);
27
- }
28
- return a;
29
- }
30
- export function goertzelSpectrum(x, inclNyquist = false) {
31
- const n = x.length;
32
- if (n == 0) {
33
- throw new Error("Input array must not be empty.");
34
- }
35
- const m = (n % 2 == 0 && inclNyquist) ? n / 2 + 1 : Math.ceil(n / 2);
36
- const a = new ComplexArray(m);
37
- for (let frequency = 0; frequency < m; frequency++) {
38
- const c = goertzelSingle(x, frequency);
39
- if (frequency == 0 || frequency == n / 2) {
40
- c.divByReal(n);
41
- }
42
- else {
43
- c.mulByReal(2 / n);
44
- }
45
- a.set(frequency, c);
46
- }
47
- return a;
48
- }
1
+ import Complex from "../math/Complex.js";
2
+ import MutableComplex from "../math/MutableComplex.js";
3
+ import ComplexArray from "../math/ComplexArray.js";
4
+ export function goertzelSingle(x, relativeFrequency) {
5
+ const n = x.length;
6
+ if (n == 0) {
7
+ throw new Error("Input array must not be empty.");
8
+ }
9
+ const w = 2 * Math.PI / n * relativeFrequency;
10
+ const c = Complex.expj(w);
11
+ const cr2 = c.re * 2;
12
+ let s1 = 0;
13
+ let s2 = 0;
14
+ for (let p = 0; p < n; p++) {
15
+ const s0 = x[p] + cr2 * s1 - s2;
16
+ s2 = s1;
17
+ s1 = s0;
18
+ }
19
+ return new MutableComplex(c.re * s1 - s2, c.im * s1);
20
+ }
21
+ export function goertzel(x) {
22
+ const n = x.length;
23
+ const a = new ComplexArray(n);
24
+ for (let frequency = 0; frequency < n; frequency++) {
25
+ const c = goertzelSingle(x, frequency);
26
+ a.set(frequency, c);
27
+ }
28
+ return a;
29
+ }
30
+ export function goertzelSpectrum(x, inclNyquist = false) {
31
+ const n = x.length;
32
+ if (n == 0) {
33
+ throw new Error("Input array must not be empty.");
34
+ }
35
+ const m = (n % 2 == 0 && inclNyquist) ? n / 2 + 1 : Math.ceil(n / 2);
36
+ const a = new ComplexArray(m);
37
+ for (let frequency = 0; frequency < m; frequency++) {
38
+ const c = goertzelSingle(x, frequency);
39
+ if (frequency == 0 || frequency == n / 2) {
40
+ c.divByReal(n);
41
+ }
42
+ else {
43
+ c.mulByReal(2 / n);
44
+ }
45
+ a.set(frequency, c);
46
+ }
47
+ return a;
48
+ }
49
49
  //# sourceMappingURL=Goertzel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Goertzel.js","sourceRoot":"","sources":["../../src/signal/Goertzel.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAiBnD,MAAM,UAAU,cAAc,CAAE,CAAoB,EAAE,iBAAyB;IAC5E,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,CAAC,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;KAAE;IACvD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC;IAC9C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;QAChC,EAAE,GAAG,EAAE,CAAC;QACR,EAAE,GAAG,EAAE,CAAC;KAAE;IACb,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAAC,CAAC;AAW1D,MAAM,UAAU,QAAQ,CAAE,CAAoB;IAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;QACjD,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;KAAE;IACzB,OAAO,CAAC,CAAC;AAAC,CAAC;AAkBd,MAAM,UAAU,gBAAgB,CAAE,CAAoB,EAAE,WAAW,GAAG,KAAK;IACxE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,CAAC,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;KAAE;IACvD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;QACjD,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACvC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE;YACvC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAAE;aACd;YACH,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAAE;QACxB,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;KAAE;IACzB,OAAO,CAAC,CAAC;AAAC,CAAC"}
1
+ {"version":3,"file":"Goertzel.js","sourceRoot":"","sources":["../../src/signal/Goertzel.ts"],"names":[],"mappings":"AAIA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,cAAc,MAAM,2BAA2B,CAAC;AACvD,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAiBnD,MAAM,UAAU,cAAc,CAAE,CAAoB,EAAE,iBAAyB;IAC5E,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC;IAC9C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;QAChC,EAAE,GAAG,EAAE,CAAC;QACR,EAAE,GAAG,EAAE,CAAC;IAAC,CAAC;IACb,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAAC,CAAC;AAW1D,MAAM,UAAU,QAAQ,CAAE,CAAoB;IAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QAClD,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAAC,CAAC;IACzB,OAAO,CAAC,CAAC;AAAC,CAAC;AAkBd,MAAM,UAAU,gBAAgB,CAAE,CAAoB,EAAE,WAAW,GAAG,KAAK;IACxE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAAC,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QAClD,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACvC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;aACd,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,CAAC;QACxB,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAAC,CAAC;IACzB,OAAO,CAAC,CAAC;AAAC,CAAC"}
@@ -1,8 +1,9 @@
1
- import * as WindowFunctions from "./WindowFunctions.js";
2
- export interface InstFreqSingleResult {
3
- instFrequency: number;
4
- measuringFrequency: number;
5
- amplitude: number;
6
- }
7
- export declare function instFreqSingle_relWindow(samples: Float64Array | Float32Array, position: number, roughtMeasuringFrequency: number, shiftFactor: number, relWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): InstFreqSingleResult | undefined;
8
- export declare function instFreqSingle_maxWindow(samples: Float64Array | Float32Array, position: number, roughtMeasuringFrequency: number, shiftFactor: number, maxWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): InstFreqSingleResult | undefined;
1
+ import * as WindowFunctions from "./WindowFunctions.ts";
2
+ export interface InstFreqSingleResult {
3
+ instFrequency: number;
4
+ measuringFrequency: number;
5
+ amplitude: number;
6
+ }
7
+ export declare function instFreqSingle_relWindow(samples: Float64Array | Float32Array, position: number, roughtMeasuringFrequency: number, shiftFactor: number, relWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): InstFreqSingleResult | undefined;
8
+ export declare function instFreqSingle_maxWindow(samples: Float64Array | Float32Array, position: number, roughtMeasuringFrequency: number, shiftFactor: number, maxWindowWidth: number, windowFunction: WindowFunctions.WindowFunction | undefined): InstFreqSingleResult | undefined;
9
+ //# sourceMappingURL=InstFreq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstFreq.d.ts","sourceRoot":"","sources":["../../src/signal/InstFreq.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AAGxD,MAAM,WAAW,oBAAoB;IAClC,aAAa,EAAa,MAAM,CAAC;IACjC,kBAAkB,EAAQ,MAAM,CAAC;IACjC,SAAS,EAAiB,MAAM,CAAC;CAAE;AA2BtC,wBAAgB,wBAAwB,CAAE,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACjJ,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC,cAAc,GAAG,SAAS,GAAI,oBAAoB,GAAG,SAAS,CAiBjE;AA0B3D,wBAAgB,wBAAwB,CAAE,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EACjJ,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC,cAAc,GAAG,SAAS,GAAI,oBAAoB,GAAG,SAAS,CAEG"}
@@ -1,27 +1,27 @@
1
- import * as AdaptiveStft from "./AdaptiveStft.js";
2
- export function instFreqSingle_relWindow(samples, position, roughtMeasuringFrequency, shiftFactor, relWindowWidth, windowFunction) {
3
- const shiftDistance = Math.max(1, shiftFactor / roughtMeasuringFrequency);
4
- const pos1 = position - shiftDistance / 2;
5
- const pos2 = position + shiftDistance / 2;
6
- const r1 = AdaptiveStft.getSingle_relWindow(samples, roughtMeasuringFrequency, pos1, relWindowWidth, windowFunction);
7
- const r2 = AdaptiveStft.getSingle_relWindow(samples, roughtMeasuringFrequency, pos2, relWindowWidth, windowFunction);
8
- if (!r1 || !r2) {
9
- return;
10
- }
11
- if (r1.frequency != r2.frequency || r1.windowStartPosition >= r2.windowStartPosition || r1.windowWidth != r2.windowWidth) {
12
- throw new Error();
13
- }
14
- const measuringFrequency = r1.frequency;
15
- const realShiftDistance = r2.windowStartPosition - r1.windowStartPosition;
16
- const phase1 = r1.component.arg();
17
- const phase2 = r2.component.arg();
18
- const phaseDelta = (phase2 + 2 * Math.PI - phase1) % (2 * Math.PI);
19
- const instFrequency = phaseDelta / (2 * Math.PI) / realShiftDistance;
20
- const amplitude = (r1.component.abs() + r2.component.abs()) / 2;
21
- return { instFrequency, measuringFrequency, amplitude };
22
- }
23
- export function instFreqSingle_maxWindow(samples, position, roughtMeasuringFrequency, shiftFactor, maxWindowWidth, windowFunction) {
24
- const relWindowWidth = Math.floor(maxWindowWidth * roughtMeasuringFrequency);
25
- return instFreqSingle_relWindow(samples, position, roughtMeasuringFrequency, shiftFactor, relWindowWidth, windowFunction);
26
- }
1
+ import * as AdaptiveStft from "./AdaptiveStft.js";
2
+ export function instFreqSingle_relWindow(samples, position, roughtMeasuringFrequency, shiftFactor, relWindowWidth, windowFunction) {
3
+ const shiftDistance = Math.max(1, shiftFactor / roughtMeasuringFrequency);
4
+ const pos1 = position - shiftDistance / 2;
5
+ const pos2 = position + shiftDistance / 2;
6
+ const r1 = AdaptiveStft.getSingle_relWindow(samples, roughtMeasuringFrequency, pos1, relWindowWidth, windowFunction);
7
+ const r2 = AdaptiveStft.getSingle_relWindow(samples, roughtMeasuringFrequency, pos2, relWindowWidth, windowFunction);
8
+ if (!r1 || !r2) {
9
+ return;
10
+ }
11
+ if (r1.frequency != r2.frequency || r1.windowStartPosition >= r2.windowStartPosition || r1.windowWidth != r2.windowWidth) {
12
+ throw new Error();
13
+ }
14
+ const measuringFrequency = r1.frequency;
15
+ const realShiftDistance = r2.windowStartPosition - r1.windowStartPosition;
16
+ const phase1 = r1.component.arg();
17
+ const phase2 = r2.component.arg();
18
+ const phaseDelta = (phase2 + 2 * Math.PI - phase1) % (2 * Math.PI);
19
+ const instFrequency = phaseDelta / (2 * Math.PI) / realShiftDistance;
20
+ const amplitude = (r1.component.abs() + r2.component.abs()) / 2;
21
+ return { instFrequency, measuringFrequency, amplitude };
22
+ }
23
+ export function instFreqSingle_maxWindow(samples, position, roughtMeasuringFrequency, shiftFactor, maxWindowWidth, windowFunction) {
24
+ const relWindowWidth = Math.floor(maxWindowWidth * roughtMeasuringFrequency);
25
+ return instFreqSingle_relWindow(samples, position, roughtMeasuringFrequency, shiftFactor, relWindowWidth, windowFunction);
26
+ }
27
27
  //# sourceMappingURL=InstFreq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InstFreq.js","sourceRoot":"","sources":["../../src/signal/InstFreq.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAgClD,MAAM,UAAU,wBAAwB,CAAE,OAAoC,EAAE,QAAgB,EAAE,wBAAgC,EAAE,WAAmB,EACjJ,cAAsB,EAAE,cAA0D;IACrF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,wBAAwB,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,QAAQ,GAAG,aAAa,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,GAAG,aAAa,GAAG,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACrH,MAAM,EAAE,GAAG,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACrH,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;QACb,OAAO;KAAE;IACZ,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,EAAE;QACvH,MAAM,IAAI,KAAK,EAAE,CAAC;KAAE;IACvB,MAAM,kBAAkB,GAAG,EAAE,CAAC,SAAS,CAAC;IACxC,MAAM,iBAAiB,GAAG,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,mBAAmB,CAAC;IAC1E,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC;IACrE,MAAM,SAAS,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAAC,CAAC;AAAC,CAAC;AA0B3D,MAAM,UAAU,wBAAwB,CAAE,OAAoC,EAAE,QAAgB,EAAE,wBAAgC,EAAE,WAAmB,EACjJ,cAAsB,EAAE,cAA0D;IACrF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,wBAAwB,CAAC,CAAC;IAC7E,OAAO,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAAC,CAAC"}
1
+ {"version":3,"file":"InstFreq.js","sourceRoot":"","sources":["../../src/signal/InstFreq.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAgClD,MAAM,UAAU,wBAAwB,CAAE,OAAoC,EAAE,QAAgB,EAAE,wBAAgC,EAAE,WAAmB,EACjJ,cAAsB,EAAE,cAA0D;IACrF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,wBAAwB,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,QAAQ,GAAG,aAAa,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,GAAG,aAAa,GAAG,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACrH,MAAM,EAAE,GAAG,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACrH,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACd,OAAO;IAAC,CAAC;IACZ,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxH,MAAM,IAAI,KAAK,EAAE,CAAC;IAAC,CAAC;IACvB,MAAM,kBAAkB,GAAG,EAAE,CAAC,SAAS,CAAC;IACxC,MAAM,iBAAiB,GAAG,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,mBAAmB,CAAC;IAC1E,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC;IACrE,MAAM,SAAS,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAE,SAAS,EAAC,CAAC;AAAC,CAAC;AA0B3D,MAAM,UAAU,wBAAwB,CAAE,OAAoC,EAAE,QAAgB,EAAE,wBAAgC,EAAE,WAAmB,EACjJ,cAAsB,EAAE,cAA0D;IACrF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,wBAAwB,CAAC,CAAC;IAC7E,OAAO,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAAC,CAAC"}
@@ -1,26 +1,27 @@
1
- import * as WindowFunctions from "./WindowFunctions.js";
2
- export interface HarmonicAmplitudeEvaluationParms {
3
- amplitudeCompressionExponent: number;
4
- harmonicsDeclineRate: number;
5
- harmonicsDeclineExponent: number;
6
- }
7
- export interface HarmonicSumParms extends HarmonicAmplitudeEvaluationParms {
8
- fCutoff: number;
9
- relWindowWidth: number;
10
- windowFunction: WindowFunctions.WindowFunction | undefined;
11
- }
12
- export interface HarmonicInstSumParms extends HarmonicSumParms {
13
- shiftFactor: number;
14
- peakWidthFactor: number;
15
- }
16
- export declare function getDefaultHarmonicSumParms(): HarmonicSumParms;
17
- export declare function getDefaultHarmonicInstSumParms(): HarmonicInstSumParms;
18
- export declare function harmonicSum(samples: Float64Array | Float32Array, sampleRate: number, position: number, f0: number, parms?: HarmonicSumParms): number;
19
- export declare function harmonicInstSum(samples: Float64Array | Float32Array, sampleRate: number, position: number, f0: number, parms?: HarmonicInstSumParms): number;
20
- export declare function evaluateHarmonicAmplitude(amplitude: number, harmonic: number, parms: HarmonicAmplitudeEvaluationParms): number;
21
- export declare function findPitchSalienceFunctionArgMax(salienceFunction: (f0: number) => number, f0Min: number, f0Max: number, { scanFactor, relTolerance, absTolerance }?: {
22
- scanFactor?: number | undefined;
23
- relTolerance?: number | undefined;
24
- absTolerance?: number | undefined;
25
- }): number;
26
- export declare function estimatePitch_harmonicSum(samples: Float64Array | Float32Array, sampleRate: number, position: number, f0Min?: number, f0Max?: number, parms?: HarmonicSumParms): number;
1
+ import * as WindowFunctions from "./WindowFunctions.ts";
2
+ export interface HarmonicAmplitudeEvaluationParms {
3
+ amplitudeCompressionExponent: number;
4
+ harmonicsDeclineRate: number;
5
+ harmonicsDeclineExponent: number;
6
+ }
7
+ export interface HarmonicSumParms extends HarmonicAmplitudeEvaluationParms {
8
+ fCutoff: number;
9
+ relWindowWidth: number;
10
+ windowFunction: WindowFunctions.WindowFunction | undefined;
11
+ }
12
+ export interface HarmonicInstSumParms extends HarmonicSumParms {
13
+ shiftFactor: number;
14
+ peakWidthFactor: number;
15
+ }
16
+ export declare function getDefaultHarmonicSumParms(): HarmonicSumParms;
17
+ export declare function getDefaultHarmonicInstSumParms(): HarmonicInstSumParms;
18
+ export declare function harmonicSum(samples: Float64Array | Float32Array, sampleRate: number, position: number, f0: number, parms?: HarmonicSumParms): number;
19
+ export declare function harmonicInstSum(samples: Float64Array | Float32Array, sampleRate: number, position: number, f0: number, parms?: HarmonicInstSumParms): number;
20
+ export declare function evaluateHarmonicAmplitude(amplitude: number, harmonic: number, parms: HarmonicAmplitudeEvaluationParms): number;
21
+ export declare function findPitchSalienceFunctionArgMax(salienceFunction: (f0: number) => number, f0Min: number, f0Max: number, { scanFactor, relTolerance, absTolerance }?: {
22
+ scanFactor?: number | undefined;
23
+ relTolerance?: number | undefined;
24
+ absTolerance?: number | undefined;
25
+ }): number;
26
+ export declare function estimatePitch_harmonicSum(samples: Float64Array | Float32Array, sampleRate: number, position: number, f0Min?: number, f0Max?: number, parms?: HarmonicSumParms): number;
27
+ //# sourceMappingURL=PitchDetectionHarm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PitchDetectionHarm.d.ts","sourceRoot":"","sources":["../../src/signal/PitchDetectionHarm.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAC;AAOxD,MAAM,WAAW,gCAAgC;IAK9C,4BAA4B,EAAQ,MAAM,CAAC;IAM3C,oBAAoB,EAAgB,MAAM,CAAC;IAS3C,wBAAwB,EAAY,MAAM,CAAC;CAAE;AAKhD,MAAM,WAAW,gBAAiB,SAAQ,gCAAgC;IAMvE,OAAO,EAA6B,MAAM,CAAC;IAM3C,cAAc,EAAsB,MAAM,CAAC;IAK3C,cAAc,EAAsB,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC;CAAE;AAKpF,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAM3D,WAAW,EAAyB,MAAM,CAAC;IAO3C,eAAe,EAAqB,MAAM,CAAC;CAAE;AAKhD,wBAAgB,0BAA0B,IAAK,gBAAgB,CAO8C;AAK7G,wBAAgB,8BAA8B,IAAK,oBAAoB,CAIxB;AA4B/C,wBAAgB,WAAW,CAAE,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAC7G,KAAK,mBAA+B,GAAI,MAAM,CAKH;AA8BjD,wBAAgB,eAAe,CAAE,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EACjH,KAAK,uBAAmC,GAAI,MAAM,CAapB;AAcpC,wBAAgB,yBAAyB,CAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,gCAAgC,GAAI,MAAM,CAEvD;AAwB1E,wBAAgB,+BAA+B,CAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EACjH,EAAC,UAAkB,EAAE,YAAmB,EAAE,YAAmB,EAAC;;;;CAAK,GAAI,MAAM,CAOO;AAsB1F,wBAAgB,yBAAyB,CAAE,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,KAAK,GAAE,MAAY,EACxJ,KAAK,mBAA+B,GAAI,MAAM,CAEwB"}
@@ -1,69 +1,73 @@
1
- import * as MathUtils from "../math/MathUtils.js";
2
- import * as NumApprox from "../math/NumApprox.js";
3
- import * as WindowFunctions from "./WindowFunctions.js";
4
- import * as AdaptiveStft from "./AdaptiveStft.js";
5
- import * as InstFreq from "./InstFreq.js";
6
- export function getDefaultHarmonicSumParms() {
7
- return {
8
- amplitudeCompressionExponent: 0.5,
9
- harmonicsDeclineRate: 0.2,
10
- harmonicsDeclineExponent: 0,
11
- fCutoff: 5000,
12
- relWindowWidth: 16,
13
- windowFunction: WindowFunctions.getFunctionbyId("hann", { tableCacheCostLimit: 1 })
14
- };
15
- }
16
- export function getDefaultHarmonicInstSumParms() {
17
- return Object.assign(Object.assign({}, getDefaultHarmonicSumParms()), { shiftFactor: 0.25, peakWidthFactor: 0.2 });
18
- }
19
- export function harmonicSum(samples, sampleRate, position, f0, parms = getDefaultHarmonicSumParms()) {
20
- const n = Math.floor(parms.fCutoff / f0);
21
- const a = AdaptiveStft.getHarmonicAmplitudes(samples, position * sampleRate, f0 / sampleRate, n, parms.relWindowWidth, parms.windowFunction);
22
- if (!a) {
23
- return NaN;
24
- }
25
- return evaluateHarmonicAmplitudes(a, parms);
26
- }
27
- export function harmonicInstSum(samples, sampleRate, position, f0, parms = getDefaultHarmonicInstSumParms()) {
28
- const peakWidth = f0 * parms.peakWidthFactor / sampleRate;
29
- const n = Math.floor(parms.fCutoff / f0);
30
- let sum = 0;
31
- let count = 0;
32
- for (let harmonic = 1; harmonic <= n; harmonic++) {
33
- const f = harmonic * f0 / sampleRate;
34
- const r = InstFreq.instFreqSingle_relWindow(samples, position * sampleRate, f, parms.shiftFactor, parms.relWindowWidth * harmonic, parms.windowFunction);
35
- if (r) {
36
- const absDelta = Math.abs(r.measuringFrequency - r.instFrequency);
37
- const a = r.amplitude * Math.max(0, 1 - (2 * absDelta) / peakWidth);
38
- sum += evaluateHarmonicAmplitude(a, harmonic, parms);
39
- count++;
40
- }
41
- }
42
- return (count > 0) ? sum : NaN;
43
- }
44
- export function evaluateHarmonicAmplitude(amplitude, harmonic, parms) {
45
- const attenuation = MathUtils.hyperbolicDecline(harmonic - 1, parms.harmonicsDeclineRate, parms.harmonicsDeclineExponent);
46
- return amplitude ** parms.amplitudeCompressionExponent * attenuation;
47
- }
48
- function evaluateHarmonicAmplitudes(amplitudes, parms) {
49
- let sum = 0;
50
- for (let harmonic = 1; harmonic <= amplitudes.length; harmonic++) {
51
- sum += evaluateHarmonicAmplitude(amplitudes[harmonic - 1], harmonic, parms);
52
- }
53
- return sum;
54
- }
55
- export function findPitchSalienceFunctionArgMax(salienceFunction, f0Min, f0Max, { scanFactor = 1.005, relTolerance = 1E-3, absTolerance = 0.05 } = {}) {
56
- const f1 = NumApprox.argMax_scanGeom(salienceFunction, f0Min, f0Max, scanFactor);
57
- if (!isFinite(f1)) {
58
- return NaN;
59
- }
60
- const f1Lo = Math.max(f1 / scanFactor, f0Min);
61
- const f1Hi = Math.min(f1 * scanFactor, f0Max);
62
- const tolerance = Math.min(f1 * relTolerance, absTolerance);
63
- return NumApprox.argMax_goldenSectionSearch(salienceFunction, f1Lo, f1Hi, tolerance);
64
- }
65
- export function estimatePitch_harmonicSum(samples, sampleRate, position, f0Min = 75, f0Max = 900, parms = getDefaultHarmonicSumParms()) {
66
- const salienceFunction = (f0) => harmonicSum(samples, sampleRate, position, f0, parms);
67
- return findPitchSalienceFunctionArgMax(salienceFunction, f0Min, f0Max);
68
- }
1
+ import * as MathUtils from "../math/MathUtils.js";
2
+ import * as NumApprox from "../math/NumApprox.js";
3
+ import * as WindowFunctions from "./WindowFunctions.js";
4
+ import * as AdaptiveStft from "./AdaptiveStft.js";
5
+ import * as InstFreq from "./InstFreq.js";
6
+ export function getDefaultHarmonicSumParms() {
7
+ return {
8
+ amplitudeCompressionExponent: 0.5,
9
+ harmonicsDeclineRate: 0.2,
10
+ harmonicsDeclineExponent: 0,
11
+ fCutoff: 5000,
12
+ relWindowWidth: 16,
13
+ windowFunction: WindowFunctions.getFunctionbyId("hann", { tableCacheCostLimit: 1 })
14
+ };
15
+ }
16
+ export function getDefaultHarmonicInstSumParms() {
17
+ return {
18
+ ...getDefaultHarmonicSumParms(),
19
+ shiftFactor: 0.25,
20
+ peakWidthFactor: 0.2
21
+ };
22
+ }
23
+ export function harmonicSum(samples, sampleRate, position, f0, parms = getDefaultHarmonicSumParms()) {
24
+ const n = Math.floor(parms.fCutoff / f0);
25
+ const a = AdaptiveStft.getHarmonicAmplitudes(samples, position * sampleRate, f0 / sampleRate, n, parms.relWindowWidth, parms.windowFunction);
26
+ if (!a) {
27
+ return NaN;
28
+ }
29
+ return evaluateHarmonicAmplitudes(a, parms);
30
+ }
31
+ export function harmonicInstSum(samples, sampleRate, position, f0, parms = getDefaultHarmonicInstSumParms()) {
32
+ const peakWidth = f0 * parms.peakWidthFactor / sampleRate;
33
+ const n = Math.floor(parms.fCutoff / f0);
34
+ let sum = 0;
35
+ let count = 0;
36
+ for (let harmonic = 1; harmonic <= n; harmonic++) {
37
+ const f = harmonic * f0 / sampleRate;
38
+ const r = InstFreq.instFreqSingle_relWindow(samples, position * sampleRate, f, parms.shiftFactor, parms.relWindowWidth * harmonic, parms.windowFunction);
39
+ if (r) {
40
+ const absDelta = Math.abs(r.measuringFrequency - r.instFrequency);
41
+ const a = r.amplitude * Math.max(0, 1 - (2 * absDelta) / peakWidth);
42
+ sum += evaluateHarmonicAmplitude(a, harmonic, parms);
43
+ count++;
44
+ }
45
+ }
46
+ return (count > 0) ? sum : NaN;
47
+ }
48
+ export function evaluateHarmonicAmplitude(amplitude, harmonic, parms) {
49
+ const attenuation = MathUtils.hyperbolicDecline(harmonic - 1, parms.harmonicsDeclineRate, parms.harmonicsDeclineExponent);
50
+ return amplitude ** parms.amplitudeCompressionExponent * attenuation;
51
+ }
52
+ function evaluateHarmonicAmplitudes(amplitudes, parms) {
53
+ let sum = 0;
54
+ for (let harmonic = 1; harmonic <= amplitudes.length; harmonic++) {
55
+ sum += evaluateHarmonicAmplitude(amplitudes[harmonic - 1], harmonic, parms);
56
+ }
57
+ return sum;
58
+ }
59
+ export function findPitchSalienceFunctionArgMax(salienceFunction, f0Min, f0Max, { scanFactor = 1.005, relTolerance = 1E-3, absTolerance = 0.05 } = {}) {
60
+ const f1 = NumApprox.argMax_scanGeom(salienceFunction, f0Min, f0Max, scanFactor);
61
+ if (!isFinite(f1)) {
62
+ return NaN;
63
+ }
64
+ const f1Lo = Math.max(f1 / scanFactor, f0Min);
65
+ const f1Hi = Math.min(f1 * scanFactor, f0Max);
66
+ const tolerance = Math.min(f1 * relTolerance, absTolerance);
67
+ return NumApprox.argMax_goldenSectionSearch(salienceFunction, f1Lo, f1Hi, tolerance);
68
+ }
69
+ export function estimatePitch_harmonicSum(samples, sampleRate, position, f0Min = 75, f0Max = 900, parms = getDefaultHarmonicSumParms()) {
70
+ const salienceFunction = (f0) => harmonicSum(samples, sampleRate, position, f0, parms);
71
+ return findPitchSalienceFunctionArgMax(salienceFunction, f0Min, f0Max);
72
+ }
69
73
  //# sourceMappingURL=PitchDetectionHarm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PitchDetectionHarm.js","sourceRoot":"","sources":["../../src/signal/PitchDetectionHarm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PitchDetectionHarm.js","sourceRoot":"","sources":["../../src/signal/PitchDetectionHarm.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { MutableArrayLike } from "../utils/MiscUtils.js";
2
- export declare function resampleNearestNeighbor(ia: ArrayLike<number>, oa: MutableArrayLike<number>, preserveScale?: boolean, extraValues?: number): void;
3
- export declare function resampleNearestNeighborRef(ia: ArrayLike<number>, oa: MutableArrayLike<number>, preserveScale?: boolean, extraValues?: number): void;
4
- export declare function resampleLinear(ia: ArrayLike<number>, oa: MutableArrayLike<number>, preserveScale?: boolean, extraValues?: number): void;
5
- export declare function resampleLinearRef(ia: ArrayLike<number>, oa: MutableArrayLike<number>, preserveScale?: boolean, extraValues?: number): void;
6
- export declare function resampleAverage(ia: ArrayLike<number>, oa: MutableArrayLike<number>): void;
7
- export declare function resampleAverageRef(ia: ArrayLike<number>, oa: MutableArrayLike<number>): void;
1
+ import { MutableArrayLike } from "../utils/MiscUtils.ts";
2
+ export declare function resampleNearestNeighbor(ia: ArrayLike<number>, oa: MutableArrayLike<number>, preserveScale?: boolean, extraValues?: number): void;
3
+ export declare function resampleNearestNeighborRef(ia: ArrayLike<number>, oa: MutableArrayLike<number>, preserveScale?: boolean, extraValues?: number): void;
4
+ export declare function resampleLinear(ia: ArrayLike<number>, oa: MutableArrayLike<number>, preserveScale?: boolean, extraValues?: number): void;
5
+ export declare function resampleLinearRef(ia: ArrayLike<number>, oa: MutableArrayLike<number>, preserveScale?: boolean, extraValues?: number): void;
6
+ export declare function resampleAverage(ia: ArrayLike<number>, oa: MutableArrayLike<number>): void;
7
+ export declare function resampleAverageRef(ia: ArrayLike<number>, oa: MutableArrayLike<number>): void;
8
+ //# sourceMappingURL=Resampling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Resampling.d.ts","sourceRoot":"","sources":["../../src/signal/Resampling.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAgDvD,wBAAgB,uBAAuB,CAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,UAAQ,EAAE,WAAW,SAAI,QAuBpG;AAoBhC,wBAAgB,0BAA0B,CAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,UAAQ,EAAE,WAAW,SAAI,QAYrG;AA+BlC,wBAAgB,cAAc,CAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,UAAQ,EAAE,WAAW,SAAI,QA4B3F;AAuBhC,wBAAgB,iBAAiB,CAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,UAAQ,EAAE,WAAW,SAAI,QAc5F;AAyBlC,wBAAgB,eAAe,CAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAiBrD;AAa/B,wBAAgB,kBAAkB,CAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAMlC"}