@jtarrio/signals 0.9.2 → 0.9.3

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.
@@ -51,7 +51,7 @@ export declare class StereoSeparator {
51
51
  */
52
52
  constructor(sampleRate: number, pilotFreq: number);
53
53
  private pool;
54
- private pll;
54
+ private detector;
55
55
  /**
56
56
  * Locks on to the pilot tone and uses it to demodulate the stereo audio.
57
57
  * @param samples The original audio stream.
@@ -1 +1 @@
1
- {"version":3,"file":"demodulators.d.ts","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"AAoBA,kCAAkC;AAClC,oBAAY,QAAQ;IAClB,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,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,sDAAsD;IACtD,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAI9B,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAU/D;AAED,0CAA0C;AAC1C,qBAAa,aAAa;IACxB;;OAEG;gBACS,UAAU,EAAE,MAAM;IAK9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,gBAAgB,CAAS;IAEjC,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAa/D;AAED,0CAA0C;AAC1C,qBAAa,aAAa;IACxB;;OAEG;gBACS,YAAY,EAAE,MAAM;IAMhC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,EAAE,CAAS;IAEnB,qCAAqC;IACrC,eAAe,CAAC,YAAY,EAAE,MAAM;IAIpC,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAe/D;AAED,0EAA0E;AAC1E,qBAAa,eAAe;IAC1B;;;OAGG;gBACS,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,GAAG,CAAM;IAEjB;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE;CAaxE"}
1
+ {"version":3,"file":"demodulators.d.ts","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"AAoBA,kCAAkC;AAClC,oBAAY,QAAQ;IAClB,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAED,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,sDAAsD;IACtD,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAI9B,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAU/D;AAED,0CAA0C;AAC1C,qBAAa,aAAa;IACxB;;OAEG;gBACS,UAAU,EAAE,MAAM;IAK9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,gBAAgB,CAAS;IAEjC,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAa/D;AAED,0CAA0C;AAC1C,qBAAa,aAAa;IACxB;;OAEG;gBACS,YAAY,EAAE,MAAM;IAMhC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,EAAE,CAAS;IAEnB,qCAAqC;IACrC,eAAe,CAAC,YAAY,EAAE,MAAM;IAIpC,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY;CAe/D;AAED,0EAA0E;AAC1E,qBAAa,eAAe;IAC1B;;;OAGG;gBACS,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKjD,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAgB;IAEhC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE;CAexE"}
@@ -13,7 +13,7 @@
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
15
  import { makeHilbertKernel } from "./coefficients.js";
16
- import { decay, FIRFilter, PLL } from "./filters.js";
16
+ import { decay, FIRFilter, PilotDetector } from "./filters.js";
17
17
  import { Float32Pool } from "./buffers.js";
18
18
  import { atan2 } from "./math.js";
19
19
  /** The sideband to demodulate. */
@@ -121,10 +121,10 @@ export class StereoSeparator {
121
121
  */
122
122
  constructor(sampleRate, pilotFreq) {
123
123
  this.pool = new Float32Pool(4);
124
- this.pll = new PLL(sampleRate, pilotFreq, 10);
124
+ this.detector = new PilotDetector(sampleRate, pilotFreq, 2);
125
125
  }
126
126
  pool;
127
- pll;
127
+ detector;
128
128
  /**
129
129
  * Locks on to the pilot tone and uses it to demodulate the stereo audio.
130
130
  * @param samples The original audio stream.
@@ -135,13 +135,15 @@ export class StereoSeparator {
135
135
  */
136
136
  separate(samples) {
137
137
  let out = this.pool.get(samples.length);
138
+ const pilot = this.detector.extract(samples);
139
+ const I = pilot[0];
140
+ const Q = pilot[1];
138
141
  for (let i = 0; i < samples.length; ++i) {
139
- this.pll.add(samples[i]);
140
142
  // Multiply by 4 instead of 2 so 'out' has the same level as the input samples.
141
- out[i] = samples[i] * this.pll.sin * this.pll.cos * 4;
143
+ out[i] = samples[i] * I[i] * Q[i] * 4;
142
144
  }
143
145
  return {
144
- found: this.pll.locked,
146
+ found: this.detector.locked,
145
147
  diff: out,
146
148
  };
147
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"demodulators.js","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demodulators.js","sourceRoot":"","sources":["../../src/dsp/demodulators.ts"],"names":[],"mappings":"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"}
@@ -82,12 +82,30 @@ export interface IIRFilter extends Filter {
82
82
  /** IIR filter with two 'b' coefficients and one 'a' coefficient. */
83
83
  declare class IIRFilter21 implements IIRFilter {
84
84
  private sampleRate;
85
- private b0;
86
- private b1;
87
- private a1;
88
85
  constructor(sampleRate: number, b0: number, b1: number, a1: number);
89
- private prev;
90
- private val;
86
+ private q;
87
+ private v;
88
+ /** Returns a copy of this filter. */
89
+ clone(): IIRFilter;
90
+ getDelay(): number;
91
+ /**
92
+ * Filters the given samples in place.
93
+ * @param samples The samples to filter.
94
+ */
95
+ inPlace(samples: Float32Array): void;
96
+ /** Filters an individual sample. */
97
+ add(sample: number): number;
98
+ /** Returns the value currently held by the filter. */
99
+ get value(): number;
100
+ /** Returns the phase shift at the given angular frequency. */
101
+ phaseShift(freq: number): number;
102
+ }
103
+ /** IIR filter with three 'b' coefficients and two 'a' coefficient. */
104
+ declare class IIRFilter32 implements IIRFilter {
105
+ private sampleRate;
106
+ constructor(sampleRate: number, b0: number, b1: number, b2: number, a1: number, a2: number);
107
+ private q;
108
+ private v;
91
109
  /** Returns a copy of this filter. */
92
110
  clone(): IIRFilter;
93
111
  getDelay(): number;
@@ -119,40 +137,22 @@ export declare class Preemphasis extends IIRFilter21 {
119
137
  */
120
138
  constructor(sampleRate: number, timeConstant: number);
121
139
  }
122
- /** A single-pole IIR low-pass filter. */
123
- export declare class IIRLowPass extends Deemphasis {
140
+ /** A first-order IIR low-pass filter. */
141
+ export declare class IIRLowPass extends IIRFilter21 {
124
142
  /**
125
143
  * @param sampleRate The signal's sample rate.
126
144
  * @param freq The filter's corner frequency.
127
145
  */
128
146
  constructor(sampleRate: number, freq: number);
129
147
  }
130
- declare class IIRFilterChain implements IIRFilter {
131
- private filters;
132
- constructor(filters: IIRFilter[]);
133
- /** Returns a copy of this filter. */
134
- clone(): IIRFilter;
135
- getDelay(): number;
136
- /**
137
- * Filters the given samples in place.
138
- * @param samples The samples to filter.
139
- */
140
- inPlace(samples: Float32Array): void;
141
- /** Filters an individual sample. */
142
- add(sample: number): number;
143
- /** Returns the value currently held by the filter. */
144
- get value(): number;
145
- /** Returns the phase shift at the given frequency. */
146
- phaseShift(freq: number): number;
147
- }
148
- /** A chain of single-pole IIR low-pass filters. */
149
- export declare class IIRLowPassChain extends IIRFilterChain {
148
+ /** A second-order IIR low-pass filter. */
149
+ export declare class IIRLowPass2 extends IIRFilter32 {
150
150
  /**
151
- * @param count Number of filters in the chain.
152
151
  * @param sampleRate The signal's sample rate.
153
- * @param freq The corner frequency for the whole chain.
152
+ * @param freq The filter's corner frequency.
153
+ * @param Q The filter's Q factor.
154
154
  */
155
- constructor(count: number, sampleRate: number, freq: number);
155
+ constructor(sampleRate: number, freq: number, Q: number);
156
156
  }
157
157
  /**
158
158
  * Shifts IQ samples by a given frequency.
@@ -164,35 +164,23 @@ export declare class FrequencyShifter {
164
164
  private sine;
165
165
  inPlace(I: Float32Array, Q: Float32Array, freq: number): void;
166
166
  }
167
- /** A phase-locked loop that can detect a signal with a given frequency. */
168
- export declare class PLL {
167
+ /** Detects a pilot tone and returns its cosine and sine as an IQ signal. */
168
+ export declare class PilotDetector {
169
169
  private sampleRate;
170
- /**
171
- * @param sampleRate The sample rate for the input signal.
172
- * @param freq The frequency of the signal to detect, in Hz.
173
- * @param tolerance The frequency tolerance for the signal, in Hz.
174
- */
175
- constructor(sampleRate: number, freq: number, tolerance: number);
176
- private phase;
177
- private speed;
178
- private maxSpeedCorr;
179
- private speedCorrection;
180
- private phaseCorrection;
181
- private biFlt;
182
- private bqFlt;
183
- private siFlt;
184
- private sqFlt;
185
- private piFlt;
186
- private pqFlt;
187
- private lbI;
188
- private lbQ;
189
- private iMagFlt;
190
- private bMagFlt;
191
- cos: number;
192
- sin: number;
193
- locked: boolean;
194
- add(sample: number): void;
195
- addRemaining(sample: number): void;
170
+ private targetFreq;
171
+ constructor(sampleRate: number, targetFreq: number, tolerance: number);
172
+ private iqPool;
173
+ private downShifter;
174
+ private upShifter;
175
+ private filterI;
176
+ private filterQ;
177
+ private prev;
178
+ private tolerance;
179
+ private speedEstimate;
180
+ private speedDecay;
181
+ private isLocked;
182
+ get locked(): boolean;
183
+ extract(input: Float32Array): [Float32Array, Float32Array];
196
184
  }
197
185
  export {};
198
186
  //# sourceMappingURL=filters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/dsp/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/dsp/filters.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
- import { Float32Pool } from "./buffers.js";
15
+ import { Float32Pool, IqPool } from "./buffers.js";
16
16
  import { atan2 } from "./math.js";
17
17
  /** A class to apply a FIR filter to a sequence of samples. */
18
18
  export class FIRFilter {
@@ -204,22 +204,16 @@ export function frequencyToTimeConstant(freq) {
204
204
  /** IIR filter with two 'b' coefficients and one 'a' coefficient. */
205
205
  class IIRFilter21 {
206
206
  sampleRate;
207
- b0;
208
- b1;
209
- a1;
210
207
  constructor(sampleRate, b0, b1, a1) {
211
208
  this.sampleRate = sampleRate;
212
- this.b0 = b0;
213
- this.b1 = b1;
214
- this.a1 = a1;
215
- this.prev = 0;
216
- this.val = 0;
209
+ this.q = [b0, b1, a1];
210
+ this.v = [0, 0];
217
211
  }
218
- prev;
219
- val;
212
+ q;
213
+ v;
220
214
  /** Returns a copy of this filter. */
221
215
  clone() {
222
- return new IIRFilter21(this.sampleRate, this.b0, this.b1, this.a1);
216
+ return new IIRFilter21(this.sampleRate, ...this.q);
223
217
  }
224
218
  getDelay() {
225
219
  return 0;
@@ -229,34 +223,133 @@ class IIRFilter21 {
229
223
  * @param samples The samples to filter.
230
224
  */
231
225
  inPlace(samples) {
232
- let prev = this.prev;
233
- let val = this.val;
226
+ let q = this.q;
227
+ let x1 = this.v[0];
228
+ let y1 = this.v[1];
234
229
  for (let i = 0; i < samples.length; ++i) {
235
- val = this.b0 * samples[i] + this.b1 * prev + this.a1 * val;
236
- prev = samples[i];
237
- samples[i] = val;
230
+ const x0 = samples[i];
231
+ samples[i] = y1 = q[0] * x0 + q[1] * x1 + q[2] * y1;
232
+ x1 = x0;
238
233
  }
239
- this.prev = prev;
240
- this.val = val;
234
+ this.v[0] = x1;
235
+ this.v[1] = y1;
241
236
  }
242
237
  /** Filters an individual sample. */
243
238
  add(sample) {
244
- this.val = this.b0 * sample + this.b1 * this.prev + this.a1 * this.val;
245
- this.prev = sample;
246
- return this.val;
239
+ this.v[1] =
240
+ this.q[0] * sample + this.q[1] * this.v[0] + this.q[2] * this.v[1];
241
+ this.v[0] = sample;
242
+ return this.v[1];
247
243
  }
248
244
  /** Returns the value currently held by the filter. */
249
245
  get value() {
250
- return this.val;
246
+ return this.v[1];
251
247
  }
252
248
  /** Returns the phase shift at the given angular frequency. */
253
249
  phaseShift(freq) {
254
250
  const w = (2 * Math.PI * freq) / this.sampleRate;
255
- const real = Math.cos(w) * (this.b1 - this.b0 * this.a1) + this.b0 - this.b1 * this.a1;
256
- const imag = Math.sin(w) * (this.b1 + this.b0 * this.a1);
251
+ const real = Math.cos(w) * (this.q[1] - this.q[0] * this.q[2]) +
252
+ this.q[0] -
253
+ this.q[1] * this.q[2];
254
+ const imag = Math.sin(w) * (this.q[1] + this.q[0] * this.q[2]);
257
255
  return atan2(imag, real);
258
256
  }
259
257
  }
258
+ /** IIR filter with three 'b' coefficients and two 'a' coefficient. */
259
+ class IIRFilter32 {
260
+ sampleRate;
261
+ constructor(sampleRate, b0, b1, b2, a1, a2) {
262
+ this.sampleRate = sampleRate;
263
+ this.q = [b0, b1, b2, a1, a2];
264
+ this.v = [0, 0, 0, 0];
265
+ }
266
+ q;
267
+ v;
268
+ /** Returns a copy of this filter. */
269
+ clone() {
270
+ return new IIRFilter32(this.sampleRate, ...this.q);
271
+ }
272
+ getDelay() {
273
+ return 0;
274
+ }
275
+ /**
276
+ * Filters the given samples in place.
277
+ * @param samples The samples to filter.
278
+ */
279
+ inPlace(samples) {
280
+ let q = this.q;
281
+ let x1 = this.v[0];
282
+ let x2 = this.v[1];
283
+ let y1 = this.v[2];
284
+ let y2 = this.v[3];
285
+ for (let i = 0; i < samples.length; ++i) {
286
+ let x0 = samples[i];
287
+ let y0 = (samples[i] =
288
+ q[0] * x0 + q[1] * x1 + q[2] * x2 + q[3] * y1 + q[4] * y2);
289
+ y2 = y1;
290
+ y1 = y0;
291
+ x2 = x1;
292
+ x1 = x0;
293
+ }
294
+ this.v[0] = x1;
295
+ this.v[1] = x2;
296
+ this.v[2] = y1;
297
+ this.v[3] = y2;
298
+ }
299
+ /** Filters an individual sample. */
300
+ add(sample) {
301
+ // b0*x0+b1*x1+b2*x2+a1*y1+a2*y2
302
+ let y0 = this.q[0] * sample +
303
+ this.q[1] * this.v[0] +
304
+ this.q[2] * this.v[1] +
305
+ this.q[3] * this.v[2] +
306
+ this.q[4] * this.v[3];
307
+ this.v[3] = this.v[2];
308
+ this.v[2] = y0;
309
+ this.v[1] = this.v[0];
310
+ this.v[0] = sample;
311
+ return y0;
312
+ }
313
+ /** Returns the value currently held by the filter. */
314
+ get value() {
315
+ return this.v[1];
316
+ }
317
+ /** Returns the phase shift at the given angular frequency. */
318
+ phaseShift(freq) {
319
+ const w = (2 * Math.PI * freq) / this.sampleRate;
320
+ const real = Math.cos(w) * (this.q[1] - this.q[0] * this.q[2]) +
321
+ this.q[0] -
322
+ this.q[1] * this.q[2];
323
+ const imag = Math.sin(w) * (this.q[1] + this.q[0] * this.q[2]);
324
+ return atan2(imag, real);
325
+ }
326
+ }
327
+ /** Returns the coefficients for a first-order low-pass IIR filter. */
328
+ function lowPassCoeffs21(sampleRate, timeConstant) {
329
+ const wd = 1 / (timeConstant * sampleRate);
330
+ const wa = 2 * sampleRate * Math.tan(wd / 2);
331
+ const tau = 1 / wa;
332
+ let a = 1 + 2 * tau * sampleRate;
333
+ let b = 1 - 2 * tau * sampleRate;
334
+ return [1 / a, 1 / a, -b / a];
335
+ }
336
+ /**
337
+ * Returns the coefficients for a second-order low-pass IIR filter.
338
+ *
339
+ * From https://webaudio.github.io/Audio-EQ-Cookbook/Audio-EQ-Cookbook.txt
340
+ */
341
+ function lowPassCoeffs32(sampleRate, frequency, Q) {
342
+ let w = (2 * Math.PI * frequency) / sampleRate;
343
+ let alpha = Math.sin(w) / (2 * Q);
344
+ let b0 = (1 - Math.cos(w)) / 2;
345
+ let b1 = 1 - Math.cos(w);
346
+ let b2 = (1 - Math.cos(w)) / 2;
347
+ ;
348
+ let a0 = 1 + alpha;
349
+ let a1 = -2 * Math.cos(w);
350
+ let a2 = 1 - alpha;
351
+ return [b0 / a0, b1 / a0, b2 / a0, -a1 / a0, -a2 / a0];
352
+ }
260
353
  /** A FM de-emphasis filter. */
261
354
  export class Deemphasis extends IIRFilter21 {
262
355
  /**
@@ -264,12 +357,7 @@ export class Deemphasis extends IIRFilter21 {
264
357
  * @param timeConstant The filter's time constant, in seconds.
265
358
  */
266
359
  constructor(sampleRate, timeConstant) {
267
- const wd = 1 / (timeConstant * sampleRate);
268
- const wa = 2 * sampleRate * Math.tan(wd / 2);
269
- const tau = 1 / wa;
270
- let a = 1 + 2 * tau * sampleRate;
271
- let b = 1 - 2 * tau * sampleRate;
272
- super(sampleRate, 1 / a, 1 / a, -b / a);
360
+ super(sampleRate, ...lowPassCoeffs21(sampleRate, timeConstant));
273
361
  }
274
362
  }
275
363
  /** A FM pre-emphasis filter. */
@@ -291,68 +379,25 @@ export class Preemphasis extends IIRFilter21 {
291
379
  super(sampleRate, a / (c * zg), b / (c * zg), -d / c);
292
380
  }
293
381
  }
294
- /** A single-pole IIR low-pass filter. */
295
- export class IIRLowPass extends Deemphasis {
382
+ /** A first-order IIR low-pass filter. */
383
+ export class IIRLowPass extends IIRFilter21 {
296
384
  /**
297
385
  * @param sampleRate The signal's sample rate.
298
386
  * @param freq The filter's corner frequency.
299
387
  */
300
388
  constructor(sampleRate, freq) {
301
- super(sampleRate, frequencyToTimeConstant(freq));
302
- }
303
- }
304
- class IIRFilterChain {
305
- filters;
306
- constructor(filters) {
307
- this.filters = filters;
308
- }
309
- /** Returns a copy of this filter. */
310
- clone() {
311
- return new IIRFilterChain(this.filters.map((f) => f.clone()));
312
- }
313
- getDelay() {
314
- return 0;
315
- }
316
- /**
317
- * Filters the given samples in place.
318
- * @param samples The samples to filter.
319
- */
320
- inPlace(samples) {
321
- for (let f of this.filters) {
322
- f.inPlace(samples);
323
- }
324
- }
325
- /** Filters an individual sample. */
326
- add(sample) {
327
- for (let f of this.filters) {
328
- sample = f.add(sample);
329
- }
330
- return sample;
331
- }
332
- /** Returns the value currently held by the filter. */
333
- get value() {
334
- return this.filters[this.filters.length - 1].value;
335
- }
336
- /** Returns the phase shift at the given frequency. */
337
- phaseShift(freq) {
338
- let lag = 0;
339
- for (let f of this.filters) {
340
- lag += f.phaseShift(freq);
341
- }
342
- return ((lag + Math.PI) % (2 * Math.PI)) - Math.PI;
389
+ super(sampleRate, ...lowPassCoeffs21(sampleRate, frequencyToTimeConstant(freq)));
343
390
  }
344
391
  }
345
- /** A chain of single-pole IIR low-pass filters. */
346
- export class IIRLowPassChain extends IIRFilterChain {
392
+ /** A second-order IIR low-pass filter. */
393
+ export class IIRLowPass2 extends IIRFilter32 {
347
394
  /**
348
- * @param count Number of filters in the chain.
349
395
  * @param sampleRate The signal's sample rate.
350
- * @param freq The corner frequency for the whole chain.
396
+ * @param freq The filter's corner frequency.
397
+ * @param Q The filter's Q factor.
351
398
  */
352
- constructor(count, sampleRate, freq) {
353
- const cf = freq / Math.sqrt(Math.pow(2, 1 / count) - 1);
354
- let filters = Array.from({ length: count }).map((_) => new IIRLowPass(sampleRate, cf));
355
- super(filters);
399
+ constructor(sampleRate, freq, Q) {
400
+ super(sampleRate, ...lowPassCoeffs32(sampleRate, freq, Q));
356
401
  }
357
402
  }
358
403
  /**
@@ -384,106 +429,72 @@ export class FrequencyShifter {
384
429
  this.sine = sine;
385
430
  }
386
431
  }
387
- /** A phase-locked loop that can detect a signal with a given frequency. */
388
- export class PLL {
432
+ /** Detects a pilot tone and returns its cosine and sine as an IQ signal. */
433
+ export class PilotDetector {
389
434
  sampleRate;
390
- /**
391
- * @param sampleRate The sample rate for the input signal.
392
- * @param freq The frequency of the signal to detect, in Hz.
393
- * @param tolerance The frequency tolerance for the signal, in Hz.
394
- */
395
- constructor(sampleRate, freq, tolerance) {
435
+ targetFreq;
436
+ constructor(sampleRate, targetFreq, tolerance) {
396
437
  this.sampleRate = sampleRate;
397
- this.phase = 0;
398
- this.speed = (2 * Math.PI * freq) / sampleRate;
399
- this.maxSpeedCorr = (2 * Math.PI * tolerance) / sampleRate;
400
- this.speedCorrection = 0;
401
- this.phaseCorrection = 0;
402
- this.biFlt = new IIRLowPassChain(4, sampleRate, tolerance);
403
- this.bqFlt = new IIRLowPassChain(4, sampleRate, tolerance);
404
- this.siFlt = new IIRLowPassChain(4, sampleRate, 7);
405
- this.sqFlt = new IIRLowPassChain(4, sampleRate, 7);
406
- this.piFlt = new IIRLowPassChain(4, sampleRate, 250);
407
- this.pqFlt = new IIRLowPassChain(4, sampleRate, 250);
408
- this.lbI = 0;
409
- this.lbQ = 0;
410
- this.iMagFlt = new IIRLowPass(sampleRate, 7);
411
- this.bMagFlt = new IIRLowPass(sampleRate, 7);
412
- this.cos = 1;
413
- this.sin = 0;
414
- this.locked = true;
415
- }
416
- phase;
417
- speed;
418
- maxSpeedCorr;
419
- speedCorrection;
420
- phaseCorrection;
421
- biFlt;
422
- bqFlt;
423
- siFlt;
424
- sqFlt;
425
- piFlt;
426
- pqFlt;
427
- lbI;
428
- lbQ;
429
- iMagFlt;
430
- bMagFlt;
431
- cos;
432
- sin;
433
- locked;
434
- add(sample) {
435
- let phase = this.phase;
436
- // Generate outputs with last computed parameters
437
- this.cos = Math.cos(phase);
438
- this.sin = Math.sin(phase);
439
- // Compute I+jQ, the difference between the input and our internal oscillator
440
- this.lbI = this.biFlt.add(Math.cos(-phase) * sample);
441
- this.lbQ = this.bqFlt.add(Math.sin(-phase) * sample);
442
- this.phase += this.speed;
443
- this.add = this.addRemaining;
444
- }
445
- addRemaining(sample) {
446
- let phase = this.phase;
447
- // Generate outputs with last computed parameters
448
- let angle = phase + this.speedCorrection + this.phaseCorrection;
449
- this.cos = Math.cos(angle);
450
- this.sin = Math.sin(angle);
451
- // Compute (bI, bQ), the beat (difference) between the input and our reference oscillator
452
- const rawI = Math.cos(-phase) * sample;
453
- const rawQ = Math.sin(-phase) * sample;
454
- const bI = this.biFlt.add(rawI);
455
- const bQ = this.bqFlt.add(rawQ);
456
- this.phase = this.phase + this.speed;
457
- // The beat is going to lag or advance wrt the input because of the input filter chain
458
- // Compute (sI, sQ), the average phase speed of (bI, bQ). That's the difference in frequency.
459
- // rs = b * conj(lb)
460
- const rsI = this.lbI * bI + this.lbQ * bQ;
461
- const rsQ = this.lbI * bQ - bI * this.lbQ;
462
- const sI = this.siFlt.add(rsI);
463
- const sQ = this.sqFlt.add(rsQ);
464
- this.lbI = bI;
465
- this.lbQ = bQ;
466
- const beatSpeed = atan2(sQ, sI);
467
- const speedCorr = Math.max(-this.maxSpeedCorr, Math.min(beatSpeed, this.maxSpeedCorr));
468
- this.speedCorrection += speedCorr;
469
- // Compute (dI, dQ), the difference between the beat (bI, bQ) and our speed correction (cI, cQ)
470
- // That's the difference in phase.
471
- const cI = Math.cos(this.speedCorrection);
472
- const cQ = Math.sin(this.speedCorrection);
473
- // rd = b * conj(c)
474
- const rdI = bI * cI + bQ * cQ;
475
- const rdQ = cI * bQ - bI * cQ;
476
- const dI = this.piFlt.add(rdI);
477
- const dQ = this.pqFlt.add(rdQ);
478
- // But the biFlt/bqFlt are going to shift the phase of (bI, bQ), so compensate for that.
479
- const freqCorrectionHz = (speedCorr * this.sampleRate) / (2 * Math.PI);
480
- const shift = this.biFlt.phaseShift(freqCorrectionHz);
481
- const phaseDiff = atan2(dQ, dI) + shift;
482
- this.phaseCorrection = phaseDiff;
483
- // Check if we are locked
484
- let mag = this.iMagFlt.add(Math.abs(sample));
485
- let bimag = this.bMagFlt.add(Math.hypot(bI, bQ) * 2);
486
- this.locked = bimag > mag / 15;
438
+ this.targetFreq = targetFreq;
439
+ this.iqPool = new IqPool(2);
440
+ this.downShifter = new FrequencyShifter(sampleRate);
441
+ this.upShifter = new FrequencyShifter(sampleRate);
442
+ this.filterI = new IIRLowPass2(sampleRate, tolerance * 100, 1);
443
+ this.filterQ = this.filterI.clone();
444
+ this.prev = [1, 0];
445
+ this.tolerance = (2 * Math.PI * tolerance) / sampleRate;
446
+ this.speedEstimate = 0;
447
+ this.speedDecay = decay(sampleRate, 0.25);
448
+ this.isLocked = false;
449
+ }
450
+ iqPool;
451
+ downShifter;
452
+ upShifter;
453
+ filterI;
454
+ filterQ;
455
+ prev;
456
+ tolerance;
457
+ speedEstimate;
458
+ speedDecay;
459
+ isLocked;
460
+ get locked() {
461
+ return this.isLocked;
462
+ }
463
+ extract(input) {
464
+ const speedDecay = this.speedDecay;
465
+ let lI = this.prev[0];
466
+ let lQ = this.prev[1];
467
+ let speedEstimate = this.speedEstimate;
468
+ let out = this.iqPool.get(input.length);
469
+ const I = out[0];
470
+ const Q = out[1];
471
+ I.set(input);
472
+ Q.fill(0);
473
+ this.downShifter.inPlace(I, Q, -this.targetFreq);
474
+ this.filterI.inPlace(I);
475
+ this.filterQ.inPlace(Q);
476
+ for (let i = 0; i < I.length; ++i) {
477
+ const m = Math.hypot(I[i], Q[i]);
478
+ if (m > 0) {
479
+ I[i] /= m;
480
+ Q[i] /= m;
481
+ speedEstimate +=
482
+ speedDecay *
483
+ (atan2(Q[i] * lI - I[i] * lQ, I[i] * lI + Q[i] * lQ) - speedEstimate);
484
+ }
485
+ else {
486
+ speedEstimate += speedDecay * (2 * this.tolerance - speedEstimate);
487
+ }
488
+ lI = I[i];
489
+ lQ = Q[i];
490
+ }
491
+ this.upShifter.inPlace(I, Q, this.targetFreq);
492
+ this.prev[0] = lI;
493
+ this.prev[1] = lQ;
494
+ this.speedEstimate = speedEstimate;
495
+ this.isLocked =
496
+ speedEstimate >= -this.tolerance && speedEstimate <= this.tolerance;
497
+ return out;
487
498
  }
488
499
  }
489
500
  //# sourceMappingURL=filters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/dsp/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/dsp/filters.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jtarrio/signals",
3
3
  "description": "Demodulate radio signals in your JavaScript or TypeScript application",
4
- "version": "0.9.2",
4
+ "version": "0.9.3",
5
5
  "author": "Jacobo Tarrio <jtarrio@gmail.com>",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {