@jtarrio/signals 0.9.3 → 0.9.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.
- package/dist/demod/demod-am.d.ts +3 -2
- package/dist/demod/demod-am.d.ts.map +1 -1
- package/dist/demod/demod-am.js +5 -9
- package/dist/demod/demod-am.js.map +1 -1
- package/dist/demod/demod-cw.d.ts +3 -2
- package/dist/demod/demod-cw.d.ts.map +1 -1
- package/dist/demod/demod-cw.js +5 -9
- package/dist/demod/demod-cw.js.map +1 -1
- package/dist/demod/demod-nbfm.d.ts +3 -2
- package/dist/demod/demod-nbfm.d.ts.map +1 -1
- package/dist/demod/demod-nbfm.js +5 -9
- package/dist/demod/demod-nbfm.js.map +1 -1
- package/dist/demod/demod-ssb.d.ts +2 -0
- package/dist/demod/demod-ssb.d.ts.map +1 -1
- package/dist/demod/demod-ssb.js +5 -3
- package/dist/demod/demod-ssb.js.map +1 -1
- package/dist/demod/demod-wbfm.d.ts +3 -2
- package/dist/demod/demod-wbfm.d.ts.map +1 -1
- package/dist/demod/demod-wbfm.js +4 -7
- package/dist/demod/demod-wbfm.js.map +1 -1
- package/dist/demod/empty-demodulator.d.ts +1 -2
- package/dist/demod/empty-demodulator.d.ts.map +1 -1
- package/dist/dsp/buffers.d.ts +12 -0
- package/dist/dsp/buffers.d.ts.map +1 -1
- package/dist/dsp/buffers.js +37 -0
- package/dist/dsp/buffers.js.map +1 -1
- package/dist/dsp/demodulators.d.ts +7 -2
- package/dist/dsp/demodulators.d.ts.map +1 -1
- package/dist/dsp/demodulators.js +8 -11
- package/dist/dsp/demodulators.js.map +1 -1
- package/dist/dsp/fft.d.ts +3 -4
- package/dist/dsp/fft.d.ts.map +1 -1
- package/dist/dsp/fft.js +112 -48
- package/dist/dsp/fft.js.map +1 -1
- package/dist/dsp/filters.d.ts +51 -33
- package/dist/dsp/filters.d.ts.map +1 -1
- package/dist/dsp/filters.js +152 -69
- package/dist/dsp/filters.js.map +1 -1
- package/dist/dsp/resamplers.d.ts +7 -1
- package/dist/dsp/resamplers.d.ts.map +1 -1
- package/dist/dsp/resamplers.js +24 -14
- package/dist/dsp/resamplers.js.map +1 -1
- package/dist/errors.d.ts +1 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/players/audioplayer.d.ts +10 -1
- package/dist/players/audioplayer.d.ts.map +1 -1
- package/dist/players/audioplayer.js +5 -2
- package/dist/players/audioplayer.js.map +1 -1
- package/dist/sources/generated.d.ts +1 -1
- package/dist/sources/generated.d.ts.map +1 -1
- package/dist/sources/generated.js.map +1 -1
- package/dist/sources/generators.d.ts +2 -0
- package/dist/sources/generators.d.ts.map +1 -1
- package/dist/sources/generators.js +11 -0
- package/dist/sources/generators.js.map +1 -1
- package/dist/sources/realtime.d.ts +2 -2
- package/dist/sources/realtime.d.ts.map +1 -1
- package/dist/sources/realtime.js.map +1 -1
- package/package.json +1 -1
package/dist/demod/demod-am.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export type OptionsAM = {
|
|
|
11
11
|
downsamplerTaps?: number;
|
|
12
12
|
/** Number of taps for the RF filter. Must be an odd number. 151 by default. */
|
|
13
13
|
rfTaps?: number;
|
|
14
|
+
/** Filter via FFT instead of convolution. Uses less CPU, but generates more latency. */
|
|
15
|
+
useFftFilter?: boolean;
|
|
14
16
|
};
|
|
15
17
|
/** A demodulator for amplitude modulated signals. */
|
|
16
18
|
export declare class DemodAM implements Demod<ModeAM> {
|
|
@@ -26,8 +28,7 @@ export declare class DemodAM implements Demod<ModeAM> {
|
|
|
26
28
|
private rfTaps;
|
|
27
29
|
private shifter;
|
|
28
30
|
private downsampler;
|
|
29
|
-
private
|
|
30
|
-
private filterQ;
|
|
31
|
+
private filter;
|
|
31
32
|
private demodulator;
|
|
32
33
|
private outPool;
|
|
33
34
|
getMode(): ModeAM;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-am.d.ts","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"demod-am.d.ts","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"AA0BA,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,CAAW;IACzB,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"}
|
package/dist/demod/demod-am.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { Float32Pool } from "../dsp/buffers.js";
|
|
16
16
|
import { makeLowPassKernel } from "../dsp/coefficients.js";
|
|
17
17
|
import { AMDemodulator } from "../dsp/demodulators.js";
|
|
18
|
-
import { FrequencyShifter, FIRFilter } from "../dsp/filters.js";
|
|
18
|
+
import { FrequencyShifter, FIRFilter, FFTFilter, IqFilter, } from "../dsp/filters.js";
|
|
19
19
|
import { getPower } from "../dsp/power.js";
|
|
20
20
|
import { ComplexDownsampler } from "../dsp/resamplers.js";
|
|
21
21
|
import { Configurator } from "./modes.js";
|
|
@@ -37,16 +37,14 @@ export class DemodAM {
|
|
|
37
37
|
this.shifter = new FrequencyShifter(inRate);
|
|
38
38
|
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
39
39
|
const kernel = makeLowPassKernel(outRate, this.mode.bandwidth / 2, this.rfTaps);
|
|
40
|
-
this.
|
|
41
|
-
this.filterQ = new FIRFilter(kernel);
|
|
40
|
+
this.filter = new IqFilter(options?.useFftFilter ? new FFTFilter(kernel) : new FIRFilter(kernel));
|
|
42
41
|
this.demodulator = new AMDemodulator(outRate);
|
|
43
42
|
this.outPool = new Float32Pool(1);
|
|
44
43
|
}
|
|
45
44
|
rfTaps;
|
|
46
45
|
shifter;
|
|
47
46
|
downsampler;
|
|
48
|
-
|
|
49
|
-
filterQ;
|
|
47
|
+
filter;
|
|
50
48
|
demodulator;
|
|
51
49
|
outPool;
|
|
52
50
|
getMode() {
|
|
@@ -55,8 +53,7 @@ export class DemodAM {
|
|
|
55
53
|
setMode(mode) {
|
|
56
54
|
this.mode = mode;
|
|
57
55
|
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, this.rfTaps);
|
|
58
|
-
this.
|
|
59
|
-
this.filterQ.setCoefficients(kernel);
|
|
56
|
+
this.filter.setCoefficients(kernel);
|
|
60
57
|
}
|
|
61
58
|
/**
|
|
62
59
|
* Demodulates the signal.
|
|
@@ -69,8 +66,7 @@ export class DemodAM {
|
|
|
69
66
|
this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
|
|
70
67
|
const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
|
|
71
68
|
let allPower = getPower(I, Q);
|
|
72
|
-
this.
|
|
73
|
-
this.filterQ.inPlace(Q);
|
|
69
|
+
this.filter.inPlace(I, Q);
|
|
74
70
|
let signalPower = (getPower(I, Q) * this.outRate) / this.mode.bandwidth;
|
|
75
71
|
this.demodulator.demodulate(I, Q, I);
|
|
76
72
|
let right = this.outPool.get(I.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-am.js","sourceRoot":"","sources":["../../src/demod/demod-am.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,MAAM,wBAAwB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"demod-am.js","sourceRoot":"","sources":["../../src/demod/demod-am.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,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAe9D,qDAAqD;AACrD,MAAM,OAAO,OAAO;IASR;IACA;IATV;;;;;OAKG;IACH,YACE,MAAc,EACN,OAAe,EACf,IAAY,EACpB,OAAmB;QAFX,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAQ;QAGpB,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,iBAAiB,CAC9B,OAAO,EACP,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,EACvB,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CACxB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CACtE,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAEO,MAAM,CAAS;IACf,OAAO,CAAmB;IAC1B,WAAW,CAAqB;IAChC,MAAM,CAAW;IACjB,WAAW,CAAgB;IAC3B,OAAO,CAAc;IAE7B,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,iBAAiB,CAC9B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,GAAG,CAAC,EAClB,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,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,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/D,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,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;YACL,IAAI,EAAE,CAAC;YACP,KAAK;YACL,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,WAAW,GAAG,QAAQ;SAC5B,CAAC;IACJ,CAAC;CACF;AAED,oCAAoC;AACpC,MAAM,OAAO,QAAS,SAAQ,YAAoB;IAChD,YAAY,IAAqB;QAC/B,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IACS,MAAM;QACd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IACD,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,IAAI,GAAG;YACV,GAAG,IAAI,CAAC,IAAI;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACrD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
package/dist/demod/demod-cw.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export type OptionsCW = {
|
|
|
12
12
|
downsamplerTaps?: number;
|
|
13
13
|
/** Number of taps for the audio filter. Must be an odd number. 351 by default. */
|
|
14
14
|
audioTaps?: number;
|
|
15
|
+
/** Filter via FFT instead of convolution. Uses less CPU, but generates more latency. */
|
|
16
|
+
useFftFilter?: boolean;
|
|
15
17
|
};
|
|
16
18
|
/** A demodulator for continuous wave signals. */
|
|
17
19
|
export declare class DemodCW implements Demod<ModeCW> {
|
|
@@ -27,8 +29,7 @@ export declare class DemodCW implements Demod<ModeCW> {
|
|
|
27
29
|
private audioTaps;
|
|
28
30
|
private shifter;
|
|
29
31
|
private downsampler;
|
|
30
|
-
private
|
|
31
|
-
private filterQ;
|
|
32
|
+
private filter;
|
|
32
33
|
private toneShifter;
|
|
33
34
|
private toneFrequency;
|
|
34
35
|
private agc;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-cw.d.ts","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"demod-cw.d.ts","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"AAyBA,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,CAAW;IACzB,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"}
|
package/dist/demod/demod-cw.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
import { Float32Pool } from "../dsp/buffers.js";
|
|
15
15
|
import { makeLowPassKernel } from "../dsp/coefficients.js";
|
|
16
|
-
import { AGC, FIRFilter, FrequencyShifter } from "../dsp/filters.js";
|
|
16
|
+
import { AGC, FFTFilter, FIRFilter, FrequencyShifter, IqFilter, } from "../dsp/filters.js";
|
|
17
17
|
import { getPower } from "../dsp/power.js";
|
|
18
18
|
import { ComplexDownsampler } from "../dsp/resamplers.js";
|
|
19
19
|
import { Configurator } from "./modes.js";
|
|
@@ -36,8 +36,7 @@ export class DemodCW {
|
|
|
36
36
|
this.shifter = new FrequencyShifter(inRate);
|
|
37
37
|
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
38
38
|
const kernel = makeLowPassKernel(outRate, mode.bandwidth / 2, this.audioTaps);
|
|
39
|
-
this.
|
|
40
|
-
this.filterQ = new FIRFilter(kernel);
|
|
39
|
+
this.filter = new IqFilter(options?.useFftFilter ? new FFTFilter(kernel) : new FIRFilter(kernel));
|
|
41
40
|
this.toneShifter = new FrequencyShifter(outRate);
|
|
42
41
|
this.toneFrequency = toneFrequency;
|
|
43
42
|
this.agc = new AGC(outRate, 10);
|
|
@@ -46,8 +45,7 @@ export class DemodCW {
|
|
|
46
45
|
audioTaps;
|
|
47
46
|
shifter;
|
|
48
47
|
downsampler;
|
|
49
|
-
|
|
50
|
-
filterQ;
|
|
48
|
+
filter;
|
|
51
49
|
toneShifter;
|
|
52
50
|
toneFrequency;
|
|
53
51
|
agc;
|
|
@@ -58,16 +56,14 @@ export class DemodCW {
|
|
|
58
56
|
setMode(mode) {
|
|
59
57
|
this.mode = mode;
|
|
60
58
|
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, this.audioTaps);
|
|
61
|
-
this.
|
|
62
|
-
this.filterQ.setCoefficients(kernel);
|
|
59
|
+
this.filter.setCoefficients(kernel);
|
|
63
60
|
}
|
|
64
61
|
/** Demodulates the given I/Q samples into the real output. */
|
|
65
62
|
demodulate(samplesI, samplesQ, freqOffset) {
|
|
66
63
|
this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
|
|
67
64
|
const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
|
|
68
65
|
let allPower = getPower(I, Q);
|
|
69
|
-
this.
|
|
70
|
-
this.filterQ.inPlace(Q);
|
|
66
|
+
this.filter.inPlace(I, Q);
|
|
71
67
|
let signalPower = (getPower(I, Q) * this.outRate) / this.mode.bandwidth;
|
|
72
68
|
this.toneShifter.inPlace(I, Q, this.toneFrequency);
|
|
73
69
|
this.agc.inPlace(I);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-cw.js","sourceRoot":"","sources":["../../src/demod/demod-cw.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,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"demod-cw.js","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export type OptionsNBFM = {
|
|
|
11
11
|
downsamplerTaps?: number;
|
|
12
12
|
/** Number of taps for the RF filter. Must be an odd number. 151 by default. */
|
|
13
13
|
rfTaps?: number;
|
|
14
|
+
/** Filter via FFT instead of convolution. Uses less CPU, but generates more latency. */
|
|
15
|
+
useFftFilter?: boolean;
|
|
14
16
|
};
|
|
15
17
|
/** A demodulator for narrowband FM signals. */
|
|
16
18
|
export declare class DemodNBFM implements Demod<ModeNBFM> {
|
|
@@ -26,8 +28,7 @@ export declare class DemodNBFM implements Demod<ModeNBFM> {
|
|
|
26
28
|
private rfTaps;
|
|
27
29
|
private shifter;
|
|
28
30
|
private downsampler;
|
|
29
|
-
private
|
|
30
|
-
private filterQ;
|
|
31
|
+
private filter;
|
|
31
32
|
private demodulator;
|
|
32
33
|
private outPool;
|
|
33
34
|
getMode(): ModeNBFM;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-nbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"demod-nbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"AA2BA,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,CAAW;IACzB,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"}
|
package/dist/demod/demod-nbfm.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { Float32Pool } from "../dsp/buffers.js";
|
|
16
16
|
import { makeLowPassKernel } from "../dsp/coefficients.js";
|
|
17
17
|
import { FMDemodulator } from "../dsp/demodulators.js";
|
|
18
|
-
import { FIRFilter, FrequencyShifter } from "../dsp/filters.js";
|
|
18
|
+
import { FFTFilter, FIRFilter, FrequencyShifter, IqFilter, } from "../dsp/filters.js";
|
|
19
19
|
import { getPower } from "../dsp/power.js";
|
|
20
20
|
import { ComplexDownsampler } from "../dsp/resamplers.js";
|
|
21
21
|
import { Configurator } from "./modes.js";
|
|
@@ -37,16 +37,14 @@ export class DemodNBFM {
|
|
|
37
37
|
this.shifter = new FrequencyShifter(inRate);
|
|
38
38
|
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
39
39
|
const kernel = makeLowPassKernel(outRate, mode.maxF, this.rfTaps);
|
|
40
|
-
this.
|
|
41
|
-
this.filterQ = new FIRFilter(kernel);
|
|
40
|
+
this.filter = new IqFilter(options?.useFftFilter ? new FFTFilter(kernel) : new FIRFilter(kernel));
|
|
42
41
|
this.demodulator = new FMDemodulator(mode.maxF / outRate);
|
|
43
42
|
this.outPool = new Float32Pool(1);
|
|
44
43
|
}
|
|
45
44
|
rfTaps;
|
|
46
45
|
shifter;
|
|
47
46
|
downsampler;
|
|
48
|
-
|
|
49
|
-
filterQ;
|
|
47
|
+
filter;
|
|
50
48
|
demodulator;
|
|
51
49
|
outPool;
|
|
52
50
|
getMode() {
|
|
@@ -55,8 +53,7 @@ export class DemodNBFM {
|
|
|
55
53
|
setMode(mode) {
|
|
56
54
|
this.mode = mode;
|
|
57
55
|
const kernel = makeLowPassKernel(this.outRate, mode.maxF, this.rfTaps);
|
|
58
|
-
this.
|
|
59
|
-
this.filterQ.setCoefficients(kernel);
|
|
56
|
+
this.filter.setCoefficients(kernel);
|
|
60
57
|
this.demodulator.setMaxDeviation(mode.maxF / this.outRate);
|
|
61
58
|
}
|
|
62
59
|
/**
|
|
@@ -70,8 +67,7 @@ export class DemodNBFM {
|
|
|
70
67
|
this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
|
|
71
68
|
const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
|
|
72
69
|
let allPower = getPower(I, Q);
|
|
73
|
-
this.
|
|
74
|
-
this.filterQ.inPlace(Q);
|
|
70
|
+
this.filter.inPlace(I, Q);
|
|
75
71
|
let signalPower = (getPower(I, Q) * this.outRate) / (this.mode.maxF * 2);
|
|
76
72
|
this.demodulator.demodulate(I, Q, I);
|
|
77
73
|
let right = this.outPool.get(I.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-nbfm.js","sourceRoot":"","sources":["../../src/demod/demod-nbfm.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,MAAM,wBAAwB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"demod-nbfm.js","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,8 @@ export type OptionsSSB = {
|
|
|
13
13
|
rfTaps?: number;
|
|
14
14
|
/** Number of taps for the Hilbert filter. Must be an odd number. 151 by default. */
|
|
15
15
|
hilbertTaps?: number;
|
|
16
|
+
/** Filter via FFT instead of convolution. Uses less CPU, but generates more latency. */
|
|
17
|
+
useFftFilter?: boolean;
|
|
16
18
|
};
|
|
17
19
|
/** A demodulator for single-sideband modulated signals. */
|
|
18
20
|
export declare class DemodSSB implements Demod<ModeSSB> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-ssb.d.ts","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"demod-ssb.d.ts","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"AA2BA,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"}
|
package/dist/demod/demod-ssb.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { Float32Pool } from "../dsp/buffers.js";
|
|
16
16
|
import { makeLowPassKernel } from "../dsp/coefficients.js";
|
|
17
17
|
import { Sideband, SSBDemodulator } from "../dsp/demodulators.js";
|
|
18
|
-
import { FrequencyShifter, AGC, FIRFilter } from "../dsp/filters.js";
|
|
18
|
+
import { FrequencyShifter, AGC, FIRFilter, FFTFilter, } from "../dsp/filters.js";
|
|
19
19
|
import { getPower } from "../dsp/power.js";
|
|
20
20
|
import { ComplexDownsampler } from "../dsp/resamplers.js";
|
|
21
21
|
import { Configurator } from "./modes.js";
|
|
@@ -37,8 +37,10 @@ export class DemodSSB {
|
|
|
37
37
|
this.shifter = new FrequencyShifter(inRate);
|
|
38
38
|
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
39
39
|
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, this.rfTaps);
|
|
40
|
-
this.filter =
|
|
41
|
-
|
|
40
|
+
this.filter = options?.useFftFilter
|
|
41
|
+
? new FFTFilter(kernel)
|
|
42
|
+
: new FIRFilter(kernel);
|
|
43
|
+
this.demodulator = new SSBDemodulator(mode.scheme == "USB" ? Sideband.Upper : Sideband.Lower, hilbertTaps, { useFftFilter: options?.useFftFilter });
|
|
42
44
|
this.agc = new AGC(outRate, 3);
|
|
43
45
|
this.outPool = new Float32Pool(1);
|
|
44
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-ssb.js","sourceRoot":"","sources":["../../src/demod/demod-ssb.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,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"demod-ssb.js","sourceRoot":"","sources":["../../src/demod/demod-ssb.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,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,GAAG,EACH,SAAS,EACT,SAAS,GAEV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAqB9D,2DAA2D;AAC3D,MAAM,OAAO,QAAQ;IAQT;IACA;IARV;;;;OAIG;IACH,YACE,MAAc,EACN,OAAe,EACf,IAAa,EACrB,OAAoB;QAFZ,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAS;QAGrB,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,GAAG,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,iBAAiB,CAC9B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,GAAG,CAAC,EAClB,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,YAAY;YACjC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC;YACvB,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CACnC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EACtD,WAAW,EACX,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,CACxC,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAEO,MAAM,CAAS;IACf,OAAO,CAAmB;IAC1B,WAAW,CAAqB;IAChC,MAAM,CAAwB;IAC9B,WAAW,CAAiB;IAC5B,GAAG,CAAM;IACT,OAAO,CAAc;IAE7B,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,iBAAiB,CAC9B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,GAAG,CAAC,EAClB,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,WAAW,CAC1B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CACvD,CAAC;IACJ,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,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,WAAW,GACb,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;YACL,IAAI,EAAE,CAAC;YACP,KAAK;YACL,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,WAAW,GAAG,QAAQ;SAC5B,CAAC;IACJ,CAAC;CACF;AAED,8CAA8C;AAC9C,MAAM,OAAO,SAAU,SAAQ,YAAqB;IAClD,YAAY,IAAsB;QAChC,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IACS,MAAM,CAAC,MAAc;QAC7B,OAAO,EAAE,MAAM,EAAE,MAAuB,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,YAAY;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IACD,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,IAAI,GAAG;YACV,GAAG,IAAI,CAAC,IAAI;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACpD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -18,6 +18,8 @@ export type OptionsWBFM = {
|
|
|
18
18
|
rfTaps?: number;
|
|
19
19
|
/** Number of taps for the audio filter. Must be an odd number. 41 by default. */
|
|
20
20
|
audioTaps?: number;
|
|
21
|
+
/** Filter via FFT instead of convolution. Uses less CPU, but generates more latency. */
|
|
22
|
+
useFftFilter?: boolean;
|
|
21
23
|
};
|
|
22
24
|
/** A demodulator for wideband FM signals. */
|
|
23
25
|
export declare class DemodWBFM implements Demod<ModeWBFM> {
|
|
@@ -59,8 +61,7 @@ export declare class DemodWBFMStage1 implements Demod<ModeWBFM> {
|
|
|
59
61
|
constructor(inRate: number, outRate: number, mode: ModeWBFM, options?: OptionsWBFM);
|
|
60
62
|
private shifter;
|
|
61
63
|
private downsampler?;
|
|
62
|
-
private
|
|
63
|
-
private filterQ;
|
|
64
|
+
private filter;
|
|
64
65
|
private demodulator;
|
|
65
66
|
getMode(): ModeWBFM;
|
|
66
67
|
setMode(mode: ModeWBFM): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"demod-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AA4BA,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"}
|
package/dist/demod/demod-wbfm.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { Float32Pool } from "../dsp/buffers.js";
|
|
16
16
|
import { makeLowPassKernel } from "../dsp/coefficients.js";
|
|
17
17
|
import { FMDemodulator, StereoSeparator } from "../dsp/demodulators.js";
|
|
18
|
-
import { Deemphasis, FIRFilter, FrequencyShifter } from "../dsp/filters.js";
|
|
18
|
+
import { Deemphasis, FFTFilter, FIRFilter, FrequencyShifter, IqFilter, } from "../dsp/filters.js";
|
|
19
19
|
import { getPower } from "../dsp/power.js";
|
|
20
20
|
import { ComplexDownsampler, RealDownsampler } from "../dsp/resamplers.js";
|
|
21
21
|
import { Configurator } from "./modes.js";
|
|
@@ -83,14 +83,12 @@ export class DemodWBFMStage1 {
|
|
|
83
83
|
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
84
84
|
}
|
|
85
85
|
const kernel = makeLowPassKernel(outRate, maxF, rfTaps);
|
|
86
|
-
this.
|
|
87
|
-
this.filterQ = new FIRFilter(kernel);
|
|
86
|
+
this.filter = new IqFilter(options?.useFftFilter ? new FFTFilter(kernel) : new FIRFilter(kernel));
|
|
88
87
|
this.demodulator = new FMDemodulator(maxF / outRate);
|
|
89
88
|
}
|
|
90
89
|
shifter;
|
|
91
90
|
downsampler;
|
|
92
|
-
|
|
93
|
-
filterQ;
|
|
91
|
+
filter;
|
|
94
92
|
demodulator;
|
|
95
93
|
getMode() {
|
|
96
94
|
return this.mode;
|
|
@@ -111,8 +109,7 @@ export class DemodWBFMStage1 {
|
|
|
111
109
|
? this.downsampler.downsample(samplesI, samplesQ)
|
|
112
110
|
: [samplesI, samplesQ];
|
|
113
111
|
let allPower = getPower(I, Q);
|
|
114
|
-
this.
|
|
115
|
-
this.filterQ.inPlace(Q);
|
|
112
|
+
this.filter.inPlace(I, Q);
|
|
116
113
|
let signalPower = (getPower(I, Q) * this.outRate) / 150000;
|
|
117
114
|
this.demodulator.demodulate(I, Q, I);
|
|
118
115
|
return {
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,SAAS,EAET,SAAS,EACT,gBAAgB,EAChB,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,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,IAAI,kBAAkB,CACvC,MAAM,EACN,OAAO,EACP,eAAe,CAChB,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CACxB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CACtE,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IACvD,CAAC;IAEO,OAAO,CAAmB;IAC1B,WAAW,CAAsB;IACjC,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,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACjD,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,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClE,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,CAAkB;IAC7B,aAAa,CAAkB;IAC/B,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,UAAU,CAAC,QAAQ,CAAC,CAAC;QAElD,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,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7D,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"}
|
|
@@ -2,7 +2,7 @@ import { Mode } from "./modes.js";
|
|
|
2
2
|
import { Player } from "./player.js";
|
|
3
3
|
import { SampleBlock } from "../radio/sample_block.js";
|
|
4
4
|
import { SampleReceiver } from "../radio/sample_receiver.js";
|
|
5
|
-
type DemodulatorOptions = {
|
|
5
|
+
export type DemodulatorOptions = {
|
|
6
6
|
/**
|
|
7
7
|
* The player to use. If undefined, an AudioPlayer will be used.
|
|
8
8
|
*/
|
|
@@ -75,5 +75,4 @@ export declare class Demodulator extends EventTarget implements SampleReceiver {
|
|
|
75
75
|
export declare class StereoStatusEvent extends CustomEvent<boolean> {
|
|
76
76
|
constructor(stereo: boolean);
|
|
77
77
|
}
|
|
78
|
-
export {};
|
|
79
78
|
//# sourceMappingURL=empty-demodulator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-demodulator.d.ts","sourceRoot":"","sources":["../../src/demod/empty-demodulator.ts"],"names":[],"mappings":"AAcA,OAAO,EAAS,IAAI,EAAqC,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,
|
|
1
|
+
{"version":3,"file":"empty-demodulator.d.ts","sourceRoot":"","sources":["../../src/demod/empty-demodulator.ts"],"names":[],"mappings":"AAcA,OAAO,EAAS,IAAI,EAAqC,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;KAAE,CAAC;CACjD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,qBAAa,WAAY,SAAQ,WAAY,YAAW,cAAc;IACpE;;OAEG;gBACS,OAAO,CAAC,EAAE,kBAAkB;IAYxC,uBAAuB;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAS;IACvB,6DAA6D;IAC7D,OAAO,CAAC,cAAc,CAAiB;IACvC,uCAAuC;IACvC,OAAO,CAAC,WAAW,CAAoC;IACvD,kDAAkD;IAClD,OAAO,CAAC,IAAI,CAAO;IACnB,6BAA6B;IAC7B,OAAO,CAAC,KAAK,CAAa;IAC1B,+CAA+C;IAC/C,OAAO,CAAC,eAAe,CAAS;IAChC,iDAAiD;IACjD,OAAO,CAAC,YAAY,CAAU;IAC9B,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB,CAAC,CAAY;IAEvC,yCAAyC;IACzC,OAAO,CAAC,IAAI,EAAE,IAAI;IAKlB,iDAAiD;IACjD,OAAO,IAAI,IAAI;IAIf,oCAAoC;IACpC,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAIjC,4CAA4C;IAC5C,kBAAkB;IAIlB,2FAA2F;IAC3F,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAI1D,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,8CAA8C;IAC9C,SAAS;IAIT,wEAAwE;IACxE,OAAO,CAAC,SAAS;IAcjB,+BAA+B;IAC/B,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKvC,8BAA8B;IAC9B,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAmBxC,gBAAgB,CACd,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,EAC/C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,GACtD,IAAI;IACP,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,GAAG,IAAI,EACnD,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,SAAS,GACtD,IAAI;CAYR;AAED,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,OAAO,CAAC;gBAC7C,MAAM,EAAE,OAAO;CAG5B"}
|
package/dist/dsp/buffers.d.ts
CHANGED
|
@@ -101,6 +101,13 @@ declare class RingBuffer<T extends TypedArray<T>> {
|
|
|
101
101
|
get available(): number;
|
|
102
102
|
/** Empties the ring buffer. */
|
|
103
103
|
clear(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Stores repeated copies of a value in the ring buffer.
|
|
106
|
+
*
|
|
107
|
+
* @param value the value to store.
|
|
108
|
+
* @param count the number of copies to store. The whole ring buffer is filled if not specified.
|
|
109
|
+
* */
|
|
110
|
+
fill(value: number, count?: number): void;
|
|
104
111
|
/** Copies the provided data into the ring buffer. */
|
|
105
112
|
store(data: T): void;
|
|
106
113
|
/**
|
|
@@ -109,6 +116,11 @@ declare class RingBuffer<T extends TypedArray<T>> {
|
|
|
109
116
|
* Returns the number of values copied.
|
|
110
117
|
*/
|
|
111
118
|
moveTo(data: T): number;
|
|
119
|
+
/**
|
|
120
|
+
* Consumes a number of values from the ring buffer, as if they had been read through moveTo().
|
|
121
|
+
* @param count the number of values to consume.
|
|
122
|
+
*/
|
|
123
|
+
consume(count: number): void;
|
|
112
124
|
/**
|
|
113
125
|
* Fills the provided array with the latest values stored in the ring buffer,
|
|
114
126
|
* without consuming it and without taking into account the values consumed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../../src/dsp/buffers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../../src/dsp/buffers.ts"],"names":[],"mappings":"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"}
|
package/dist/dsp/buffers.js
CHANGED
|
@@ -115,6 +115,34 @@ class RingBuffer {
|
|
|
115
115
|
this.writePos = 0;
|
|
116
116
|
this.filled = 0;
|
|
117
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Stores repeated copies of a value in the ring buffer.
|
|
120
|
+
*
|
|
121
|
+
* @param value the value to store.
|
|
122
|
+
* @param count the number of copies to store. The whole ring buffer is filled if not specified.
|
|
123
|
+
* */
|
|
124
|
+
fill(value, count) {
|
|
125
|
+
if (count === undefined || count >= this.buffer.length) {
|
|
126
|
+
this.buffer.fill(value);
|
|
127
|
+
this.readPos = 0;
|
|
128
|
+
this.writePos = 0;
|
|
129
|
+
this.filled = this.buffer.length;
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
let remaining = count;
|
|
133
|
+
let dstOffset = this.writePos;
|
|
134
|
+
while (remaining > 0) {
|
|
135
|
+
const copyCount = Math.min(remaining, this.buffer.length - this.writePos);
|
|
136
|
+
this.buffer.subarray(dstOffset, dstOffset + copyCount).fill(value);
|
|
137
|
+
dstOffset = (dstOffset + copyCount) % this.buffer.length;
|
|
138
|
+
remaining -= copyCount;
|
|
139
|
+
}
|
|
140
|
+
this.writePos = dstOffset;
|
|
141
|
+
this.filled = Math.min(this.buffer.length, this.filled + count);
|
|
142
|
+
if (this.filled == this.buffer.length) {
|
|
143
|
+
this.readPos = this.writePos;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
118
146
|
/** Copies the provided data into the ring buffer. */
|
|
119
147
|
store(data) {
|
|
120
148
|
let count = Math.min(data.length, this.buffer.length);
|
|
@@ -139,6 +167,15 @@ class RingBuffer {
|
|
|
139
167
|
this.filled -= count;
|
|
140
168
|
return count;
|
|
141
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Consumes a number of values from the ring buffer, as if they had been read through moveTo().
|
|
172
|
+
* @param count the number of values to consume.
|
|
173
|
+
*/
|
|
174
|
+
consume(count) {
|
|
175
|
+
let discard = Math.min(this.filled, count);
|
|
176
|
+
this.readPos = (this.readPos + discard) % this.buffer.length;
|
|
177
|
+
this.filled -= discard;
|
|
178
|
+
}
|
|
142
179
|
/**
|
|
143
180
|
* Fills the provided array with the latest values stored in the ring buffer,
|
|
144
181
|
* without consuming it and without taking into account the values consumed
|
package/dist/dsp/buffers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffers.js","sourceRoot":"","sources":["../../src/dsp/buffers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buffers.js","sourceRoot":"","sources":["../../src/dsp/buffers.ts"],"names":[],"mappings":"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"}
|