@jtarrio/signals 0.9.9 → 0.10.0

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/dist/demod/demod-am.d.ts.map +1 -1
  2. package/dist/demod/demod-am.js +5 -3
  3. package/dist/demod/demod-am.js.map +1 -1
  4. package/dist/demod/demod-cw.d.ts.map +1 -1
  5. package/dist/demod/demod-cw.js +5 -3
  6. package/dist/demod/demod-cw.js.map +1 -1
  7. package/dist/demod/demod-nbfm.d.ts.map +1 -1
  8. package/dist/demod/demod-nbfm.js +5 -3
  9. package/dist/demod/demod-nbfm.js.map +1 -1
  10. package/dist/demod/demod-ssb.d.ts.map +1 -1
  11. package/dist/demod/demod-ssb.js +5 -3
  12. package/dist/demod/demod-ssb.js.map +1 -1
  13. package/dist/demod/demod-wbfm.d.ts.map +1 -1
  14. package/dist/demod/demod-wbfm.js +12 -7
  15. package/dist/demod/demod-wbfm.js.map +1 -1
  16. package/dist/demod/spectrum.d.ts +2 -0
  17. package/dist/demod/spectrum.d.ts.map +1 -1
  18. package/dist/demod/spectrum.js +14 -4
  19. package/dist/demod/spectrum.js.map +1 -1
  20. package/dist/dsp/demodulators.d.ts.map +1 -1
  21. package/dist/dsp/demodulators.js +4 -2
  22. package/dist/dsp/demodulators.js.map +1 -1
  23. package/dist/dsp/fft.d.ts +3 -10
  24. package/dist/dsp/fft.d.ts.map +1 -1
  25. package/dist/dsp/fft.js +71 -184
  26. package/dist/dsp/fft.js.map +1 -1
  27. package/dist/dsp/filters.d.ts +19 -25
  28. package/dist/dsp/filters.d.ts.map +1 -1
  29. package/dist/dsp/filters.js +37 -109
  30. package/dist/dsp/filters.js.map +1 -1
  31. package/dist/dsp/resamplers.d.ts +10 -45
  32. package/dist/dsp/resamplers.d.ts.map +1 -1
  33. package/dist/dsp/resamplers.js +87 -185
  34. package/dist/dsp/resamplers.js.map +1 -1
  35. package/dist/players/audioplayer.js.map +1 -1
  36. package/dist/radio/single_thread.d.ts.map +1 -1
  37. package/dist/radio/single_thread.js +13 -0
  38. package/dist/radio/single_thread.js.map +1 -1
  39. package/dist/sources/generated.d.ts.map +1 -1
  40. package/dist/sources/generated.js.map +1 -1
  41. package/dist/sources/realtime.d.ts.map +1 -1
  42. package/dist/sources/realtime.js.map +1 -1
  43. package/dist/wasm/convolver.d.ts +22 -0
  44. package/dist/wasm/convolver.d.ts.map +1 -0
  45. package/dist/wasm/convolver.js +70 -0
  46. package/dist/wasm/convolver.js.map +1 -0
  47. package/dist/wasm/fft.d.ts +27 -0
  48. package/dist/wasm/fft.d.ts.map +1 -0
  49. package/dist/wasm/fft.js +75 -0
  50. package/dist/wasm/fft.js.map +1 -0
  51. package/dist/wasm/wasm-bytes.d.ts +3 -0
  52. package/dist/wasm/wasm-bytes.d.ts.map +1 -0
  53. package/dist/wasm/wasm-bytes.js +18 -0
  54. package/dist/wasm/wasm-bytes.js.map +1 -0
  55. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"demod-am.d.ts","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG;IACtB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,qDAAqD;AACrD,qBAAa,OAAQ,YAAW,KAAK,CAAC,MAAM,CAAC;IASzC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,SAAS;IAkBrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM;IAUpB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;AAED,oCAAoC;AACpC,qBAAa,QAAS,SAAQ,YAAY,CAAC,MAAM,CAAC;gBACpC,IAAI,EAAE,MAAM,GAAG,MAAM;IAGjC,SAAS,CAAC,MAAM,IAAI,MAAM;IAG1B,YAAY,IAAI,OAAO;IAGvB,YAAY,IAAI,MAAM;IAGtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ;IAOzC,UAAU,IAAI,OAAO;IAGrB,UAAU,IAAI,MAAM;IAGpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;CAItC"}
1
+ {"version":3,"file":"demod-am.d.ts","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG;IACtB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,qDAAqD;AACrD,qBAAa,OAAQ,YAAW,KAAK,CAAC,MAAM,CAAC;IASzC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,SAAS;IAoBrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM;IAUpB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;AAED,oCAAoC;AACpC,qBAAa,QAAS,SAAQ,YAAY,CAAC,MAAM,CAAC;gBACpC,IAAI,EAAE,MAAM,GAAG,MAAM;IAGjC,SAAS,CAAC,MAAM,IAAI,MAAM;IAG1B,YAAY,IAAI,OAAO;IAGvB,YAAY,IAAI,MAAM;IAGtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ;IAOzC,UAAU,IAAI,OAAO;IAGrB,UAAU,IAAI,MAAM;IAGpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;CAItC"}
@@ -17,7 +17,7 @@ import { makeLowPassKernel } from "../dsp/coefficients.js";
17
17
  import { AMDemodulator } from "../dsp/demodulators.js";
18
18
  import { FrequencyShifter, IqFIRFilter, IqFFTFilter } from "../dsp/filters.js";
19
19
  import { getPower } from "../dsp/power.js";
20
- import { ComplexDownsampler } from "../dsp/resamplers.js";
20
+ import { getIqResampler } from "../dsp/resamplers.js";
21
21
  import { Configurator } from "./modes.js";
22
22
  /** A demodulator for amplitude modulated signals. */
23
23
  export class DemodAM {
@@ -35,7 +35,9 @@ export class DemodAM {
35
35
  const downsamplerTaps = options?.downsamplerTaps || 151;
36
36
  this.rfTaps = options?.rfTaps || 151;
37
37
  this.shifter = new FrequencyShifter(inRate);
38
- this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
38
+ this.downsampler = getIqResampler(inRate, outRate, {
39
+ legacyTaps: downsamplerTaps,
40
+ });
39
41
  const kernel = makeLowPassKernel(outRate, this.mode.bandwidth / 2, this.rfTaps);
40
42
  this.filter = options?.useFftFilter
41
43
  ? new IqFFTFilter(kernel)
@@ -66,7 +68,7 @@ export class DemodAM {
66
68
  */
67
69
  demodulate(samplesI, samplesQ, freqOffset) {
68
70
  this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
69
- const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
71
+ const [I, Q] = this.downsampler.resample(samplesI, samplesQ);
70
72
  let allPower = getPower(I, Q);
71
73
  this.filter.inPlace(I, Q);
72
74
  let signalPower = (getPower(I, Q) * this.outRate) / this.mode.bandwidth;
@@ -1 +1 @@
1
- {"version":3,"file":"demod-am.js","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demod-am.js","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"demod-cw.d.ts","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG;IACtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,iDAAiD;AACjD,qBAAa,OAAQ,YAAW,KAAK,CAAC,MAAM,CAAC;IASzC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,SAAS;IAqBrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM;IAUpB,8DAA8D;IAC9D,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAiBf;AAED,oCAAoC;AACpC,qBAAa,QAAS,SAAQ,YAAY,CAAC,MAAM,CAAC;gBACpC,IAAI,EAAE,MAAM,GAAG,MAAM;IAGjC,SAAS,CAAC,MAAM,IAAI,MAAM;IAG1B,YAAY,IAAI,OAAO;IAGvB,YAAY,IAAI,MAAM;IAGtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ;CAO1C"}
1
+ {"version":3,"file":"demod-cw.d.ts","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG;IACtB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,iDAAiD;AACjD,qBAAa,OAAQ,YAAW,KAAK,CAAC,MAAM,CAAC;IASzC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,SAAS;IAuBrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM;IAUpB,8DAA8D;IAC9D,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAiBf;AAED,oCAAoC;AACpC,qBAAa,QAAS,SAAQ,YAAY,CAAC,MAAM,CAAC;gBACpC,IAAI,EAAE,MAAM,GAAG,MAAM;IAGjC,SAAS,CAAC,MAAM,IAAI,MAAM;IAG1B,YAAY,IAAI,OAAO;IAGvB,YAAY,IAAI,MAAM;IAGtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ;CAO1C"}
@@ -15,7 +15,7 @@ import { Float32Pool } from "../dsp/buffers.js";
15
15
  import { makeLowPassKernel } from "../dsp/coefficients.js";
16
16
  import { AGC, FrequencyShifter, IqFFTFilter, IqFIRFilter, } from "../dsp/filters.js";
17
17
  import { getPower } from "../dsp/power.js";
18
- import { ComplexDownsampler } from "../dsp/resamplers.js";
18
+ import { getIqResampler } from "../dsp/resamplers.js";
19
19
  import { Configurator } from "./modes.js";
20
20
  /** A demodulator for continuous wave signals. */
21
21
  export class DemodCW {
@@ -34,7 +34,9 @@ export class DemodCW {
34
34
  this.audioTaps = options?.audioTaps || 351;
35
35
  const toneFrequency = options?.toneFrequency || 600;
36
36
  this.shifter = new FrequencyShifter(inRate);
37
- this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
37
+ this.downsampler = getIqResampler(inRate, outRate, {
38
+ legacyTaps: downsamplerTaps,
39
+ });
38
40
  const kernel = makeLowPassKernel(outRate, mode.bandwidth / 2, this.audioTaps);
39
41
  this.filter = options?.useFftFilter
40
42
  ? new IqFFTFilter(kernel)
@@ -63,7 +65,7 @@ export class DemodCW {
63
65
  /** Demodulates the given I/Q samples into the real output. */
64
66
  demodulate(samplesI, samplesQ, freqOffset) {
65
67
  this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
66
- const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
68
+ const [I, Q] = this.downsampler.resample(samplesI, samplesQ);
67
69
  let allPower = getPower(I, Q);
68
70
  this.filter.inPlace(I, Q);
69
71
  let signalPower = (getPower(I, Q) * this.outRate) / this.mode.bandwidth;
@@ -1 +1 @@
1
- {"version":3,"file":"demod-cw.js","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demod-cw.js","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"demod-nbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,6BAA6B;AAC7B,MAAM,MAAM,WAAW,GAAG;IACxB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,+CAA+C;AAC/C,qBAAa,SAAU,YAAW,KAAK,CAAC,QAAQ,CAAC;IAS7C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAcvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAOtB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;AAED,sCAAsC;AACtC,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;gBACxC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAGnC,SAAS,CAAC,MAAM,IAAI,QAAQ;IAG5B,YAAY,IAAI,OAAO;IAGvB,YAAY,IAAI,MAAM;IAGtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU;IAO3C,UAAU,IAAI,OAAO;IAGrB,UAAU,IAAI,MAAM;IAGpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;CAIxC"}
1
+ {"version":3,"file":"demod-nbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,6BAA6B;AAC7B,MAAM,MAAM,WAAW,GAAG;IACxB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,+CAA+C;AAC/C,qBAAa,SAAU,YAAW,KAAK,CAAC,QAAQ,CAAC;IAS7C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAgBvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAOtB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;AAED,sCAAsC;AACtC,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;gBACxC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAGnC,SAAS,CAAC,MAAM,IAAI,QAAQ;IAG5B,YAAY,IAAI,OAAO;IAGvB,YAAY,IAAI,MAAM;IAGtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU;IAO3C,UAAU,IAAI,OAAO;IAGrB,UAAU,IAAI,MAAM;IAGpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;CAIxC"}
@@ -17,7 +17,7 @@ import { makeLowPassKernel } from "../dsp/coefficients.js";
17
17
  import { FMDemodulator } from "../dsp/demodulators.js";
18
18
  import { FrequencyShifter, IqFFTFilter, IqFIRFilter } from "../dsp/filters.js";
19
19
  import { getPower } from "../dsp/power.js";
20
- import { ComplexDownsampler } from "../dsp/resamplers.js";
20
+ import { getIqResampler } from "../dsp/resamplers.js";
21
21
  import { Configurator } from "./modes.js";
22
22
  /** A demodulator for narrowband FM signals. */
23
23
  export class DemodNBFM {
@@ -35,7 +35,9 @@ export class DemodNBFM {
35
35
  const downsamplerTaps = options?.downsamplerTaps || 151;
36
36
  this.rfTaps = options?.rfTaps || 151;
37
37
  this.shifter = new FrequencyShifter(inRate);
38
- this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
38
+ this.downsampler = getIqResampler(inRate, outRate, {
39
+ legacyTaps: downsamplerTaps,
40
+ });
39
41
  const kernel = makeLowPassKernel(outRate, mode.maxF, this.rfTaps);
40
42
  this.filter = options?.useFftFilter
41
43
  ? new IqFFTFilter(kernel)
@@ -67,7 +69,7 @@ export class DemodNBFM {
67
69
  */
68
70
  demodulate(samplesI, samplesQ, freqOffset) {
69
71
  this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
70
- const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
72
+ const [I, Q] = this.downsampler.resample(samplesI, samplesQ);
71
73
  let allPower = getPower(I, Q);
72
74
  this.filter.inPlace(I, Q);
73
75
  let signalPower = (getPower(I, Q) * this.outRate) / (this.mode.maxF * 2);
@@ -1 +1 @@
1
- {"version":3,"file":"demod-nbfm.js","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demod-nbfm.js","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"demod-ssb.d.ts","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,+BAA+B;AAC/B,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG;IACvB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,2DAA2D;AAC3D,qBAAa,QAAS,YAAW,KAAK,CAAC,OAAO,CAAC;IAQ3C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IARd;;;;OAIG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACrB,OAAO,CAAC,EAAE,UAAU;IAwBtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,IAAI,EAAE,OAAO;IAarB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAkBf;AAED,8CAA8C;AAC9C,qBAAa,SAAU,SAAQ,YAAY,CAAC,OAAO,CAAC;gBACtC,IAAI,EAAE,OAAO,GAAG,MAAM;IAGlC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAGzC,YAAY,IAAI,OAAO;IAGvB,YAAY,IAAI,MAAM;IAGtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAO1C,UAAU,IAAI,OAAO;IAGrB,UAAU,IAAI,MAAM;IAGpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;CAIvC"}
1
+ {"version":3,"file":"demod-ssb.d.ts","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,+BAA+B;AAC/B,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG;IACvB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,2DAA2D;AAC3D,qBAAa,QAAS,YAAW,KAAK,CAAC,OAAO,CAAC;IAQ3C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IARd;;;;OAIG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACrB,OAAO,CAAC,EAAE,UAAU;IA0BtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,IAAI,EAAE,OAAO;IAarB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAkBf;AAED,8CAA8C;AAC9C,qBAAa,SAAU,SAAQ,YAAY,CAAC,OAAO,CAAC;gBACtC,IAAI,EAAE,OAAO,GAAG,MAAM;IAGlC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAGzC,YAAY,IAAI,OAAO;IAGvB,YAAY,IAAI,MAAM;IAGtB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAO1C,UAAU,IAAI,OAAO;IAGrB,UAAU,IAAI,MAAM;IAGpB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;CAIvC"}
@@ -17,7 +17,7 @@ import { makeLowPassKernel } from "../dsp/coefficients.js";
17
17
  import { Sideband, SSBDemodulator } from "../dsp/demodulators.js";
18
18
  import { FrequencyShifter, AGC, FIRFilter, FFTFilter } from "../dsp/filters.js";
19
19
  import { getPower } from "../dsp/power.js";
20
- import { ComplexDownsampler } from "../dsp/resamplers.js";
20
+ import { getIqResampler } from "../dsp/resamplers.js";
21
21
  import { Configurator } from "./modes.js";
22
22
  /** A demodulator for single-sideband modulated signals. */
23
23
  export class DemodSSB {
@@ -35,7 +35,9 @@ export class DemodSSB {
35
35
  this.rfTaps = options?.rfTaps || 151;
36
36
  const hilbertTaps = options?.hilbertTaps || 151;
37
37
  this.shifter = new FrequencyShifter(inRate);
38
- this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
38
+ this.downsampler = getIqResampler(inRate, outRate, {
39
+ legacyTaps: downsamplerTaps,
40
+ });
39
41
  const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, this.rfTaps);
40
42
  this.filter = options?.useFftFilter
41
43
  ? new FFTFilter(kernel)
@@ -69,7 +71,7 @@ export class DemodSSB {
69
71
  */
70
72
  demodulate(samplesI, samplesQ, freqOffset) {
71
73
  this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
72
- const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
74
+ const [I, Q] = this.downsampler.resample(samplesI, samplesQ);
73
75
  let allPower = getPower(I, Q);
74
76
  this.demodulator.demodulate(I, Q, I);
75
77
  this.filter.inPlace(I);
@@ -1 +1 @@
1
- {"version":3,"file":"demod-ssb.js","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demod-ssb.js","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"demod-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,6BAA6B;AAC7B,MAAM,MAAM,WAAW,GAAG;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,6CAA6C;AAC7C,qBAAa,SAAU,YAAW,KAAK,CAAC,QAAQ,CAAC;IAU7C,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAOvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAMtB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAOf;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK,CAAC,QAAQ,CAAC;IASnD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAoBvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;AAED;;;;KAIK;AACL,qBAAa,eAAgB,YAAW,KAAK,CAAC,QAAQ,CAAC;IAUnD,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAiBvB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;CAkChD;AAED,sCAAsC;AACtC,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;gBACxC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAGnC,SAAS,CAAC,MAAM,IAAI,QAAQ;IAG5B,SAAS,IAAI,OAAO;IAGpB,SAAS,IAAI,OAAO;IAGpB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU;IAItC,YAAY,IAAI,MAAM;CAGvB"}
1
+ {"version":3,"file":"demod-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,6BAA6B;AAC7B,MAAM,MAAM,WAAW,GAAG;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,6CAA6C;AAC7C,qBAAa,SAAU,YAAW,KAAK,CAAC,QAAQ,CAAC;IAU7C,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAOvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAMtB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAOf;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK,CAAC,QAAQ,CAAC;IASnD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAkBvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;AAED;;;;KAIK;AACL,qBAAa,eAAgB,YAAW,KAAK,CAAC,QAAQ,CAAC;IAUnD,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAoBvB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;CAkChD;AAED,sCAAsC;AACtC,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;gBACxC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAGnC,SAAS,CAAC,MAAM,IAAI,QAAQ;IAG5B,SAAS,IAAI,OAAO;IAGpB,SAAS,IAAI,OAAO;IAGpB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU;IAItC,YAAY,IAAI,MAAM;CAGvB"}
@@ -17,7 +17,7 @@ import { makeLowPassKernel } from "../dsp/coefficients.js";
17
17
  import { FMDemodulator, StereoSeparator } from "../dsp/demodulators.js";
18
18
  import { Deemphasis, FrequencyShifter, IqFFTFilter, IqFIRFilter, } from "../dsp/filters.js";
19
19
  import { getPower } from "../dsp/power.js";
20
- import { ComplexDownsampler, RealDownsampler, } from "../dsp/resamplers.js";
20
+ import { getIqResampler, getRealResampler, } from "../dsp/resamplers.js";
21
21
  import { Configurator } from "./modes.js";
22
22
  /** A demodulator for wideband FM signals. */
23
23
  export class DemodWBFM {
@@ -80,7 +80,9 @@ export class DemodWBFMStage1 {
80
80
  const rfTaps = options?.rfTaps || 151;
81
81
  this.shifter = new FrequencyShifter(inRate);
82
82
  if (inRate != outRate) {
83
- this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
83
+ this.downsampler = getIqResampler(inRate, outRate, {
84
+ legacyTaps: downsamplerTaps,
85
+ });
84
86
  }
85
87
  const kernel = makeLowPassKernel(outRate, maxF, rfTaps);
86
88
  this.filter = options?.useFftFilter
@@ -108,7 +110,7 @@ export class DemodWBFMStage1 {
108
110
  demodulate(samplesI, samplesQ, freqOffset) {
109
111
  this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
110
112
  let [I, Q] = this.downsampler
111
- ? this.downsampler.downsample(samplesI, samplesQ)
113
+ ? this.downsampler.resample(samplesI, samplesQ)
112
114
  : [samplesI, samplesQ];
113
115
  let allPower = getPower(I, Q);
114
116
  this.filter.inPlace(I, Q);
@@ -142,8 +144,11 @@ export class DemodWBFMStage2 {
142
144
  1e6;
143
145
  const audioTaps = options?.audioTaps || 41;
144
146
  const filterF = Math.min(15000, outRate / 2);
145
- const kernel = makeLowPassKernel(inRate, filterF, audioTaps, 1 / 0.9);
146
- this.monoSampler = new RealDownsampler(inRate, outRate, kernel);
147
+ this.monoSampler = getRealResampler(inRate, outRate, {
148
+ lowPassFrequency: filterF,
149
+ legacyTaps: audioTaps,
150
+ gain: 1 / 0.9,
151
+ });
147
152
  this.stereoSampler = this.monoSampler.clone();
148
153
  this.stereoSeparator = new StereoSeparator(inRate, pilotF);
149
154
  this.leftDeemph = new Deemphasis(outRate, deemphTc);
@@ -168,11 +173,11 @@ export class DemodWBFMStage2 {
168
173
  * @returns The demodulated audio signal.
169
174
  */
170
175
  demodulate(samplesI) {
171
- let audio = this.monoSampler.downsample(samplesI);
176
+ let audio = this.monoSampler.resample(samplesI);
172
177
  if (this.mode.stereo) {
173
178
  const stereo = this.stereoSeparator.separate(samplesI);
174
179
  if (stereo.found) {
175
- const diffAudio = this.stereoSampler.downsample(stereo.diff);
180
+ const diffAudio = this.stereoSampler.resample(stereo.diff);
176
181
  let leftAudio = this.outPool.get(audio.length);
177
182
  let rightAudio = audio;
178
183
  for (let i = 0; i < diffAudio.length; ++i) {
@@ -1 +1 @@
1
- {"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,kDAAkD;AAClD,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,WAAW,EAEX,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,gBAAgB,GAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAuB9D,6CAA6C;AAC7C,MAAM,OAAO,SAAS;IAUV;IATV;;;;;OAKG;IACH,YACE,MAAc,EACd,OAAe,EACP,IAAc,EACtB,OAAqB;QADb,SAAI,GAAJ,IAAI,CAAU;QAGtB,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAEO,MAAM,CAAkB;IACxB,MAAM,CAAkB;IAEhC,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CACR,QAAsB,EACtB,QAAsB,EACtB,UAAkB;QAElB,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAEzC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAShB;IACA;IATV;;;;;OAKG;IACH,YACE,MAAc,EACN,OAAe,EACf,IAAc,EACtB,OAAqB;QAFb,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAU;QAGtB,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;gBACjD,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,YAAY;YACjC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC;YACzB,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IACvD,CAAC;IAEO,OAAO,CAAmB;IAC1B,WAAW,CAAe;IAC1B,MAAM,CAAW;IACjB,WAAW,CAAgB;IAEnC,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CACR,QAAsB,EACtB,QAAsB,EACtB,UAAkB;QAElB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW;YAC3B,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC/C,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzB,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,WAAW,GAAG,QAAQ;SAC5B,CAAC;IACJ,CAAC;CACF;AAED;;;;KAIK;AACL,MAAM,OAAO,eAAe;IAUhB;IATV;;;;;OAKG;IACH,YACE,MAAc,EACd,OAAe,EACP,IAAc,EACtB,OAAqB;QADb,SAAI,GAAJ,IAAI,CAAU;QAGtB,MAAM,MAAM,GAAG,KAAK,CAAC;QACrB,MAAM,QAAQ,GACZ,CAAC,OAAO,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;YACrE,GAAG,CAAC;QACN,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE;YACnD,gBAAgB,EAAE,OAAO;YACzB,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,CAAC,GAAG,GAAG;SACd,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,WAAW,CAAgB;IAC3B,aAAa,CAAgB;IAC7B,eAAe,CAAkB;IACjC,UAAU,CAAa;IACvB,WAAW,CAAa;IACxB,OAAO,CAAc;IAE7B,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,QAAsB;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC1C,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBACvC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrC,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAE,IAAI;oBACZ,GAAG,EAAE,CAAC;iBACP,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO;YACL,IAAI,EAAE,KAAK;YACX,KAAK;YACL,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAC;SACP,CAAC;IACJ,CAAC;CACF;AAED,sCAAsC;AACtC,MAAM,OAAO,UAAW,SAAQ,YAAsB;IACpD,YAAY,IAAuB;QACjC,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IACS,MAAM;QACd,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,SAAS,CAAC,MAAe;QACvB,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -7,6 +7,8 @@ export declare class Spectrum implements SampleReceiver {
7
7
  private Q;
8
8
  private lastFrequency;
9
9
  private fft;
10
+ private window;
11
+ private copy;
10
12
  private lastOutput;
11
13
  private dirty;
12
14
  set size(newSize: number);
@@ -1 +1 @@
1
- {"version":3,"file":"spectrum.d.ts","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,sEAAsE;AACtE,qBAAa,QAAS,YAAW,cAAc;gBACjC,OAAO,CAAC,EAAE,MAAM;IAc5B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,KAAK,CAAU;IAEvB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAKvB;IAED,IAAI,IAAI,IAPU,MAAM,CASvB;IAED,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAE9B,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAOxC,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY;CAWnC"}
1
+ {"version":3,"file":"spectrum.d.ts","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,sEAAsE;AACtE,qBAAa,QAAS,YAAW,cAAc;gBACjC,OAAO,CAAC,EAAE,MAAM;IAe5B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,CAAC,CAAoB;IAC7B,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,KAAK,CAAU;IAEvB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAKvB;IAED,IAAI,IAAI,IAPU,MAAM,CASvB;IAED,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAE9B,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAOxC,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY;CAkBnC"}
@@ -12,7 +12,7 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
  // Continuous spectrum analyzer.
15
- import { Float32RingBuffer } from "../dsp/buffers.js";
15
+ import { Float32RingBuffer, IqPool } from "../dsp/buffers.js";
16
16
  import { makeBlackmanWindow } from "../dsp/coefficients.js";
17
17
  import { FFT } from "../dsp/fft.js";
18
18
  /** A sample receiver that computes the received signal's spectrum. */
@@ -27,7 +27,8 @@ export class Spectrum {
27
27
  this.I = new Float32RingBuffer(131072);
28
28
  this.Q = new Float32RingBuffer(131072);
29
29
  this.fft = FFT.ofLength(fftSize);
30
- this.fft.setWindow(makeBlackmanWindow(this.fft.length));
30
+ this.window = makeBlackmanWindow(this.fft.length);
31
+ this.copy = new IqPool(4, this.fft.length);
31
32
  this.lastOutput = new Float32Array(this.fft.length);
32
33
  this.dirty = true;
33
34
  }
@@ -35,11 +36,13 @@ export class Spectrum {
35
36
  Q;
36
37
  lastFrequency;
37
38
  fft;
39
+ window;
40
+ copy;
38
41
  lastOutput;
39
42
  dirty;
40
43
  set size(newSize) {
41
44
  this.fft = FFT.ofLength(newSize);
42
- this.fft.setWindow(makeBlackmanWindow(this.fft.length));
45
+ this.window = makeBlackmanWindow(this.fft.length);
43
46
  this.lastOutput = new Float32Array(this.fft.length);
44
47
  this.dirty = true;
45
48
  }
@@ -63,7 +66,14 @@ export class Spectrum {
63
66
  */
64
67
  getSpectrum(spectrum) {
65
68
  if (this.dirty) {
66
- let fft = this.fft.transformCircularBuffers(this.I, this.Q);
69
+ let [copyReal, copyImag] = this.copy.get(this.fft.length);
70
+ this.I.copyTo(copyReal);
71
+ this.Q.copyTo(copyImag);
72
+ for (let i = 0; i < this.fft.length; ++i) {
73
+ copyReal[i] *= this.window[i];
74
+ copyImag[i] *= this.window[i];
75
+ }
76
+ let fft = this.fft.transform(copyReal, copyImag);
67
77
  this.lastOutput.fill(-Infinity);
68
78
  for (let i = 0; i < this.lastOutput.length; ++i) {
69
79
  this.lastOutput[i] = 20 * Math.log10(Math.hypot(fft[0][i], fft[1][i]));
@@ -1 +1 @@
1
- {"version":3,"file":"spectrum.js","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spectrum.js","sourceRoot":"","sources":["../../src/demod/spectrum.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,gCAAgC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAIpC,sEAAsE;AACtE,MAAM,OAAO,QAAQ;IACnB,YAAY,OAAgB;QAC1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEO,CAAC,CAAoB;IACrB,CAAC,CAAoB;IACrB,aAAa,CAAqB;IAClC,GAAG,CAAM;IACT,MAAM,CAAe;IACrB,IAAI,CAAS;IACb,UAAU,CAAe;IACzB,KAAK,CAAU;IAEvB,IAAI,IAAI,CAAC,OAAe;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,CAAS,IAAS,CAAC;IAEjC,cAAc,CAAC,KAAkB;QAC/B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,QAAsB;QAChC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBACzC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC9B,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"demodulators.d.ts","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"AAoBA,kCAAkC;AAClC,oBAAY,QAAQ;IAClB,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,uCAAuC;AACvC,MAAM,MAAM,qBAAqB,GAAG;IAClC,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAA;AAED,iDAAiD;AACjD,qBAAa,cAAc;IACzB;;;OAGG;gBACS,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAOlF,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;IAE3B,sDAAsD;IACtD,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAI9B,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAO/D;AAED,0CAA0C;AAC1C,qBAAa,aAAa;IACxB;;OAEG;gBACS,UAAU,EAAE,MAAM;IAK9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,gBAAgB,CAAS;IAEjC,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAa/D;AAED,0CAA0C;AAC1C,qBAAa,aAAa;IACxB;;OAEG;gBACS,YAAY,EAAE,MAAM;IAMhC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,EAAE,CAAS;IAEnB,qCAAqC;IACrC,eAAe,CAAC,YAAY,EAAE,MAAM;IAIpC,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAe/D;AAED,0EAA0E;AAC1E,qBAAa,eAAe;IAC1B;;;OAGG;gBACS,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAEhC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE;CAexE"}
1
+ {"version":3,"file":"demodulators.d.ts","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"AA2BA,kCAAkC;AAClC,oBAAY,QAAQ;IAClB,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,uCAAuC;AACvC,MAAM,MAAM,qBAAqB,GAAG;IAClC,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,iDAAiD;AACjD,qBAAa,cAAc;IACzB;;;OAGG;gBAED,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,qBAAqB;IAUjC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAS;IAE3B,sDAAsD;IACtD,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAI9B,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAO/D;AAED,0CAA0C;AAC1C,qBAAa,aAAa;IACxB;;OAEG;gBACS,UAAU,EAAE,MAAM;IAK9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,gBAAgB,CAAS;IAEjC,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAa/D;AAED,0CAA0C;AAC1C,qBAAa,aAAa;IACxB;;OAEG;gBACS,YAAY,EAAE,MAAM;IAMhC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,EAAE,CAAS;IAEnB,qCAAqC;IACrC,eAAe,CAAC,YAAY,EAAE,MAAM;IAIpC,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAe/D;AAED,0EAA0E;AAC1E,qBAAa,eAAe;IAC1B;;;OAGG;gBACS,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAEhC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE;CAexE"}
@@ -13,7 +13,7 @@
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
15
  import { makeHilbertKernel } from "./coefficients.js";
16
- import { decay, DelayFilter, FFTFilter, FIRFilter, PilotDetector } from "./filters.js";
16
+ import { decay, DelayFilter, FFTFilter, FIRFilter, PilotDetector, } from "./filters.js";
17
17
  import { Float32Pool } from "./buffers.js";
18
18
  import { atan2 } from "./math.js";
19
19
  /** The sideband to demodulate. */
@@ -30,7 +30,9 @@ export class SSBDemodulator {
30
30
  */
31
31
  constructor(sideband, kernelLen, options) {
32
32
  let hilbert = makeHilbertKernel(kernelLen);
33
- this.filterHilbert = options?.useFftFilter ? new FFTFilter(hilbert) : new FIRFilter(hilbert);
33
+ this.filterHilbert = options?.useFftFilter
34
+ ? new FFTFilter(hilbert)
35
+ : new FIRFilter(hilbert);
34
36
  this.filterDelay = new DelayFilter(this.filterHilbert.getDelay());
35
37
  this.hilbertMul = sideband == Sideband.Upper ? -1 : 1;
36
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"demodulators.js","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demodulators.js","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,kDAAkD;AAClD,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EAET,SAAS,EACT,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,kCAAkC;AAClC,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,yCAAK,CAAA;IACL,yCAAK,CAAA;AACP,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAQD,iDAAiD;AACjD,MAAM,OAAO,cAAc;IACzB;;;OAGG;IACH,YACE,QAAkB,EAClB,SAAiB,EACjB,OAA+B;QAE/B,IAAI,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,YAAY;YACxC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC;YACxB,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAEO,aAAa,CAAS;IACtB,WAAW,CAAc;IACzB,UAAU,CAAS;IAE3B,sDAAsD;IACtD,WAAW,CAAC,QAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,8DAA8D;IAC9D,UAAU,CAAC,CAAe,EAAE,CAAe,EAAE,GAAiB;QAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,YAAY,UAAkB;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAS;IACd,gBAAgB,CAAS;IAEjC,8DAA8D;IAC9D,UAAU,CAAC,CAAe,EAAE,CAAe,EAAE,GAAiB;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,gBAAgB,IAAI,KAAK,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC,CAAC;YAC3D,GAAG,CAAC,CAAC,CAAC,GAAG,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,gBAAgB,GAAG,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,YAAY,YAAoB;QAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACd,CAAC;IAEO,GAAG,CAAS;IACZ,EAAE,CAAS;IACX,EAAE,CAAS;IAEnB,qCAAqC;IACrC,eAAe,CAAC,YAAoB;QAClC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,8DAA8D;IAC9D,UAAU,CAAC,CAAe,EAAE,CAAe,EAAE,GAAiB;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAClC,kBAAkB;YAClB,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACjC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACV,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,eAAe;IAC1B;;;OAGG;IACH,YAAY,UAAkB,EAAE,SAAiB;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,IAAI,CAAc;IAClB,QAAQ,CAAgB;IAEhC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAqB;QAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,+EAA+E;YAC/E,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC3B,IAAI,EAAE,GAAG;SACV,CAAC;IACJ,CAAC;CACF"}
package/dist/dsp/fft.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { Float32RingBuffer } from "./buffers.js";
2
1
  /** Fast Fourier Transform implementation. */
3
2
  /**
4
3
  * Returns the length of the FFT for a given array length.
@@ -25,12 +24,8 @@ export declare class FFT {
25
24
  static ofLength(minimumLength: number): FFT;
26
25
  private constructor();
27
26
  private revIndex;
28
- private coefs;
29
- private copy;
27
+ private wasmFft;
30
28
  private out;
31
- private window;
32
- /** Sets the window function for this FFT. */
33
- setWindow(window: Float32Array): void;
34
29
  /**
35
30
  * Transforms the given time-domain input.
36
31
  * @param real An array of real parts.
@@ -39,7 +34,6 @@ export declare class FFT {
39
34
  */
40
35
  transform(real: Float32Array, imag?: Float32Array): FFTOutput;
41
36
  transform(real: number[], imag?: number[]): FFTOutput;
42
- transformCircularBuffers(real: Float32RingBuffer, imag: Float32RingBuffer): FFTOutput;
43
37
  /**
44
38
  * Does a reverse transform of the given frequency-domain input.
45
39
  * The input and output arrays must be the same length as the FFT.
@@ -55,11 +49,10 @@ export declare class RealFFT {
55
49
  length: number;
56
50
  static ofLength(minimumLength: number): RealFFT;
57
51
  private constructor();
58
- private halfFft;
52
+ private revIndex;
53
+ private wasmFft;
59
54
  private out;
60
55
  private outReal;
61
- private coefReal;
62
- private coefImag;
63
56
  private copyEven;
64
57
  private copyOdd;
65
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../../src/dsp/fft.ts"],"names":[],"mappings":"AAcA,OAAO,EAAe,iBAAiB,EAAU,MAAM,cAAc,CAAC;AAEtE,6CAA6C;AAE7C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAErD,wEAAwE;AACxE,qBAAa,GAAG;IAWa,MAAM,EAAE,MAAM;IAVzC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG;IAI3C,OAAO;IASP,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAe;IAE7B,6CAA6C;IAC7C,SAAS,CAAC,MAAM,EAAE,YAAY;IAI9B;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS;IAC7D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS;IAsBrD,wBAAwB,CACtB,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,iBAAiB,GACtB,SAAS;IAQZ;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS;IAC1D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS;CAcnD;AA+GD,qEAAqE;AACrE,qBAAa,OAAO;IAKS,MAAM,EAAE,MAAM;IAJzC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI/C,OAAO;IAeP,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,OAAO,CAAe;IAE9B;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS;IAuCxC;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY;CA8B9D"}
1
+ {"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../../src/dsp/fft.ts"],"names":[],"mappings":"AAiBA,6CAA6C;AAE7C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAErD,wEAAwE;AACxE,qBAAa,GAAG;IAWa,MAAM,EAAE,MAAM;IAVzC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG;IAI3C,OAAO;IAOP,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,GAAG,CAAS;IAEpB;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS;IAC7D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS;IAwBrD;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,SAAS;IAC1D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS;CAgBnD;AAED,qEAAqE;AACrE,qBAAa,OAAO;IAKS,MAAM,EAAE,MAAM;IAJzC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI/C,OAAO;IAYP,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,OAAO,CAAe;IAE9B;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS;IAkBxC;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY;CAqB9D"}