@jtarrio/webrtlsdr 2.0.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +5 -6
  2. package/dist/errors.d.ts +1 -2
  3. package/dist/errors.d.ts.map +1 -1
  4. package/dist/errors.js +0 -1
  5. package/dist/errors.js.map +1 -1
  6. package/dist/radio/radio.d.ts +22 -63
  7. package/dist/radio/radio.d.ts.map +1 -1
  8. package/dist/radio/radio.js +41 -255
  9. package/dist/radio/radio.js.map +1 -1
  10. package/dist/radio/source.d.ts +25 -0
  11. package/dist/radio/source.d.ts.map +1 -0
  12. package/dist/radio/source.js +69 -0
  13. package/dist/radio/source.js.map +1 -0
  14. package/dist/radio.d.ts +2 -1
  15. package/dist/radio.d.ts.map +1 -1
  16. package/dist/radio.js +1 -1
  17. package/dist/radio.js.map +1 -1
  18. package/dist/rtlsdr/rtl2832u.d.ts.map +1 -1
  19. package/dist/rtlsdr/rtl2832u.js.map +1 -1
  20. package/dist/rtlsdr/rtlcom.d.ts.map +1 -1
  21. package/dist/rtlsdr/rtlcom.js.map +1 -1
  22. package/package.json +4 -4
  23. package/dist/demod/demod-am.d.ts +0 -45
  24. package/dist/demod/demod-am.d.ts.map +0 -1
  25. package/dist/demod/demod-am.js +0 -108
  26. package/dist/demod/demod-am.js.map +0 -1
  27. package/dist/demod/demod-cw.d.ts +0 -36
  28. package/dist/demod/demod-cw.d.ts.map +0 -1
  29. package/dist/demod/demod-cw.js +0 -96
  30. package/dist/demod/demod-cw.js.map +0 -1
  31. package/dist/demod/demod-nbfm.d.ts +0 -45
  32. package/dist/demod/demod-nbfm.d.ts.map +0 -1
  33. package/dist/demod/demod-nbfm.js +0 -109
  34. package/dist/demod/demod-nbfm.js.map +0 -1
  35. package/dist/demod/demod-ssb.d.ts +0 -45
  36. package/dist/demod/demod-ssb.d.ts.map +0 -1
  37. package/dist/demod/demod-ssb.js +0 -107
  38. package/dist/demod/demod-ssb.js.map +0 -1
  39. package/dist/demod/demod-wbfm.d.ts +0 -95
  40. package/dist/demod/demod-wbfm.d.ts.map +0 -1
  41. package/dist/demod/demod-wbfm.js +0 -205
  42. package/dist/demod/demod-wbfm.js.map +0 -1
  43. package/dist/demod/demodulator.d.ts +0 -3
  44. package/dist/demod/demodulator.d.ts.map +0 -1
  45. package/dist/demod/demodulator.js +0 -28
  46. package/dist/demod/demodulator.js.map +0 -1
  47. package/dist/demod/empty-demodulator.d.ts +0 -62
  48. package/dist/demod/empty-demodulator.d.ts.map +0 -1
  49. package/dist/demod/empty-demodulator.js +0 -145
  50. package/dist/demod/empty-demodulator.js.map +0 -1
  51. package/dist/demod/modes.d.ts +0 -107
  52. package/dist/demod/modes.d.ts.map +0 -1
  53. package/dist/demod/modes.js +0 -101
  54. package/dist/demod/modes.js.map +0 -1
  55. package/dist/demod/player.d.ts +0 -19
  56. package/dist/demod/player.d.ts.map +0 -1
  57. package/dist/demod/player.js +0 -15
  58. package/dist/demod/player.js.map +0 -1
  59. package/dist/demod/sample-counter.d.ts +0 -22
  60. package/dist/demod/sample-counter.d.ts.map +0 -1
  61. package/dist/demod/sample-counter.js +0 -57
  62. package/dist/demod/sample-counter.js.map +0 -1
  63. package/dist/demod/spectrum.d.ts +0 -23
  64. package/dist/demod/spectrum.d.ts.map +0 -1
  65. package/dist/demod/spectrum.js +0 -78
  66. package/dist/demod/spectrum.js.map +0 -1
  67. package/dist/dsp/buffers.d.ts +0 -72
  68. package/dist/dsp/buffers.d.ts.map +0 -1
  69. package/dist/dsp/buffers.js +0 -122
  70. package/dist/dsp/buffers.js.map +0 -1
  71. package/dist/dsp/coefficients.d.ts +0 -22
  72. package/dist/dsp/coefficients.d.ts.map +0 -1
  73. package/dist/dsp/coefficients.js +0 -77
  74. package/dist/dsp/coefficients.js.map +0 -1
  75. package/dist/dsp/converters.d.ts +0 -15
  76. package/dist/dsp/converters.d.ts.map +0 -1
  77. package/dist/dsp/converters.js +0 -43
  78. package/dist/dsp/converters.js.map +0 -1
  79. package/dist/dsp/demodulators.d.ts +0 -72
  80. package/dist/dsp/demodulators.d.ts.map +0 -1
  81. package/dist/dsp/demodulators.js +0 -244
  82. package/dist/dsp/demodulators.js.map +0 -1
  83. package/dist/dsp/fft.d.ts +0 -53
  84. package/dist/dsp/fft.d.ts.map +0 -1
  85. package/dist/dsp/fft.js +0 -175
  86. package/dist/dsp/fft.js.map +0 -1
  87. package/dist/dsp/filters.d.ts +0 -91
  88. package/dist/dsp/filters.d.ts.map +0 -1
  89. package/dist/dsp/filters.js +0 -250
  90. package/dist/dsp/filters.js.map +0 -1
  91. package/dist/dsp/power.d.ts +0 -2
  92. package/dist/dsp/power.d.ts.map +0 -1
  93. package/dist/dsp/power.js +0 -23
  94. package/dist/dsp/power.js.map +0 -1
  95. package/dist/dsp/resamplers.d.ts +0 -33
  96. package/dist/dsp/resamplers.d.ts.map +0 -1
  97. package/dist/dsp/resamplers.js +0 -91
  98. package/dist/dsp/resamplers.js.map +0 -1
  99. package/dist/players/audioplayer.d.ts +0 -25
  100. package/dist/players/audioplayer.d.ts.map +0 -1
  101. package/dist/players/audioplayer.js +0 -68
  102. package/dist/players/audioplayer.js.map +0 -1
  103. package/dist/radio/msgqueue.d.ts +0 -23
  104. package/dist/radio/msgqueue.d.ts.map +0 -1
  105. package/dist/radio/msgqueue.js +0 -52
  106. package/dist/radio/msgqueue.js.map +0 -1
  107. package/dist/radio/sample_receiver.d.ts +0 -19
  108. package/dist/radio/sample_receiver.d.ts.map +0 -1
  109. package/dist/radio/sample_receiver.js +0 -54
  110. package/dist/radio/sample_receiver.js.map +0 -1
@@ -1,109 +0,0 @@
1
- // Copyright 2014 Google Inc. All rights reserved.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- import { makeLowPassKernel } from "../dsp/coefficients.js";
15
- import { FMDemodulator } from "../dsp/demodulators.js";
16
- import { FIRFilter, FrequencyShifter } from "../dsp/filters.js";
17
- import { getPower } from "../dsp/power.js";
18
- import { ComplexDownsampler } from "../dsp/resamplers.js";
19
- import { Configurator } from "./modes.js";
20
- /** A demodulator for narrowband FM signals. */
21
- export class DemodNBFM {
22
- outRate;
23
- mode;
24
- /**
25
- * @param inRate The sample rate of the input samples.
26
- * @param outRate The sample rate of the output audio.
27
- * @param mode The mode to use initially.
28
- */
29
- constructor(inRate, outRate, mode) {
30
- this.outRate = outRate;
31
- this.mode = mode;
32
- this.shifter = new FrequencyShifter(inRate);
33
- this.downsampler = new ComplexDownsampler(inRate, outRate, 151);
34
- const kernel = makeLowPassKernel(outRate, mode.maxF, 151);
35
- this.filterI = new FIRFilter(kernel);
36
- this.filterQ = new FIRFilter(kernel);
37
- this.demodulator = new FMDemodulator(mode.maxF / outRate);
38
- }
39
- shifter;
40
- downsampler;
41
- filterI;
42
- filterQ;
43
- demodulator;
44
- getMode() {
45
- return this.mode;
46
- }
47
- setMode(mode) {
48
- this.mode = mode;
49
- const kernel = makeLowPassKernel(this.outRate, mode.maxF, 151);
50
- this.filterI.setCoefficients(kernel);
51
- this.filterQ.setCoefficients(kernel);
52
- this.demodulator.setMaxDeviation(mode.maxF / this.outRate);
53
- }
54
- /**
55
- * Demodulates the signal.
56
- * @param samplesI The I components of the samples.
57
- * @param samplesQ The Q components of the samples.
58
- * @param freqOffset The offset of the signal in the samples.
59
- * @returns The demodulated audio signal.
60
- */
61
- demodulate(samplesI, samplesQ, freqOffset) {
62
- this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
63
- const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
64
- let allPower = getPower(I, Q);
65
- this.filterI.inPlace(I);
66
- this.filterQ.inPlace(Q);
67
- let signalPower = (getPower(I, Q) * this.outRate) / (this.mode.maxF * 2);
68
- this.demodulator.demodulate(I, Q, I);
69
- return {
70
- left: I,
71
- right: new Float32Array(I),
72
- stereo: false,
73
- snr: signalPower / allPower,
74
- };
75
- }
76
- }
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"demod-nbfm.js","sourceRoot":"","sources":["../../src/demod/demod-nbfm.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { Configurator, Demod, Demodulated } from "./modes.js";
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
@@ -1 +0,0 @@
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,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,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"}
@@ -1,107 +0,0 @@
1
- // Copyright 2014 Google Inc. All rights reserved.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- import { makeLowPassKernel } from "../dsp/coefficients.js";
15
- import { Sideband, SSBDemodulator } from "../dsp/demodulators.js";
16
- import { FrequencyShifter, AGC, FIRFilter } from "../dsp/filters.js";
17
- import { getPower } from "../dsp/power.js";
18
- import { ComplexDownsampler } from "../dsp/resamplers.js";
19
- import { Configurator } from "./modes.js";
20
- /** A demodulator for single-sideband modulated signals. */
21
- export class DemodSSB {
22
- outRate;
23
- mode;
24
- /**
25
- * @param inRate The sample rate of the input samples.
26
- * @param outRate The sample rate of the output audio.
27
- * @param mode The mode to use initially.
28
- */
29
- constructor(inRate, outRate, mode) {
30
- this.outRate = outRate;
31
- this.mode = mode;
32
- this.shifter = new FrequencyShifter(inRate);
33
- this.downsampler = new ComplexDownsampler(inRate, outRate, 151);
34
- const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, 151);
35
- this.filter = new FIRFilter(kernel);
36
- this.demodulator = new SSBDemodulator(mode.scheme == "USB" ? Sideband.Upper : Sideband.Lower);
37
- this.agc = new AGC(outRate, 3);
38
- }
39
- shifter;
40
- downsampler;
41
- filter;
42
- demodulator;
43
- agc;
44
- getMode() {
45
- return this.mode;
46
- }
47
- setMode(mode) {
48
- this.mode = mode;
49
- const kernel = makeLowPassKernel(this.outRate, mode.bandwidth / 2, 151);
50
- this.filter.setCoefficients(kernel);
51
- }
52
- /**
53
- * Demodulates the signal.
54
- * @param samplesI The I components of the samples.
55
- * @param samplesQ The Q components of the samples.
56
- * @param freqOffset The offset of the signal in the samples.
57
- * @returns The demodulated audio signal.
58
- */
59
- demodulate(samplesI, samplesQ, freqOffset) {
60
- this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
61
- const [I, Q] = this.downsampler.downsample(samplesI, samplesQ);
62
- let allPower = getPower(I, Q);
63
- this.demodulator.demodulate(I, Q, I);
64
- this.filter.inPlace(I);
65
- let signalPower = (getPower(I, I) * this.outRate) / (this.mode.bandwidth * 2);
66
- this.agc.inPlace(I);
67
- return {
68
- left: I,
69
- right: new Float32Array(I),
70
- stereo: false,
71
- snr: signalPower / allPower,
72
- };
73
- }
74
- }
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"demod-ssb.js","sourceRoot":"","sources":["../../src/demod/demod-ssb.ts"],"names":[],"mappings":"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"}
@@ -1,95 +0,0 @@
1
- import { Configurator, Demod, Demodulated } from "./modes.js";
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
@@ -1 +0,0 @@
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,YAAY,CAAC;AAE9D,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"}
@@ -1,205 +0,0 @@
1
- // Copyright 2013 Google Inc. All rights reserved.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- import { makeLowPassKernel } from "../dsp/coefficients.js";
15
- import { FMDemodulator, StereoSeparator } from "../dsp/demodulators.js";
16
- import { FrequencyShifter, Deemphasizer, FIRFilter } from "../dsp/filters.js";
17
- import { getPower } from "../dsp/power.js";
18
- import { ComplexDownsampler, RealDownsampler } from "../dsp/resamplers.js";
19
- import { Configurator } from "./modes.js";
20
- /** A demodulator for wideband FM signals. */
21
- export class DemodWBFM {
22
- mode;
23
- /**
24
- * @param inRate The sample rate of the input samples.
25
- * @param outRate The sample rate of the output samples.
26
- * @param mode The mode to use initially.
27
- */
28
- constructor(inRate, outRate, mode) {
29
- this.mode = mode;
30
- let interRate = Math.min(inRate, 336000);
31
- this.stage1 = new DemodWBFMStage1(inRate, interRate, mode);
32
- this.stage2 = new DemodWBFMStage2(interRate, outRate, mode);
33
- }
34
- stage1;
35
- stage2;
36
- getMode() {
37
- return this.mode;
38
- }
39
- setMode(mode) {
40
- this.mode = mode;
41
- this.stage1.setMode(mode);
42
- this.stage2.setMode(mode);
43
- }
44
- /**
45
- * Demodulates the signal.
46
- * @param samplesI The I components of the samples.
47
- * @param samplesQ The Q components of the samples.
48
- * @param freqOffset The offset of the signal in the samples.
49
- * @returns The demodulated audio signal.
50
- */
51
- demodulate(samplesI, samplesQ, freqOffset) {
52
- let o1 = this.stage1.demodulate(samplesI, samplesQ, freqOffset);
53
- let o2 = this.stage2.demodulate(o1.left);
54
- o2.snr = o1.snr;
55
- return o2;
56
- }
57
- }
58
- /**
59
- * First stage demodulator for wideband FM signals.
60
- * Returns the raw demodulated FM signal, with stereo pilot, difference signal and RDS, if they exist.
61
- * The output is duplicated in the left and right channels.
62
- */
63
- export class DemodWBFMStage1 {
64
- outRate;
65
- 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, outRate, mode) {
72
- this.outRate = outRate;
73
- this.mode = mode;
74
- const maxF = 75000;
75
- this.shifter = new FrequencyShifter(inRate);
76
- if (inRate != outRate) {
77
- this.downsampler = new ComplexDownsampler(inRate, outRate, 151);
78
- }
79
- const kernel = makeLowPassKernel(outRate, maxF, 151);
80
- this.filterI = new FIRFilter(kernel);
81
- this.filterQ = new FIRFilter(kernel);
82
- this.demodulator = new FMDemodulator(maxF / outRate);
83
- }
84
- shifter;
85
- downsampler;
86
- filterI;
87
- filterQ;
88
- demodulator;
89
- getMode() {
90
- return this.mode;
91
- }
92
- setMode(mode) {
93
- this.mode = mode;
94
- }
95
- /**
96
- * Demodulates the signal.
97
- * @param samplesI The I components of the samples.
98
- * @param samplesQ The Q components of the samples.
99
- * @param freqOffset The offset of the signal in the samples.
100
- * @returns The demodulated audio signal.
101
- */
102
- demodulate(samplesI, samplesQ, freqOffset) {
103
- this.shifter.inPlace(samplesI, samplesQ, -freqOffset);
104
- let [I, Q] = this.downsampler
105
- ? this.downsampler.downsample(samplesI, samplesQ)
106
- : [samplesI, samplesQ];
107
- let allPower = getPower(I, Q);
108
- this.filterI.inPlace(I);
109
- this.filterQ.inPlace(Q);
110
- let signalPower = (getPower(I, Q) * this.outRate) / 150000;
111
- this.demodulator.demodulate(I, Q, I);
112
- return {
113
- left: I,
114
- right: new Float32Array(I),
115
- stereo: false,
116
- snr: signalPower / allPower,
117
- };
118
- }
119
- }
120
- /**
121
- * Second stage demodulator for wideband FM signals.
122
- * Takes the output of stage 1 and does stereo extraction.
123
- * Only the I channel is used; Q channel is ignored.
124
- * */
125
- export class DemodWBFMStage2 {
126
- mode;
127
- /**
128
- * @param inRate The sample rate of the input samples.
129
- * @param outRate The sample rate of the output audio.
130
- * @param mode The mode to use initially.
131
- */
132
- constructor(inRate, outRate, mode) {
133
- this.mode = mode;
134
- const pilotF = 19000;
135
- const deemphTc = 50;
136
- this.monoSampler = new RealDownsampler(inRate, outRate, 41);
137
- this.stereoSampler = new RealDownsampler(inRate, outRate, 41);
138
- this.stereoSeparator = new StereoSeparator(inRate, pilotF);
139
- this.leftDeemph = new Deemphasizer(outRate, deemphTc);
140
- this.rightDeemph = new Deemphasizer(outRate, deemphTc);
141
- }
142
- monoSampler;
143
- stereoSampler;
144
- stereoSeparator;
145
- leftDeemph;
146
- rightDeemph;
147
- getMode() {
148
- return this.mode;
149
- }
150
- setMode(mode) {
151
- this.mode = mode;
152
- }
153
- /**
154
- * Demodulates the signal.
155
- * @param samplesI The I components of the samples.
156
- * @returns The demodulated audio signal.
157
- */
158
- demodulate(samplesI) {
159
- const leftAudio = this.monoSampler.downsample(samplesI);
160
- const rightAudio = new Float32Array(leftAudio);
161
- let stereoOut = false;
162
- if (this.mode.stereo) {
163
- const stereo = this.stereoSeparator.separate(samplesI);
164
- if (stereo.found) {
165
- stereoOut = true;
166
- const diffAudio = this.stereoSampler.downsample(stereo.diff);
167
- for (let i = 0; i < diffAudio.length; ++i) {
168
- rightAudio[i] -= diffAudio[i];
169
- leftAudio[i] += diffAudio[i];
170
- }
171
- }
172
- }
173
- this.leftDeemph.inPlace(leftAudio);
174
- this.rightDeemph.inPlace(rightAudio);
175
- return {
176
- left: leftAudio,
177
- right: rightAudio,
178
- stereo: stereoOut,
179
- snr: 1,
180
- };
181
- }
182
- }
183
- /** Configurator for the WBFM mode. */
184
- export class ConfigWBFM extends Configurator {
185
- constructor(mode) {
186
- super(mode);
187
- }
188
- create() {
189
- return { scheme: "WBFM", stereo: true };
190
- }
191
- hasStereo() {
192
- return true;
193
- }
194
- getStereo() {
195
- return this.mode.stereo;
196
- }
197
- setStereo(stereo) {
198
- this.mode = { ...this.mode, stereo: stereo };
199
- return this;
200
- }
201
- getBandwidth() {
202
- return 150000;
203
- }
204
- }
205
- //# sourceMappingURL=demod-wbfm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- /** Exports the `Demodulator` class with all the demodulation schemes already registered. */
2
- export * from "./empty-demodulator.js";
3
- //# sourceMappingURL=demodulator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demodulator.d.ts","sourceRoot":"","sources":["../../src/demod/demodulator.ts"],"names":[],"mappings":"AAcA,4FAA4F;AAE5F,cAAc,wBAAwB,CAAC"}
@@ -1,28 +0,0 @@
1
- // Copyright 2025 Jacobo Tarrio Barreiro. All rights reserved.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- /** Exports the `Demodulator` class with all the demodulation schemes already registered. */
15
- export * from "./empty-demodulator.js";
16
- import { registerDemod } from "./modes.js";
17
- import { ConfigAM, DemodAM } from "./demod-am.js";
18
- import { ConfigCW, DemodCW } from "./demod-cw.js";
19
- import { ConfigNBFM, DemodNBFM } from "./demod-nbfm.js";
20
- import { ConfigSSB, DemodSSB } from "./demod-ssb.js";
21
- import { ConfigWBFM, DemodWBFM } from "./demod-wbfm.js";
22
- registerDemod("WBFM", DemodWBFM, ConfigWBFM);
23
- registerDemod("NBFM", DemodNBFM, ConfigNBFM);
24
- registerDemod("AM", DemodAM, ConfigAM);
25
- registerDemod("USB", DemodSSB, ConfigSSB);
26
- registerDemod("LSB", DemodSSB, ConfigSSB);
27
- registerDemod("CW", DemodCW, ConfigCW);
28
- //# sourceMappingURL=demodulator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demodulator.js","sourceRoot":"","sources":["../../src/demod/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,4FAA4F;AAE5F,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC7C,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC7C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACvC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1C,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC"}