@jtarrio/webrtlsdr 2.0.4 → 2.0.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 +10 -1
- package/dist/demod/demod-am.d.ts.map +1 -1
- package/dist/demod/demod-am.js +9 -4
- package/dist/demod/demod-am.js.map +1 -1
- package/dist/demod/demod-cw.d.ts +13 -1
- package/dist/demod/demod-cw.d.ts.map +1 -1
- package/dist/demod/demod-cw.js +12 -7
- package/dist/demod/demod-cw.js.map +1 -1
- package/dist/demod/demod-nbfm.d.ts +10 -1
- package/dist/demod/demod-nbfm.d.ts.map +1 -1
- package/dist/demod/demod-nbfm.js +9 -4
- package/dist/demod/demod-nbfm.js.map +1 -1
- package/dist/demod/demod-ssb.d.ts +11 -1
- package/dist/demod/demod-ssb.d.ts.map +1 -1
- package/dist/demod/demod-ssb.js +10 -5
- package/dist/demod/demod-ssb.js.map +1 -1
- package/dist/demod/demod-wbfm.d.ts +21 -3
- package/dist/demod/demod-wbfm.d.ts.map +1 -1
- package/dist/demod/demod-wbfm.js +17 -10
- package/dist/demod/demod-wbfm.js.map +1 -1
- package/dist/demod/empty-demodulator.d.ts +20 -0
- package/dist/demod/empty-demodulator.d.ts.map +1 -1
- package/dist/demod/empty-demodulator.js +10 -6
- package/dist/demod/empty-demodulator.js.map +1 -1
- package/dist/demod/modes.d.ts +2 -2
- package/dist/demod/modes.d.ts.map +1 -1
- package/dist/demod/modes.js +2 -2
- package/dist/demod/modes.js.map +1 -1
- package/dist/dsp/demodulators.d.ts +2 -1
- package/dist/dsp/demodulators.d.ts.map +1 -1
- package/dist/dsp/demodulators.js +2 -2
- package/dist/dsp/demodulators.js.map +1 -1
- package/package.json +1 -1
package/dist/demod/demod-am.d.ts
CHANGED
|
@@ -5,6 +5,13 @@ export type ModeAM = {
|
|
|
5
5
|
bandwidth: number;
|
|
6
6
|
squelch: number;
|
|
7
7
|
};
|
|
8
|
+
/** Mode options for AM. */
|
|
9
|
+
export type OptionsAM = {
|
|
10
|
+
/** Number of taps for the downsampler filter. Must be an odd number. 151 by default. */
|
|
11
|
+
downsamplerTaps?: number;
|
|
12
|
+
/** Number of taps for the RF filter. Must be an odd number. 151 by default. */
|
|
13
|
+
rfTaps?: number;
|
|
14
|
+
};
|
|
8
15
|
/** A demodulator for amplitude modulated signals. */
|
|
9
16
|
export declare class DemodAM implements Demod<ModeAM> {
|
|
10
17
|
private outRate;
|
|
@@ -13,8 +20,10 @@ export declare class DemodAM implements Demod<ModeAM> {
|
|
|
13
20
|
* @param inRate The sample rate of the input samples.
|
|
14
21
|
* @param outRate The sample rate of the output audio.
|
|
15
22
|
* @param mode The mode to use initially.
|
|
23
|
+
* @param options Options for the demodulator.
|
|
16
24
|
*/
|
|
17
|
-
constructor(inRate: number, outRate: number, mode: ModeAM);
|
|
25
|
+
constructor(inRate: number, outRate: number, mode: ModeAM, options?: OptionsAM);
|
|
26
|
+
private rfTaps;
|
|
18
27
|
private shifter;
|
|
19
28
|
private downsampler;
|
|
20
29
|
private filterI;
|
|
@@ -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":"AAoBA,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;CACjB,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;IAgBrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM;IAWpB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAef;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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// Copyright 2026 Jacobo Tarrio Barreiro. All rights reserved.
|
|
1
2
|
// Copyright 2014 Google Inc. All rights reserved.
|
|
2
3
|
//
|
|
3
4
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -25,17 +26,21 @@ export class DemodAM {
|
|
|
25
26
|
* @param inRate The sample rate of the input samples.
|
|
26
27
|
* @param outRate The sample rate of the output audio.
|
|
27
28
|
* @param mode The mode to use initially.
|
|
29
|
+
* @param options Options for the demodulator.
|
|
28
30
|
*/
|
|
29
|
-
constructor(inRate, outRate, mode) {
|
|
31
|
+
constructor(inRate, outRate, mode, options) {
|
|
30
32
|
this.outRate = outRate;
|
|
31
33
|
this.mode = mode;
|
|
34
|
+
const downsamplerTaps = options?.downsamplerTaps || 151;
|
|
35
|
+
this.rfTaps = options?.rfTaps || 151;
|
|
32
36
|
this.shifter = new FrequencyShifter(inRate);
|
|
33
|
-
this.downsampler = new ComplexDownsampler(inRate, outRate,
|
|
34
|
-
const kernel = makeLowPassKernel(outRate, this.mode.bandwidth / 2,
|
|
37
|
+
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
38
|
+
const kernel = makeLowPassKernel(outRate, this.mode.bandwidth / 2, this.rfTaps);
|
|
35
39
|
this.filterI = new FIRFilter(kernel);
|
|
36
40
|
this.filterQ = new FIRFilter(kernel);
|
|
37
41
|
this.demodulator = new AMDemodulator(outRate);
|
|
38
42
|
}
|
|
43
|
+
rfTaps;
|
|
39
44
|
shifter;
|
|
40
45
|
downsampler;
|
|
41
46
|
filterI;
|
|
@@ -46,7 +51,7 @@ export class DemodAM {
|
|
|
46
51
|
}
|
|
47
52
|
setMode(mode) {
|
|
48
53
|
this.mode = mode;
|
|
49
|
-
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2,
|
|
54
|
+
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, this.rfTaps);
|
|
50
55
|
this.filterI.setCoefficients(kernel);
|
|
51
56
|
this.filterQ.setCoefficients(kernel);
|
|
52
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-am.js","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"AAAA,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,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"demod-am.js","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"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"}
|
package/dist/demod/demod-cw.d.ts
CHANGED
|
@@ -4,6 +4,15 @@ export type ModeCW = {
|
|
|
4
4
|
scheme: "CW";
|
|
5
5
|
bandwidth: number;
|
|
6
6
|
};
|
|
7
|
+
/** Mode options for CW. */
|
|
8
|
+
export type OptionsCW = {
|
|
9
|
+
/** Tone frequency of the zero-beat CW signals, in Hertz. 600 by default. */
|
|
10
|
+
toneFrequency?: number;
|
|
11
|
+
/** Number of taps for the downsampler filter. Must be an odd number. 151 by default. */
|
|
12
|
+
downsamplerTaps?: number;
|
|
13
|
+
/** Number of taps for the audio filter. Must be an odd number. 351 by default. */
|
|
14
|
+
audioTaps?: number;
|
|
15
|
+
};
|
|
7
16
|
/** A demodulator for continuous wave signals. */
|
|
8
17
|
export declare class DemodCW implements Demod<ModeCW> {
|
|
9
18
|
private outRate;
|
|
@@ -12,13 +21,16 @@ export declare class DemodCW implements Demod<ModeCW> {
|
|
|
12
21
|
* @param inRate The sample rate of the input samples.
|
|
13
22
|
* @param outRate The sample rate of the output audio.
|
|
14
23
|
* @param mode The mode to use initially.
|
|
24
|
+
* @param options Options for the demodulator.
|
|
15
25
|
*/
|
|
16
|
-
constructor(inRate: number, outRate: number, mode: ModeCW);
|
|
26
|
+
constructor(inRate: number, outRate: number, mode: ModeCW, options?: OptionsCW);
|
|
27
|
+
private audioTaps;
|
|
17
28
|
private shifter;
|
|
18
29
|
private downsampler;
|
|
19
30
|
private filterI;
|
|
20
31
|
private filterQ;
|
|
21
32
|
private toneShifter;
|
|
33
|
+
private toneFrequency;
|
|
22
34
|
private agc;
|
|
23
35
|
getMode(): ModeCW;
|
|
24
36
|
setMode(mode: ModeCW): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-cw.d.ts","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"AAkBA,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;
|
|
1
|
+
{"version":3,"file":"demod-cw.d.ts","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"AAkBA,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;CACpB,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;IAmBrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM;IAWpB,8DAA8D;IAC9D,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;CAO1C"}
|
package/dist/demod/demod-cw.js
CHANGED
|
@@ -16,8 +16,6 @@ import { AGC, FIRFilter, FrequencyShifter } from "../dsp/filters.js";
|
|
|
16
16
|
import { getPower } from "../dsp/power.js";
|
|
17
17
|
import { ComplexDownsampler } from "../dsp/resamplers.js";
|
|
18
18
|
import { Configurator } from "./modes.js";
|
|
19
|
-
/** Output frequency of the zero-beat CW signals. */
|
|
20
|
-
const ToneFrequency = 600;
|
|
21
19
|
/** A demodulator for continuous wave signals. */
|
|
22
20
|
export class DemodCW {
|
|
23
21
|
outRate;
|
|
@@ -26,30 +24,37 @@ export class DemodCW {
|
|
|
26
24
|
* @param inRate The sample rate of the input samples.
|
|
27
25
|
* @param outRate The sample rate of the output audio.
|
|
28
26
|
* @param mode The mode to use initially.
|
|
27
|
+
* @param options Options for the demodulator.
|
|
29
28
|
*/
|
|
30
|
-
constructor(inRate, outRate, mode) {
|
|
29
|
+
constructor(inRate, outRate, mode, options) {
|
|
31
30
|
this.outRate = outRate;
|
|
32
31
|
this.mode = mode;
|
|
32
|
+
const downsamplerTaps = options?.downsamplerTaps || 151;
|
|
33
|
+
this.audioTaps = options?.audioTaps || 351;
|
|
34
|
+
const toneFrequency = options?.toneFrequency || 600;
|
|
33
35
|
this.shifter = new FrequencyShifter(inRate);
|
|
34
|
-
this.downsampler = new ComplexDownsampler(inRate, outRate,
|
|
35
|
-
const kernel = makeLowPassKernel(outRate, mode.bandwidth / 2,
|
|
36
|
+
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
37
|
+
const kernel = makeLowPassKernel(outRate, mode.bandwidth / 2, this.audioTaps);
|
|
36
38
|
this.filterI = new FIRFilter(kernel);
|
|
37
39
|
this.filterQ = new FIRFilter(kernel);
|
|
38
40
|
this.toneShifter = new FrequencyShifter(outRate);
|
|
41
|
+
this.toneFrequency = toneFrequency;
|
|
39
42
|
this.agc = new AGC(outRate, 10);
|
|
40
43
|
}
|
|
44
|
+
audioTaps;
|
|
41
45
|
shifter;
|
|
42
46
|
downsampler;
|
|
43
47
|
filterI;
|
|
44
48
|
filterQ;
|
|
45
49
|
toneShifter;
|
|
50
|
+
toneFrequency;
|
|
46
51
|
agc;
|
|
47
52
|
getMode() {
|
|
48
53
|
return this.mode;
|
|
49
54
|
}
|
|
50
55
|
setMode(mode) {
|
|
51
56
|
this.mode = mode;
|
|
52
|
-
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2,
|
|
57
|
+
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, this.audioTaps);
|
|
53
58
|
this.filterI.setCoefficients(kernel);
|
|
54
59
|
this.filterQ.setCoefficients(kernel);
|
|
55
60
|
}
|
|
@@ -61,7 +66,7 @@ export class DemodCW {
|
|
|
61
66
|
this.filterI.inPlace(I);
|
|
62
67
|
this.filterQ.inPlace(Q);
|
|
63
68
|
let signalPower = (getPower(I, Q) * this.outRate) / this.mode.bandwidth;
|
|
64
|
-
this.toneShifter.inPlace(I, Q,
|
|
69
|
+
this.toneShifter.inPlace(I, Q, this.toneFrequency);
|
|
65
70
|
this.agc.inPlace(I);
|
|
66
71
|
return {
|
|
67
72
|
left: 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,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"demod-cw.js","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,13 @@ export type ModeNBFM = {
|
|
|
5
5
|
maxF: number;
|
|
6
6
|
squelch: number;
|
|
7
7
|
};
|
|
8
|
+
/** Mode options for NBFM. */
|
|
9
|
+
export type OptionsNBFM = {
|
|
10
|
+
/** Number of taps for the downsampler filter. Must be an odd number. 151 by default. */
|
|
11
|
+
downsamplerTaps?: number;
|
|
12
|
+
/** Number of taps for the RF filter. Must be an odd number. 151 by default. */
|
|
13
|
+
rfTaps?: number;
|
|
14
|
+
};
|
|
8
15
|
/** A demodulator for narrowband FM signals. */
|
|
9
16
|
export declare class DemodNBFM implements Demod<ModeNBFM> {
|
|
10
17
|
private outRate;
|
|
@@ -13,8 +20,10 @@ export declare class DemodNBFM implements Demod<ModeNBFM> {
|
|
|
13
20
|
* @param inRate The sample rate of the input samples.
|
|
14
21
|
* @param outRate The sample rate of the output audio.
|
|
15
22
|
* @param mode The mode to use initially.
|
|
23
|
+
* @param options Options for the demodulator.
|
|
16
24
|
*/
|
|
17
|
-
constructor(inRate: number, outRate: number, mode: ModeNBFM);
|
|
25
|
+
constructor(inRate: number, outRate: number, mode: ModeNBFM, options?: OptionsNBFM);
|
|
26
|
+
private rfTaps;
|
|
18
27
|
private shifter;
|
|
19
28
|
private downsampler;
|
|
20
29
|
private filterI;
|
|
@@ -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":"AAoBA,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;CACjB,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;IAYvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAQtB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAef;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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// Copyright 2026 Jacobo Tarrio Barreiro. All rights reserved.
|
|
1
2
|
// Copyright 2014 Google Inc. All rights reserved.
|
|
2
3
|
//
|
|
3
4
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -25,17 +26,21 @@ export class DemodNBFM {
|
|
|
25
26
|
* @param inRate The sample rate of the input samples.
|
|
26
27
|
* @param outRate The sample rate of the output audio.
|
|
27
28
|
* @param mode The mode to use initially.
|
|
29
|
+
* @param options Options for the demodulator.
|
|
28
30
|
*/
|
|
29
|
-
constructor(inRate, outRate, mode) {
|
|
31
|
+
constructor(inRate, outRate, mode, options) {
|
|
30
32
|
this.outRate = outRate;
|
|
31
33
|
this.mode = mode;
|
|
34
|
+
const downsamplerTaps = options?.downsamplerTaps || 151;
|
|
35
|
+
this.rfTaps = options?.rfTaps || 151;
|
|
32
36
|
this.shifter = new FrequencyShifter(inRate);
|
|
33
|
-
this.downsampler = new ComplexDownsampler(inRate, outRate,
|
|
34
|
-
const kernel = makeLowPassKernel(outRate, mode.maxF,
|
|
37
|
+
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
38
|
+
const kernel = makeLowPassKernel(outRate, mode.maxF, this.rfTaps);
|
|
35
39
|
this.filterI = new FIRFilter(kernel);
|
|
36
40
|
this.filterQ = new FIRFilter(kernel);
|
|
37
41
|
this.demodulator = new FMDemodulator(mode.maxF / outRate);
|
|
38
42
|
}
|
|
43
|
+
rfTaps;
|
|
39
44
|
shifter;
|
|
40
45
|
downsampler;
|
|
41
46
|
filterI;
|
|
@@ -46,7 +51,7 @@ export class DemodNBFM {
|
|
|
46
51
|
}
|
|
47
52
|
setMode(mode) {
|
|
48
53
|
this.mode = mode;
|
|
49
|
-
const kernel = makeLowPassKernel(this.outRate, mode.maxF,
|
|
54
|
+
const kernel = makeLowPassKernel(this.outRate, mode.maxF, this.rfTaps);
|
|
50
55
|
this.filterI.setCoefficients(kernel);
|
|
51
56
|
this.filterQ.setCoefficients(kernel);
|
|
52
57
|
this.demodulator.setMaxDeviation(mode.maxF / this.outRate);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-nbfm.js","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"AAAA,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,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"demod-nbfm.js","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,15 @@ export type ModeSSB = {
|
|
|
5
5
|
bandwidth: number;
|
|
6
6
|
squelch: number;
|
|
7
7
|
};
|
|
8
|
+
/** Mode options for SSB. */
|
|
9
|
+
export type OptionsSSB = {
|
|
10
|
+
/** Number of taps for the downsampler filter. Must be an odd number. 151 by default. */
|
|
11
|
+
downsamplerTaps?: number;
|
|
12
|
+
/** Number of taps for the RF filter. Must be an odd number. 151 by default. */
|
|
13
|
+
rfTaps?: number;
|
|
14
|
+
/** Number of taps for the Hilbert filter. Must be an odd number. 151 by default. */
|
|
15
|
+
hilbertTaps?: number;
|
|
16
|
+
};
|
|
8
17
|
/** A demodulator for single-sideband modulated signals. */
|
|
9
18
|
export declare class DemodSSB implements Demod<ModeSSB> {
|
|
10
19
|
private outRate;
|
|
@@ -14,7 +23,8 @@ export declare class DemodSSB implements Demod<ModeSSB> {
|
|
|
14
23
|
* @param outRate The sample rate of the output audio.
|
|
15
24
|
* @param mode The mode to use initially.
|
|
16
25
|
*/
|
|
17
|
-
constructor(inRate: number, outRate: number, mode: ModeSSB);
|
|
26
|
+
constructor(inRate: number, outRate: number, mode: ModeSSB, options?: OptionsSSB);
|
|
27
|
+
private rfTaps;
|
|
18
28
|
private shifter;
|
|
19
29
|
private downsampler;
|
|
20
30
|
private filter;
|
|
@@ -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":"AAoBA,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;CACtB,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;IAoBtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,IAAI,OAAO;IAIlB,OAAO,CAAC,IAAI,EAAE,OAAO;IAUrB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// Copyright 2026 Jacobo Tarrio Barreiro. All rights reserved.
|
|
1
2
|
// Copyright 2014 Google Inc. All rights reserved.
|
|
2
3
|
//
|
|
3
4
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -26,16 +27,20 @@ export class DemodSSB {
|
|
|
26
27
|
* @param outRate The sample rate of the output audio.
|
|
27
28
|
* @param mode The mode to use initially.
|
|
28
29
|
*/
|
|
29
|
-
constructor(inRate, outRate, mode) {
|
|
30
|
+
constructor(inRate, outRate, mode, options) {
|
|
30
31
|
this.outRate = outRate;
|
|
31
32
|
this.mode = mode;
|
|
33
|
+
const downsamplerTaps = options?.downsamplerTaps || 151;
|
|
34
|
+
this.rfTaps = options?.rfTaps || 151;
|
|
35
|
+
const hilbertTaps = options?.hilbertTaps || 151;
|
|
32
36
|
this.shifter = new FrequencyShifter(inRate);
|
|
33
|
-
this.downsampler = new ComplexDownsampler(inRate, outRate,
|
|
34
|
-
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2,
|
|
37
|
+
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
38
|
+
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, this.rfTaps);
|
|
35
39
|
this.filter = new FIRFilter(kernel);
|
|
36
|
-
this.demodulator = new SSBDemodulator(mode.scheme == "USB" ? Sideband.Upper : Sideband.Lower);
|
|
40
|
+
this.demodulator = new SSBDemodulator(mode.scheme == "USB" ? Sideband.Upper : Sideband.Lower, hilbertTaps);
|
|
37
41
|
this.agc = new AGC(outRate, 3);
|
|
38
42
|
}
|
|
43
|
+
rfTaps;
|
|
39
44
|
shifter;
|
|
40
45
|
downsampler;
|
|
41
46
|
filter;
|
|
@@ -46,7 +51,7 @@ export class DemodSSB {
|
|
|
46
51
|
}
|
|
47
52
|
setMode(mode) {
|
|
48
53
|
this.mode = mode;
|
|
49
|
-
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2,
|
|
54
|
+
const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, this.rfTaps);
|
|
50
55
|
this.filter.setCoefficients(kernel);
|
|
51
56
|
}
|
|
52
57
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-ssb.js","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"AAAA,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,wBAAwB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"demod-ssb.js","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,21 @@ export type ModeWBFM = {
|
|
|
4
4
|
scheme: "WBFM";
|
|
5
5
|
stereo: boolean;
|
|
6
6
|
};
|
|
7
|
+
/** Mode options for WBFM. */
|
|
8
|
+
export type OptionsWBFM = {
|
|
9
|
+
/**
|
|
10
|
+
* The time constant for the deemphasizer, in microseconds. 50 by default.
|
|
11
|
+
*
|
|
12
|
+
* This should be 75 for the US and South Korea, 50 everywhere else.
|
|
13
|
+
*/
|
|
14
|
+
deemphasizerTc?: number;
|
|
15
|
+
/** Number of taps for the downsampler filter. Must be an odd number. 151 by default. */
|
|
16
|
+
downsamplerTaps?: number;
|
|
17
|
+
/** Number of taps for the RF filter. Must be an odd number. 151 by default. */
|
|
18
|
+
rfTaps?: number;
|
|
19
|
+
/** Number of taps for the audio filter. Must be an odd number. 41 by default. */
|
|
20
|
+
audioTaps?: number;
|
|
21
|
+
};
|
|
7
22
|
/** A demodulator for wideband FM signals. */
|
|
8
23
|
export declare class DemodWBFM implements Demod<ModeWBFM> {
|
|
9
24
|
private mode;
|
|
@@ -11,8 +26,9 @@ export declare class DemodWBFM implements Demod<ModeWBFM> {
|
|
|
11
26
|
* @param inRate The sample rate of the input samples.
|
|
12
27
|
* @param outRate The sample rate of the output samples.
|
|
13
28
|
* @param mode The mode to use initially.
|
|
29
|
+
* @param options Options for the demodulator.
|
|
14
30
|
*/
|
|
15
|
-
constructor(inRate: number, outRate: number, mode: ModeWBFM);
|
|
31
|
+
constructor(inRate: number, outRate: number, mode: ModeWBFM, options?: OptionsWBFM);
|
|
16
32
|
private stage1;
|
|
17
33
|
private stage2;
|
|
18
34
|
getMode(): ModeWBFM;
|
|
@@ -38,8 +54,9 @@ export declare class DemodWBFMStage1 implements Demod<ModeWBFM> {
|
|
|
38
54
|
* @param inRate The sample rate of the input samples.
|
|
39
55
|
* @param outRate The sample rate of the output audio.
|
|
40
56
|
* @param mode The mode to use initially.
|
|
57
|
+
* @param options Options for the demodulator.
|
|
41
58
|
*/
|
|
42
|
-
constructor(inRate: number, outRate: number, mode: ModeWBFM);
|
|
59
|
+
constructor(inRate: number, outRate: number, mode: ModeWBFM, options?: OptionsWBFM);
|
|
43
60
|
private shifter;
|
|
44
61
|
private downsampler?;
|
|
45
62
|
private filterI;
|
|
@@ -67,8 +84,9 @@ export declare class DemodWBFMStage2 implements Demod<ModeWBFM> {
|
|
|
67
84
|
* @param inRate The sample rate of the input samples.
|
|
68
85
|
* @param outRate The sample rate of the output audio.
|
|
69
86
|
* @param mode The mode to use initially.
|
|
87
|
+
* @param options Options for the demodulator.
|
|
70
88
|
*/
|
|
71
|
-
constructor(inRate: number, outRate: number, mode: ModeWBFM);
|
|
89
|
+
constructor(inRate: number, outRate: number, mode: ModeWBFM, options?: OptionsWBFM);
|
|
72
90
|
private monoSampler;
|
|
73
91
|
private stereoSampler;
|
|
74
92
|
private stereoSeparator;
|
|
@@ -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":"AAoBA,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;CACpB,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;IAmBvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAY;IAC3B,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;CAiBf;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;IAavB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;CA0BhD;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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// Copyright 2026 Jacobo Tarrio Barreiro. All rights reserved.
|
|
1
2
|
// Copyright 2013 Google Inc. All rights reserved.
|
|
2
3
|
//
|
|
3
4
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -24,12 +25,13 @@ export class DemodWBFM {
|
|
|
24
25
|
* @param inRate The sample rate of the input samples.
|
|
25
26
|
* @param outRate The sample rate of the output samples.
|
|
26
27
|
* @param mode The mode to use initially.
|
|
28
|
+
* @param options Options for the demodulator.
|
|
27
29
|
*/
|
|
28
|
-
constructor(inRate, outRate, mode) {
|
|
30
|
+
constructor(inRate, outRate, mode, options) {
|
|
29
31
|
this.mode = mode;
|
|
30
32
|
let interRate = Math.min(inRate, 336000);
|
|
31
|
-
this.stage1 = new DemodWBFMStage1(inRate, interRate, mode);
|
|
32
|
-
this.stage2 = new DemodWBFMStage2(interRate, outRate, mode);
|
|
33
|
+
this.stage1 = new DemodWBFMStage1(inRate, interRate, mode, options);
|
|
34
|
+
this.stage2 = new DemodWBFMStage2(interRate, outRate, mode, options);
|
|
33
35
|
}
|
|
34
36
|
stage1;
|
|
35
37
|
stage2;
|
|
@@ -67,16 +69,19 @@ export class DemodWBFMStage1 {
|
|
|
67
69
|
* @param inRate The sample rate of the input samples.
|
|
68
70
|
* @param outRate The sample rate of the output audio.
|
|
69
71
|
* @param mode The mode to use initially.
|
|
72
|
+
* @param options Options for the demodulator.
|
|
70
73
|
*/
|
|
71
|
-
constructor(inRate, outRate, mode) {
|
|
74
|
+
constructor(inRate, outRate, mode, options) {
|
|
72
75
|
this.outRate = outRate;
|
|
73
76
|
this.mode = mode;
|
|
74
77
|
const maxF = 75000;
|
|
78
|
+
const downsamplerTaps = options?.downsamplerTaps || 151;
|
|
79
|
+
const rfTaps = options?.rfTaps || 151;
|
|
75
80
|
this.shifter = new FrequencyShifter(inRate);
|
|
76
81
|
if (inRate != outRate) {
|
|
77
|
-
this.downsampler = new ComplexDownsampler(inRate, outRate,
|
|
82
|
+
this.downsampler = new ComplexDownsampler(inRate, outRate, downsamplerTaps);
|
|
78
83
|
}
|
|
79
|
-
const kernel = makeLowPassKernel(outRate, maxF,
|
|
84
|
+
const kernel = makeLowPassKernel(outRate, maxF, rfTaps);
|
|
80
85
|
this.filterI = new FIRFilter(kernel);
|
|
81
86
|
this.filterQ = new FIRFilter(kernel);
|
|
82
87
|
this.demodulator = new FMDemodulator(maxF / outRate);
|
|
@@ -128,13 +133,15 @@ export class DemodWBFMStage2 {
|
|
|
128
133
|
* @param inRate The sample rate of the input samples.
|
|
129
134
|
* @param outRate The sample rate of the output audio.
|
|
130
135
|
* @param mode The mode to use initially.
|
|
136
|
+
* @param options Options for the demodulator.
|
|
131
137
|
*/
|
|
132
|
-
constructor(inRate, outRate, mode) {
|
|
138
|
+
constructor(inRate, outRate, mode, options) {
|
|
133
139
|
this.mode = mode;
|
|
134
140
|
const pilotF = 19000;
|
|
135
|
-
const deemphTc = 50;
|
|
136
|
-
|
|
137
|
-
this.
|
|
141
|
+
const deemphTc = options?.deemphasizerTc === undefined ? 50 : options.deemphasizerTc;
|
|
142
|
+
const audioTaps = options?.audioTaps || 41;
|
|
143
|
+
this.monoSampler = new RealDownsampler(inRate, outRate, audioTaps);
|
|
144
|
+
this.stereoSampler = new RealDownsampler(inRate, outRate, audioTaps);
|
|
138
145
|
this.stereoSeparator = new StereoSeparator(inRate, pilotF);
|
|
139
146
|
this.leftDeemph = new Deemphasizer(outRate, deemphTc);
|
|
140
147
|
this.rightDeemph = new Deemphasizer(outRate, deemphTc);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AAAA,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,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9E,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;
|
|
1
|
+
{"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { Mode } from "./modes.js";
|
|
2
2
|
import { Player } from "./player.js";
|
|
3
3
|
import { SampleReceiver } from "../radio.js";
|
|
4
|
+
type DemodulatorOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* The player to use. If undefined, an AudioPlayer will be used.
|
|
7
|
+
*/
|
|
8
|
+
player?: Player;
|
|
9
|
+
/**
|
|
10
|
+
* Options for each mode. This is an object whose keys are registered mode names
|
|
11
|
+
* and the values are objects sent to the mode constructor.
|
|
12
|
+
*/
|
|
13
|
+
modeOptions?: {
|
|
14
|
+
[key: Mode["scheme"]]: object;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
4
17
|
/**
|
|
5
18
|
* A class that takes a stream of radio samples and demodulates
|
|
6
19
|
* it into an audio signal.
|
|
@@ -13,6 +26,10 @@ import { SampleReceiver } from "../radio.js";
|
|
|
13
26
|
* to observe the demodulator's state.
|
|
14
27
|
*/
|
|
15
28
|
export declare class Demodulator extends EventTarget implements SampleReceiver {
|
|
29
|
+
/**
|
|
30
|
+
* @param options Options for the demodulator.
|
|
31
|
+
*/
|
|
32
|
+
constructor(options?: DemodulatorOptions);
|
|
16
33
|
/**
|
|
17
34
|
* @param player The player to use. If undefined, an AudioPlayer will be used.
|
|
18
35
|
*/
|
|
@@ -23,6 +40,8 @@ export declare class Demodulator extends EventTarget implements SampleReceiver {
|
|
|
23
40
|
private player;
|
|
24
41
|
/** Controller that silences the output if the SNR is low. */
|
|
25
42
|
private squelchControl;
|
|
43
|
+
/** Options for the different modes. */
|
|
44
|
+
private modeOptions;
|
|
26
45
|
/** The modulation parameters as a Mode object. */
|
|
27
46
|
private mode;
|
|
28
47
|
/** The demodulator class. */
|
|
@@ -59,4 +78,5 @@ export declare class Demodulator extends EventTarget implements SampleReceiver {
|
|
|
59
78
|
export declare class StereoStatusEvent extends CustomEvent<boolean> {
|
|
60
79
|
constructor(stereo: boolean);
|
|
61
80
|
}
|
|
81
|
+
export {};
|
|
62
82
|
//# 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,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,qBAAa,WAAY,SAAQ,WAAY,YAAW,cAAc;IACpE;;OAEG;gBACS,MAAM,CAAC,EAAE,MAAM;
|
|
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,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,KAAK,kBAAkB,GAAG;IACxB;;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;IACxC;;OAEG;gBACS,MAAM,CAAC,EAAE,MAAM;IAkB3B,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,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAmBzE,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"}
|
|
@@ -25,14 +25,16 @@ import { AudioPlayer } from "../players/audioplayer.js";
|
|
|
25
25
|
* to observe the demodulator's state.
|
|
26
26
|
*/
|
|
27
27
|
export class Demodulator extends EventTarget {
|
|
28
|
-
|
|
29
|
-
* @param player The player to use. If undefined, an AudioPlayer will be used.
|
|
30
|
-
*/
|
|
31
|
-
constructor(player) {
|
|
28
|
+
constructor(playerOrOptions) {
|
|
32
29
|
super();
|
|
30
|
+
const player = playerOrOptions !== undefined && Object.hasOwn(playerOrOptions, "play")
|
|
31
|
+
? playerOrOptions
|
|
32
|
+
: playerOrOptions?.player;
|
|
33
|
+
const modeOptions = playerOrOptions?.modeOptions;
|
|
33
34
|
this.inRate = 1024000;
|
|
34
|
-
this.player = player
|
|
35
|
+
this.player = player || new AudioPlayer();
|
|
35
36
|
this.squelchControl = new SquelchControl(this.player.sampleRate);
|
|
37
|
+
this.modeOptions = modeOptions || {};
|
|
36
38
|
this.mode = getMode("WBFM");
|
|
37
39
|
this.demod = this.getScheme(this.mode);
|
|
38
40
|
this.frequencyOffset = 0;
|
|
@@ -44,6 +46,8 @@ export class Demodulator extends EventTarget {
|
|
|
44
46
|
player;
|
|
45
47
|
/** Controller that silences the output if the SNR is low. */
|
|
46
48
|
squelchControl;
|
|
49
|
+
/** Options for the different modes. */
|
|
50
|
+
modeOptions;
|
|
47
51
|
/** The modulation parameters as a Mode object. */
|
|
48
52
|
mode;
|
|
49
53
|
/** The demodulator class. */
|
|
@@ -89,7 +93,7 @@ export class Demodulator extends EventTarget {
|
|
|
89
93
|
demod.setMode(mode);
|
|
90
94
|
return demod;
|
|
91
95
|
}
|
|
92
|
-
return getDemod(this.inRate, this.player.sampleRate, mode);
|
|
96
|
+
return getDemod(this.inRate, this.player.sampleRate, mode, this.modeOptions[mode.scheme]);
|
|
93
97
|
}
|
|
94
98
|
/** Changes the sample rate. */
|
|
95
99
|
setSampleRate(sampleRate) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-demodulator.js","sourceRoot":"","sources":["../../src/demod/empty-demodulator.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,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"empty-demodulator.js","sourceRoot":"","sources":["../../src/demod/empty-demodulator.ts"],"names":[],"mappings":"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"}
|
package/dist/demod/modes.d.ts
CHANGED
|
@@ -66,7 +66,7 @@ export declare function getSchemes(): Array<string>;
|
|
|
66
66
|
/** Returns the default mode for the given scheme name. */
|
|
67
67
|
export declare function getMode(scheme: string): Mode;
|
|
68
68
|
/** Returns a Scheme object for the given mode. */
|
|
69
|
-
export declare function getDemod<M extends Mode>(inRate: number, outRate: number, mode: M): Demod<M>;
|
|
69
|
+
export declare function getDemod<M extends Mode>(inRate: number, outRate: number, mode: M, options?: object): Demod<M>;
|
|
70
70
|
/** Returns accessors for the mode's or scheme's parameters. */
|
|
71
71
|
export declare function modeParameters<M extends Mode>(mode: M): Configurator<M>;
|
|
72
72
|
export declare function modeParameters(scheme: string): Configurator<Mode>;
|
|
@@ -101,7 +101,7 @@ export declare abstract class Configurator<M extends Mode> {
|
|
|
101
101
|
setSquelch(squelch: number): Configurator<M>;
|
|
102
102
|
}
|
|
103
103
|
/** The type for a constructor of a Scheme object. */
|
|
104
|
-
export type DemodConstructor<M extends Mode> = new (inRate: number, outRate: number, mode: M) => Demod<M>;
|
|
104
|
+
export type DemodConstructor<M extends Mode> = new (inRate: number, outRate: number, mode: M, options?: object) => Demod<M>;
|
|
105
105
|
/** The type for a constructor of a Configurator object. */
|
|
106
106
|
export type ConfigConstructor<M extends Mode> = new (base: M | string) => Configurator<M>;
|
|
107
107
|
//# sourceMappingURL=modes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../src/demod/modes.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,8DAA8D;AAC9D,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,IAAI;IACnC,2CAA2C;IAC3C,OAAO,IAAI,CAAC,CAAC;IACb,iDAAiD;IACjD,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC;CAC/E;AAED,0BAA0B;AAC1B,MAAM,MAAM,WAAW,GAAG;IACxB,oBAAoB;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,qBAAqB;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,6BAA6B;AAC7B,MAAM,MAAM,IAAI,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,IAAI,EAC1C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,EACjB,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC1B,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,QAG7B;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,QAE3C;AAED,qGAAqG;AACrG,wBAAgB,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAE1C;AAED,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG5C;AAED,kDAAkD;AAClD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,IAAI,EACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../src/demod/modes.ts"],"names":[],"mappings":"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"}
|
package/dist/demod/modes.js
CHANGED
|
@@ -34,9 +34,9 @@ export function getMode(scheme) {
|
|
|
34
34
|
return new reg.config(scheme).mode;
|
|
35
35
|
}
|
|
36
36
|
/** Returns a Scheme object for the given mode. */
|
|
37
|
-
export function getDemod(inRate, outRate, mode) {
|
|
37
|
+
export function getDemod(inRate, outRate, mode, options) {
|
|
38
38
|
let reg = getRegisteredDemod(mode);
|
|
39
|
-
return new reg.demod(inRate, outRate, mode);
|
|
39
|
+
return new reg.demod(inRate, outRate, mode, options);
|
|
40
40
|
}
|
|
41
41
|
export function modeParameters(mode) {
|
|
42
42
|
let reg = getRegisteredDemod(mode);
|
package/dist/demod/modes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/demod/modes.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;AA0DjC;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAiB,EACjB,KAA0B,EAC1B,MAA4B;IAE5B,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,IAAI,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,OAAe,EACf,IAAO;
|
|
1
|
+
{"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/demod/modes.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,9 @@ export declare enum Sideband {
|
|
|
7
7
|
export declare class SSBDemodulator {
|
|
8
8
|
/**
|
|
9
9
|
* @param sideband The sideband to demodulate.
|
|
10
|
+
* @param kernelLen The length of the Hilbert filter kernel to use.
|
|
10
11
|
*/
|
|
11
|
-
constructor(sideband: Sideband);
|
|
12
|
+
constructor(sideband: Sideband, kernelLen: number);
|
|
12
13
|
private filterDelay;
|
|
13
14
|
private filterHilbert;
|
|
14
15
|
private hilbertMul;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demodulators.d.ts","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"AAmBA,kCAAkC;AAClC,oBAAY,QAAQ;IAClB,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,iDAAiD;AACjD,qBAAa,cAAc;IACzB
|
|
1
|
+
{"version":3,"file":"demodulators.d.ts","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"AAmBA,kCAAkC;AAClC,oBAAY,QAAQ;IAClB,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,iDAAiD;AACjD,qBAAa,cAAc;IACzB;;;OAGG;gBACS,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;IAOjD,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAS;IAE3B,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAS/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;CA2C/D;AAED,0EAA0E;AAC1E,qBAAa,eAAe;IAC1B;;;OAGG;gBACS,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAiBjD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAO;IAE/B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,QAAQ,CAAe;IAE/B;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE;CA2BxE"}
|
package/dist/dsp/demodulators.js
CHANGED
|
@@ -25,9 +25,9 @@ export var Sideband;
|
|
|
25
25
|
export class SSBDemodulator {
|
|
26
26
|
/**
|
|
27
27
|
* @param sideband The sideband to demodulate.
|
|
28
|
+
* @param kernelLen The length of the Hilbert filter kernel to use.
|
|
28
29
|
*/
|
|
29
|
-
constructor(sideband) {
|
|
30
|
-
const kernelLen = 151;
|
|
30
|
+
constructor(sideband, kernelLen) {
|
|
31
31
|
let hilbert = makeHilbertKernel(kernelLen);
|
|
32
32
|
this.filterDelay = new FIRFilter(hilbert);
|
|
33
33
|
this.filterHilbert = new FIRFilter(hilbert);
|
|
@@ -1 +1 @@
|
|
|
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,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,kCAAkC;AAClC,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,yCAAK,CAAA;IACL,yCAAK,CAAA;AACP,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAED,iDAAiD;AACjD,MAAM,OAAO,cAAc;IACzB
|
|
1
|
+
{"version":3,"file":"demodulators.js","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jtarrio/webrtlsdr",
|
|
3
3
|
"description": "Access RTL-SDR devices and receive and demodulate radio signals from your web application",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.5",
|
|
5
5
|
"author": "Jacobo Tarrio <jtarrio@gmail.com>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|