@jtarrio/webrtlsdr 1.1.1 → 2.0.0-pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/demod/demod-am.d.ts +45 -0
  2. package/dist/demod/demod-am.d.ts.map +1 -0
  3. package/dist/demod/{scheme-am.js → demod-am.js} +36 -3
  4. package/dist/demod/demod-am.js.map +1 -0
  5. package/dist/demod/demod-cw.d.ts +36 -0
  6. package/dist/demod/demod-cw.d.ts.map +1 -0
  7. package/dist/demod/{scheme-cw.js → demod-cw.js} +30 -2
  8. package/dist/demod/demod-cw.js.map +1 -0
  9. package/dist/demod/demod-nbfm.d.ts +45 -0
  10. package/dist/demod/demod-nbfm.d.ts.map +1 -0
  11. package/dist/demod/{scheme-nbfm.js → demod-nbfm.js} +36 -3
  12. package/dist/demod/demod-nbfm.js.map +1 -0
  13. package/dist/demod/demod-ssb.d.ts +45 -0
  14. package/dist/demod/demod-ssb.d.ts.map +1 -0
  15. package/dist/demod/{scheme-ssb.js → demod-ssb.js} +36 -4
  16. package/dist/demod/demod-ssb.js.map +1 -0
  17. package/dist/demod/demod-wbfm.d.ts +95 -0
  18. package/dist/demod/demod-wbfm.d.ts.map +1 -0
  19. package/dist/demod/demod-wbfm.js +205 -0
  20. package/dist/demod/demod-wbfm.js.map +1 -0
  21. package/dist/demod/demodulator.d.ts +2 -62
  22. package/dist/demod/demodulator.d.ts.map +1 -1
  23. package/dist/demod/demodulator.js +15 -137
  24. package/dist/demod/demodulator.js.map +1 -1
  25. package/dist/demod/empty-demodulator.d.ts +62 -0
  26. package/dist/demod/empty-demodulator.d.ts.map +1 -0
  27. package/dist/demod/empty-demodulator.js +145 -0
  28. package/dist/demod/empty-demodulator.js.map +1 -0
  29. package/dist/demod/modes.d.ts +76 -65
  30. package/dist/demod/modes.d.ts.map +1 -1
  31. package/dist/demod/modes.js +59 -99
  32. package/dist/demod/modes.js.map +1 -1
  33. package/package.json +1 -1
  34. package/dist/demod/scheme-am.d.ts +0 -32
  35. package/dist/demod/scheme-am.d.ts.map +0 -1
  36. package/dist/demod/scheme-am.js.map +0 -1
  37. package/dist/demod/scheme-cw.d.ts +0 -22
  38. package/dist/demod/scheme-cw.d.ts.map +0 -1
  39. package/dist/demod/scheme-cw.js.map +0 -1
  40. package/dist/demod/scheme-nbfm.d.ts +0 -32
  41. package/dist/demod/scheme-nbfm.d.ts.map +0 -1
  42. package/dist/demod/scheme-nbfm.js.map +0 -1
  43. package/dist/demod/scheme-ssb.d.ts +0 -33
  44. package/dist/demod/scheme-ssb.d.ts.map +0 -1
  45. package/dist/demod/scheme-ssb.js.map +0 -1
  46. package/dist/demod/scheme-wbfm.d.ts +0 -38
  47. package/dist/demod/scheme-wbfm.d.ts.map +0 -1
  48. package/dist/demod/scheme-wbfm.js +0 -106
  49. package/dist/demod/scheme-wbfm.js.map +0 -1
@@ -0,0 +1,45 @@
1
+ import { Configurator, Demod, Demodulated } from "./modes";
2
+ /** Mode parameters for AM. */
3
+ export type ModeAM = {
4
+ scheme: "AM";
5
+ bandwidth: number;
6
+ squelch: number;
7
+ };
8
+ /** A demodulator for amplitude modulated signals. */
9
+ export declare class DemodAM implements Demod<ModeAM> {
10
+ private outRate;
11
+ private mode;
12
+ /**
13
+ * @param inRate The sample rate of the input samples.
14
+ * @param outRate The sample rate of the output audio.
15
+ * @param mode The mode to use initially.
16
+ */
17
+ constructor(inRate: number, outRate: number, mode: ModeAM);
18
+ private shifter;
19
+ private downsampler;
20
+ private filterI;
21
+ private filterQ;
22
+ private demodulator;
23
+ getMode(): ModeAM;
24
+ setMode(mode: ModeAM): void;
25
+ /**
26
+ * Demodulates the signal.
27
+ * @param samplesI The I components of the samples.
28
+ * @param samplesQ The Q components of the samples.
29
+ * @param freqOffset The offset of the signal in the samples.
30
+ * @returns The demodulated audio signal.
31
+ */
32
+ demodulate(samplesI: Float32Array, samplesQ: Float32Array, freqOffset: number): Demodulated;
33
+ }
34
+ /** Configurator for the AM mode. */
35
+ export declare class ConfigAM extends Configurator<ModeAM> {
36
+ constructor(mode: ModeAM | string);
37
+ protected create(): ModeAM;
38
+ hasBandwidth(): boolean;
39
+ getBandwidth(): number;
40
+ setBandwidth(bandwidth: number): ConfigAM;
41
+ hasSquelch(): boolean;
42
+ getSquelch(): number;
43
+ setSquelch(squelch: number): ConfigAM;
44
+ }
45
+ //# sourceMappingURL=demod-am.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demod-am.d.ts","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3D,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,qDAAqD;AACrD,qBAAa,OAAQ,YAAW,KAAK,CAAC,MAAM,CAAC;IAMf,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,IAAI;IALjE;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM,EAAU,IAAI,EAAE,MAAM;IASzE,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;IAOpB;;;;;;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"}
@@ -16,14 +16,15 @@ import { AMDemodulator } from "../dsp/demodulators";
16
16
  import { FrequencyShifter, FIRFilter } from "../dsp/filters";
17
17
  import { getPower } from "../dsp/power";
18
18
  import { ComplexDownsampler } from "../dsp/resamplers";
19
+ import { Configurator } from "./modes";
19
20
  /** A demodulator for amplitude modulated signals. */
20
- export class SchemeAM {
21
+ export class DemodAM {
21
22
  outRate;
22
23
  mode;
23
24
  /**
24
25
  * @param inRate The sample rate of the input samples.
25
26
  * @param outRate The sample rate of the output audio.
26
- * @param bandwidth The bandwidth of the input signal.
27
+ * @param mode The mode to use initially.
27
28
  */
28
29
  constructor(inRate, outRate, mode) {
29
30
  this.outRate = outRate;
@@ -72,4 +73,36 @@ export class SchemeAM {
72
73
  };
73
74
  }
74
75
  }
75
- //# sourceMappingURL=scheme-am.js.map
76
+ /** Configurator for the AM mode. */
77
+ export class ConfigAM extends Configurator {
78
+ constructor(mode) {
79
+ super(mode);
80
+ }
81
+ create() {
82
+ return { scheme: "AM", bandwidth: 15000, squelch: 0 };
83
+ }
84
+ hasBandwidth() {
85
+ return true;
86
+ }
87
+ getBandwidth() {
88
+ return this.mode.bandwidth;
89
+ }
90
+ setBandwidth(bandwidth) {
91
+ this.mode = {
92
+ ...this.mode,
93
+ bandwidth: Math.max(250, Math.min(bandwidth, 30000)),
94
+ };
95
+ return this;
96
+ }
97
+ hasSquelch() {
98
+ return true;
99
+ }
100
+ getSquelch() {
101
+ return this.mode.squelch;
102
+ }
103
+ setSquelch(squelch) {
104
+ this.mode = { ...this.mode, squelch: Math.max(0, Math.min(squelch, 6)) };
105
+ return this;
106
+ }
107
+ }
108
+ //# sourceMappingURL=demod-am.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demod-am.js","sourceRoot":"","sources":["../../src/demod/demod-am.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { Configurator, Demod, Demodulated } from "./modes";
2
+ /** Mode parameters for CW. */
3
+ export type ModeCW = {
4
+ scheme: "CW";
5
+ bandwidth: number;
6
+ };
7
+ /** A demodulator for continuous wave signals. */
8
+ export declare class DemodCW implements Demod<ModeCW> {
9
+ private outRate;
10
+ private mode;
11
+ /**
12
+ * @param inRate The sample rate of the input samples.
13
+ * @param outRate The sample rate of the output audio.
14
+ * @param mode The mode to use initially.
15
+ */
16
+ constructor(inRate: number, outRate: number, mode: ModeCW);
17
+ private shifter;
18
+ private downsampler;
19
+ private filterI;
20
+ private filterQ;
21
+ private toneShifter;
22
+ private agc;
23
+ getMode(): ModeCW;
24
+ setMode(mode: ModeCW): void;
25
+ /** Demodulates the given I/Q samples into the real output. */
26
+ demodulate(samplesI: Float32Array, samplesQ: Float32Array, freqOffset: number): Demodulated;
27
+ }
28
+ /** Configurator for the CW mode. */
29
+ export declare class ConfigCW extends Configurator<ModeCW> {
30
+ constructor(mode: ModeCW | string);
31
+ protected create(): ModeCW;
32
+ hasBandwidth(): boolean;
33
+ getBandwidth(): number;
34
+ setBandwidth(bandwidth: number): ConfigCW;
35
+ }
36
+ //# sourceMappingURL=demod-cw.d.ts.map
@@ -0,0 +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,SAAS,CAAC;AAE3D,8BAA8B;AAC9B,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAKzD,iDAAiD;AACjD,qBAAa,OAAQ,YAAW,KAAK,CAAC,MAAM,CAAC;IAMf,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,IAAI;IALjE;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM,EAAU,IAAI,EAAE,MAAM;IAUzE,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,GAAG,CAAM;IAEjB,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,IAAI,EAAE,MAAM;IAOpB,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"}
@@ -15,12 +15,18 @@ import { makeLowPassKernel } from "../dsp/coefficients";
15
15
  import { AGC, FIRFilter, FrequencyShifter } from "../dsp/filters";
16
16
  import { getPower } from "../dsp/power";
17
17
  import { ComplexDownsampler } from "../dsp/resamplers";
18
+ import { Configurator } from "./modes";
18
19
  /** Output frequency of the zero-beat CW signals. */
19
20
  const ToneFrequency = 600;
20
21
  /** A demodulator for continuous wave signals. */
21
- export class SchemeCW {
22
+ export class DemodCW {
22
23
  outRate;
23
24
  mode;
25
+ /**
26
+ * @param inRate The sample rate of the input samples.
27
+ * @param outRate The sample rate of the output audio.
28
+ * @param mode The mode to use initially.
29
+ */
24
30
  constructor(inRate, outRate, mode) {
25
31
  this.outRate = outRate;
26
32
  this.mode = mode;
@@ -65,4 +71,26 @@ export class SchemeCW {
65
71
  };
66
72
  }
67
73
  }
68
- //# sourceMappingURL=scheme-cw.js.map
74
+ /** Configurator for the CW mode. */
75
+ export class ConfigCW extends Configurator {
76
+ constructor(mode) {
77
+ super(mode);
78
+ }
79
+ create() {
80
+ return { scheme: "CW", bandwidth: 50 };
81
+ }
82
+ hasBandwidth() {
83
+ return true;
84
+ }
85
+ getBandwidth() {
86
+ return this.mode.bandwidth;
87
+ }
88
+ setBandwidth(bandwidth) {
89
+ this.mode = {
90
+ ...this.mode,
91
+ bandwidth: Math.max(5, Math.min(bandwidth, 1000)),
92
+ };
93
+ return this;
94
+ }
95
+ }
96
+ //# sourceMappingURL=demod-cw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demod-cw.js","sourceRoot":"","sources":["../../src/demod/demod-cw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { Configurator, Demod, Demodulated } from "./modes";
2
+ /** Mode parameters for NBFM. */
3
+ export type ModeNBFM = {
4
+ scheme: "NBFM";
5
+ maxF: number;
6
+ squelch: number;
7
+ };
8
+ /** A demodulator for narrowband FM signals. */
9
+ export declare class DemodNBFM implements Demod<ModeNBFM> {
10
+ private outRate;
11
+ private mode;
12
+ /**
13
+ * @param inRate The sample rate of the input samples.
14
+ * @param outRate The sample rate of the output audio.
15
+ * @param mode The mode to use initially.
16
+ */
17
+ constructor(inRate: number, outRate: number, mode: ModeNBFM);
18
+ private shifter;
19
+ private downsampler;
20
+ private filterI;
21
+ private filterQ;
22
+ private demodulator;
23
+ getMode(): ModeNBFM;
24
+ setMode(mode: ModeNBFM): void;
25
+ /**
26
+ * Demodulates the signal.
27
+ * @param samplesI The I components of the samples.
28
+ * @param samplesQ The Q components of the samples.
29
+ * @param freqOffset The offset of the signal in the samples.
30
+ * @returns The demodulated audio signal.
31
+ */
32
+ demodulate(samplesI: Float32Array, samplesQ: Float32Array, freqOffset: number): Demodulated;
33
+ }
34
+ /** Configurator for the NBFM mode. */
35
+ export declare class ConfigNBFM extends Configurator<ModeNBFM> {
36
+ constructor(mode: ModeNBFM | string);
37
+ protected create(): ModeNBFM;
38
+ hasBandwidth(): boolean;
39
+ getBandwidth(): number;
40
+ setBandwidth(bandwidth: number): ConfigNBFM;
41
+ hasSquelch(): boolean;
42
+ getSquelch(): number;
43
+ setSquelch(squelch: number): ConfigNBFM;
44
+ }
45
+ //# sourceMappingURL=demod-nbfm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demod-nbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3D,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,+CAA+C;AAC/C,qBAAa,SAAU,YAAW,KAAK,CAAC,QAAQ,CAAC;IAMnB,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,IAAI;IALjE;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM,EAAU,IAAI,EAAE,QAAQ;IAS3E,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"}
@@ -16,14 +16,15 @@ import { FMDemodulator } from "../dsp/demodulators";
16
16
  import { FIRFilter, FrequencyShifter } from "../dsp/filters";
17
17
  import { getPower } from "../dsp/power";
18
18
  import { ComplexDownsampler } from "../dsp/resamplers";
19
+ import { Configurator } from "./modes";
19
20
  /** A demodulator for narrowband FM signals. */
20
- export class SchemeNBFM {
21
+ export class DemodNBFM {
21
22
  outRate;
22
23
  mode;
23
24
  /**
24
25
  * @param inRate The sample rate of the input samples.
25
26
  * @param outRate The sample rate of the output audio.
26
- * @param maxF The frequency shift for maximum amplitude.
27
+ * @param mode The mode to use initially.
27
28
  */
28
29
  constructor(inRate, outRate, mode) {
29
30
  this.outRate = outRate;
@@ -73,4 +74,36 @@ export class SchemeNBFM {
73
74
  };
74
75
  }
75
76
  }
76
- //# sourceMappingURL=scheme-nbfm.js.map
77
+ /** Configurator for the NBFM mode. */
78
+ export class ConfigNBFM extends Configurator {
79
+ constructor(mode) {
80
+ super(mode);
81
+ }
82
+ create() {
83
+ return { scheme: "NBFM", maxF: 5000, squelch: 0 };
84
+ }
85
+ hasBandwidth() {
86
+ return true;
87
+ }
88
+ getBandwidth() {
89
+ return 2 * this.mode.maxF;
90
+ }
91
+ setBandwidth(bandwidth) {
92
+ this.mode = {
93
+ ...this.mode,
94
+ maxF: Math.max(125, Math.min(bandwidth / 2, 15000)),
95
+ };
96
+ return this;
97
+ }
98
+ hasSquelch() {
99
+ return true;
100
+ }
101
+ getSquelch() {
102
+ return this.mode.squelch;
103
+ }
104
+ setSquelch(squelch) {
105
+ this.mode = { ...this.mode, squelch: Math.max(0, Math.min(squelch, 6)) };
106
+ return this;
107
+ }
108
+ }
109
+ //# sourceMappingURL=demod-nbfm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demod-nbfm.js","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { Configurator, Demod, Demodulated } from "./modes";
2
+ /** Mode parameters for SSB. */
3
+ export type ModeSSB = {
4
+ scheme: "USB" | "LSB";
5
+ bandwidth: number;
6
+ squelch: number;
7
+ };
8
+ /** A demodulator for single-sideband modulated signals. */
9
+ export declare class DemodSSB implements Demod<ModeSSB> {
10
+ private outRate;
11
+ private mode;
12
+ /**
13
+ * @param inRate The sample rate of the input samples.
14
+ * @param outRate The sample rate of the output audio.
15
+ * @param mode The mode to use initially.
16
+ */
17
+ constructor(inRate: number, outRate: number, mode: ModeSSB);
18
+ private shifter;
19
+ private downsampler;
20
+ private filter;
21
+ private demodulator;
22
+ private agc;
23
+ getMode(): ModeSSB;
24
+ setMode(mode: ModeSSB): void;
25
+ /**
26
+ * Demodulates the signal.
27
+ * @param samplesI The I components of the samples.
28
+ * @param samplesQ The Q components of the samples.
29
+ * @param freqOffset The offset of the signal in the samples.
30
+ * @returns The demodulated audio signal.
31
+ */
32
+ demodulate(samplesI: Float32Array, samplesQ: Float32Array, freqOffset: number): Demodulated;
33
+ }
34
+ /** Configurator for the USB and LSB modes. */
35
+ export declare class ConfigSSB extends Configurator<ModeSSB> {
36
+ constructor(mode: ModeSSB | string);
37
+ protected create(scheme: string): ModeSSB;
38
+ hasBandwidth(): boolean;
39
+ getBandwidth(): number;
40
+ setBandwidth(bandwidth: number): ConfigSSB;
41
+ hasSquelch(): boolean;
42
+ getSquelch(): number;
43
+ setSquelch(squelch: number): ConfigSSB;
44
+ }
45
+ //# sourceMappingURL=demod-ssb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demod-ssb.d.ts","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3D,+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,2DAA2D;AAC3D,qBAAa,QAAS,YAAW,KAAK,CAAC,OAAO,CAAC;IAMjB,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,IAAI;IALjE;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM,EAAU,IAAI,EAAE,OAAO;IAW1E,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;IAMrB;;;;;;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"}
@@ -16,15 +16,15 @@ import { Sideband, SSBDemodulator } from "../dsp/demodulators";
16
16
  import { FrequencyShifter, AGC, FIRFilter } from "../dsp/filters";
17
17
  import { getPower } from "../dsp/power";
18
18
  import { ComplexDownsampler } from "../dsp/resamplers";
19
+ import { Configurator } from "./modes";
19
20
  /** A demodulator for single-sideband modulated signals. */
20
- export class SchemeSSB {
21
+ export class DemodSSB {
21
22
  outRate;
22
23
  mode;
23
24
  /**
24
25
  * @param inRate The sample rate of the input samples.
25
26
  * @param outRate The sample rate of the output audio.
26
- * @param bandwidth The bandwidth of the input signal.
27
- * @param upper Whether to demodulate the upper sideband (lower otherwise).
27
+ * @param mode The mode to use initially.
28
28
  */
29
29
  constructor(inRate, outRate, mode) {
30
30
  this.outRate = outRate;
@@ -72,4 +72,36 @@ export class SchemeSSB {
72
72
  };
73
73
  }
74
74
  }
75
- //# sourceMappingURL=scheme-ssb.js.map
75
+ /** Configurator for the USB and LSB modes. */
76
+ export class ConfigSSB extends Configurator {
77
+ constructor(mode) {
78
+ super(mode);
79
+ }
80
+ create(scheme) {
81
+ return { scheme: scheme, bandwidth: 2800, squelch: 0 };
82
+ }
83
+ hasBandwidth() {
84
+ return true;
85
+ }
86
+ getBandwidth() {
87
+ return this.mode.bandwidth;
88
+ }
89
+ setBandwidth(bandwidth) {
90
+ this.mode = {
91
+ ...this.mode,
92
+ bandwidth: Math.max(10, Math.min(bandwidth, 15000)),
93
+ };
94
+ return this;
95
+ }
96
+ hasSquelch() {
97
+ return true;
98
+ }
99
+ getSquelch() {
100
+ return this.mode.squelch;
101
+ }
102
+ setSquelch(squelch) {
103
+ this.mode = { ...this.mode, squelch: Math.max(0, Math.min(squelch, 6)) };
104
+ return this;
105
+ }
106
+ }
107
+ //# sourceMappingURL=demod-ssb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demod-ssb.js","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { Configurator, Demod, Demodulated } from "./modes";
2
+ /** Mode parameters for WBFM. */
3
+ export type ModeWBFM = {
4
+ scheme: "WBFM";
5
+ stereo: boolean;
6
+ };
7
+ /** A demodulator for wideband FM signals. */
8
+ export declare class DemodWBFM implements Demod<ModeWBFM> {
9
+ private mode;
10
+ /**
11
+ * @param inRate The sample rate of the input samples.
12
+ * @param outRate The sample rate of the output samples.
13
+ * @param mode The mode to use initially.
14
+ */
15
+ constructor(inRate: number, outRate: number, mode: ModeWBFM);
16
+ private stage1;
17
+ private stage2;
18
+ getMode(): ModeWBFM;
19
+ setMode(mode: ModeWBFM): void;
20
+ /**
21
+ * Demodulates the signal.
22
+ * @param samplesI The I components of the samples.
23
+ * @param samplesQ The Q components of the samples.
24
+ * @param freqOffset The offset of the signal in the samples.
25
+ * @returns The demodulated audio signal.
26
+ */
27
+ demodulate(samplesI: Float32Array, samplesQ: Float32Array, freqOffset: number): Demodulated;
28
+ }
29
+ /**
30
+ * First stage demodulator for wideband FM signals.
31
+ * Returns the raw demodulated FM signal, with stereo pilot, difference signal and RDS, if they exist.
32
+ * The output is duplicated in the left and right channels.
33
+ */
34
+ export declare class DemodWBFMStage1 implements Demod<ModeWBFM> {
35
+ private outRate;
36
+ private mode;
37
+ /**
38
+ * @param inRate The sample rate of the input samples.
39
+ * @param outRate The sample rate of the output audio.
40
+ * @param mode The mode to use initially.
41
+ */
42
+ constructor(inRate: number, outRate: number, mode: ModeWBFM);
43
+ private shifter;
44
+ private downsampler?;
45
+ private filterI;
46
+ private filterQ;
47
+ private demodulator;
48
+ getMode(): ModeWBFM;
49
+ setMode(mode: ModeWBFM): void;
50
+ /**
51
+ * Demodulates the signal.
52
+ * @param samplesI The I components of the samples.
53
+ * @param samplesQ The Q components of the samples.
54
+ * @param freqOffset The offset of the signal in the samples.
55
+ * @returns The demodulated audio signal.
56
+ */
57
+ demodulate(samplesI: Float32Array, samplesQ: Float32Array, freqOffset: number): Demodulated;
58
+ }
59
+ /**
60
+ * Second stage demodulator for wideband FM signals.
61
+ * Takes the output of stage 1 and does stereo extraction.
62
+ * Only the I channel is used; Q channel is ignored.
63
+ * */
64
+ export declare class DemodWBFMStage2 implements Demod<ModeWBFM> {
65
+ private mode;
66
+ /**
67
+ * @param inRate The sample rate of the input samples.
68
+ * @param outRate The sample rate of the output audio.
69
+ * @param mode The mode to use initially.
70
+ */
71
+ constructor(inRate: number, outRate: number, mode: ModeWBFM);
72
+ private monoSampler;
73
+ private stereoSampler;
74
+ private stereoSeparator;
75
+ private leftDeemph;
76
+ private rightDeemph;
77
+ getMode(): ModeWBFM;
78
+ setMode(mode: ModeWBFM): void;
79
+ /**
80
+ * Demodulates the signal.
81
+ * @param samplesI The I components of the samples.
82
+ * @returns The demodulated audio signal.
83
+ */
84
+ demodulate(samplesI: Float32Array): Demodulated;
85
+ }
86
+ /** Configurator for the WBFM mode. */
87
+ export declare class ConfigWBFM extends Configurator<ModeWBFM> {
88
+ constructor(mode: ModeWBFM | string);
89
+ protected create(): ModeWBFM;
90
+ hasStereo(): boolean;
91
+ getStereo(): boolean;
92
+ setStereo(stereo: boolean): ConfigWBFM;
93
+ getBandwidth(): number;
94
+ }
95
+ //# sourceMappingURL=demod-wbfm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demod-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3D,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,6CAA6C;AAC7C,qBAAa,SAAU,YAAW,KAAK,CAAC,QAAQ,CAAC;IAMF,OAAO,CAAC,IAAI;IALzD;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAU,IAAI,EAAE,QAAQ;IAMnE,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;IAMzB,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,IAAI;IALjE;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM,EAAU,IAAI,EAAE,QAAQ;IAY3E,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;IAMR,OAAO,CAAC,IAAI;IALzD;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAU,IAAI,EAAE,QAAQ;IAUnE,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"}