@jtarrio/signals 0.9.7 → 0.9.9

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.
@@ -1 +1 @@
1
- {"version":3,"file":"demod-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,6BAA6B;AAC7B,MAAM,MAAM,WAAW,GAAG;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,6CAA6C;AAC7C,qBAAa,SAAU,YAAW,KAAK,CAAC,QAAQ,CAAC;IAU7C,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAOvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAMtB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAOf;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK,CAAC,QAAQ,CAAC;IASnD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAoBvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;AAED;;;;KAIK;AACL,qBAAa,eAAgB,YAAW,KAAK,CAAC,QAAQ,CAAC;IAUnD,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAiBvB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;CAkChD;AAED,sCAAsC;AACtC,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;gBACxC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAGnC,SAAS,CAAC,MAAM,IAAI,QAAQ;IAG5B,SAAS,IAAI,OAAO;IAGpB,SAAS,IAAI,OAAO;IAGpB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU;IAItC,YAAY,IAAI,MAAM;CAGvB"}
1
+ {"version":3,"file":"demod-wbfm.d.ts","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,6BAA6B;AAC7B,MAAM,MAAM,WAAW,GAAG;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,6CAA6C;AAC7C,qBAAa,SAAU,YAAW,KAAK,CAAC,QAAQ,CAAC;IAU7C,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAOvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAMtB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAOf;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,KAAK,CAAC,QAAQ,CAAC;IASnD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACN,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAoBvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAC,CAAqB;IACzC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;;;OAMG;IACH,UAAU,CACR,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB,WAAW;CAgBf;AAED;;;;KAIK;AACL,qBAAa,eAAgB,YAAW,KAAK,CAAC,QAAQ,CAAC;IAUnD,OAAO,CAAC,IAAI;IATd;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACP,IAAI,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE,WAAW;IAiBvB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ;IAItB;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,WAAW;CAkChD;AAED,sCAAsC;AACtC,qBAAa,UAAW,SAAQ,YAAY,CAAC,QAAQ,CAAC;gBACxC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAGnC,SAAS,CAAC,MAAM,IAAI,QAAQ;IAG5B,SAAS,IAAI,OAAO;IAGpB,SAAS,IAAI,OAAO;IAGpB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU;IAItC,YAAY,IAAI,MAAM;CAGvB"}
@@ -17,7 +17,7 @@ import { makeLowPassKernel } from "../dsp/coefficients.js";
17
17
  import { FMDemodulator, StereoSeparator } from "../dsp/demodulators.js";
18
18
  import { Deemphasis, FrequencyShifter, IqFFTFilter, IqFIRFilter, } from "../dsp/filters.js";
19
19
  import { getPower } from "../dsp/power.js";
20
- import { ComplexDownsampler, RealDownsampler } from "../dsp/resamplers.js";
20
+ import { ComplexDownsampler, RealDownsampler, } from "../dsp/resamplers.js";
21
21
  import { Configurator } from "./modes.js";
22
22
  /** A demodulator for wideband FM signals. */
23
23
  export class DemodWBFM {
@@ -144,7 +144,7 @@ export class DemodWBFMStage2 {
144
144
  const filterF = Math.min(15000, outRate / 2);
145
145
  const kernel = makeLowPassKernel(inRate, filterF, audioTaps, 1 / 0.9);
146
146
  this.monoSampler = new RealDownsampler(inRate, outRate, kernel);
147
- this.stereoSampler = new RealDownsampler(inRate, outRate, kernel);
147
+ this.stereoSampler = this.monoSampler.clone();
148
148
  this.stereoSeparator = new StereoSeparator(inRate, pilotF);
149
149
  this.leftDeemph = new Deemphasis(outRate, deemphTc);
150
150
  this.rightDeemph = new Deemphasis(outRate, deemphTc);
@@ -1 +1 @@
1
- {"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,77 @@
1
- /** A class to convert a real input to a lower sample rate. */
2
- export declare class RealDownsampler {
1
+ /** Interface for classes that convert real signals between sample rates. */
2
+ export interface RealResampler {
3
+ resample(samples: Float32Array): Float32Array;
4
+ getDelay(): number;
5
+ clone(): RealResampler;
6
+ }
7
+ /** Interface for classes that convert I/Q signals between sample rates. */
8
+ export interface IqResampler {
9
+ resample(I: Float32Array, Q: Float32Array): [Float32Array, Float32Array];
10
+ getDelay(): number;
11
+ clone(): IqResampler;
12
+ }
13
+ /** Options for getRealResampler() and getIqResampler() */
14
+ export type ResamplerOptions = {
3
15
  /**
4
- * @param inRate The input sample rate.
5
- * @param outRate The output sample rate.
6
- * @param filterLen The size of the low-pass filter.
16
+ * The low-pass cut-off frequency for the filter.
17
+ * If unspecified, the lower of half the input or output sample rate is used.
7
18
  */
8
- constructor(inRate: number, outRate: number, filterLen: number);
19
+ lowPassFrequency?: number;
9
20
  /**
10
- * @param inRate The input sample rate.
11
- * @param outRate The output sample rate.
12
- * @param kernel The kernel to apply to the signal before downsampling.
21
+ * The number of taps that should be applied per filter "leg".
22
+ * If unspecified, 101 taps are used.
13
23
  */
14
- constructor(inRate: number, outRate: number, kernel: Float32Array);
15
- private downsampler;
24
+ tapsPerLeg?: number;
16
25
  /**
17
- * @param input The signal in the original sample rate.
18
- * @returns The resampled signal.
26
+ * The number of taps for the filter.
27
+ * Takes priority over decimatedTaps, if specified.
28
+ * For a downscaling filter, taps == decimatedTaps.
29
+ * For an upscaling or rescaling filter, taps == decimatedTaps * upscaleFactor
19
30
  */
20
- downsample(input: Float32Array): Float32Array;
31
+ taps?: number;
32
+ /**
33
+ * A gain for the filter.
34
+ * If unspecified, 1 is used.
35
+ */
36
+ gain?: number;
37
+ /**
38
+ * A FIR kernel to use for the filter.
39
+ * If unspecified, a suitable kernel for the low pass frequency and number of pass is used.
40
+ */
41
+ kernel?: Float32Array;
42
+ };
43
+ /** Returns a RealResampler that converts signals from the input rate to the output rate. */
44
+ export declare function getRealResampler(inRate: number, outRate: number, options?: ResamplerOptions): RealResampler;
45
+ /** Returns an IqResampler that converts signals from the input rate to the output rate. */
46
+ export declare function getIqResampler(inRate: number, outRate: number, options?: ResamplerOptions): IqResampler;
47
+ /**
48
+ * A class to convert the input to a lower sample rate.
49
+ * @deprecated Use getRealResampler() instead.
50
+ */
51
+ export declare class RealDownsampler {
52
+ private inRate;
53
+ private outRate;
54
+ constructor(inRate: number, outRate: number, filterSpec: number | Float32Array);
55
+ private ratio;
56
+ private filter;
57
+ private pool;
58
+ downsample(samples: Float32Array): Float32Array;
21
59
  getDelay(): number;
60
+ clone(): RealDownsampler;
22
61
  }
23
- /** A class to convert a complex input to a lower sample rate. */
62
+ /**
63
+ * A class to convert a complex input to a lower sample rate.
64
+ * @deprecated Use getIqResampler() instead.
65
+ */
24
66
  export declare class ComplexDownsampler {
25
67
  /**
26
68
  * @param inRate The input sample rate.
27
69
  * @param outRate The output sample rate.
28
- * @param filterLen The size of the low-pass filter.
29
- */
30
- constructor(inRate: number, outRate: number, filterLen: number);
31
- /**
32
- * @param inRate The input sample rate.
33
- * @param outRate The output sample rate.
34
- * @param kernel The kernel to apply to the signal before downsampling.
70
+ * @param filterSpec The size or kernel of the low-pass filter to apply to the signal before downsampling.
35
71
  */
36
- constructor(inRate: number, outRate: number, kernel: Float32Array);
37
- private downsamplerI;
38
- private downsamplerQ;
72
+ constructor(inRate: number, outRate: number, filterSpec: number | Float32Array);
73
+ private downI;
74
+ private downQ;
39
75
  /**
40
76
  * @param I The signal's real component.
41
77
  * @param Q The signal's imaginary component.
@@ -44,4 +80,18 @@ export declare class ComplexDownsampler {
44
80
  downsample(I: Float32Array, Q: Float32Array): [Float32Array, Float32Array];
45
81
  getDelay(): number;
46
82
  }
83
+ /**
84
+ * Computes an output sample rate that makes for the simplest rescaler.
85
+ *
86
+ * For example, to resample 1024000 to 336000 samples/sec,
87
+ * the resampler has to upsample 21x and then downsample 64x.
88
+ * However, with a tolerance of 50000 samples/sec, you could instead
89
+ * resample to 384000 samples/sec, which only requires upsampling 3x and downsampling 8x.
90
+ *
91
+ * @param inRate The input sample rate.
92
+ * @param outRate The desired output sample rate.
93
+ * @param tolerance The variation that's allowed for the sample rate (over or under the outRate).
94
+ * @returns The computed sample rate.
95
+ */
96
+ export declare function getGoodResampleRate(inRate: number, outRate: number, tolerance: number): number;
47
97
  //# sourceMappingURL=resamplers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resamplers.d.ts","sourceRoot":"","sources":["../../src/dsp/resamplers.ts"],"names":[],"mappings":"AAyEA,8DAA8D;AAC9D,qBAAa,eAAe;IAC1B;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAC9D;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IASjE,OAAO,CAAC,WAAW,CAAc;IAEjC;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY;IAI7C,QAAQ,IAAI,MAAM;CAGnB;AAED,iEAAiE;AACjE,qBAAa,kBAAkB;IAC7B;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAC9D;;;;OAIG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IAUjE,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,YAAY,CAAc;IAElC;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC;IAI1E,QAAQ,IAAI,MAAM;CAGnB"}
1
+ {"version":3,"file":"resamplers.d.ts","sourceRoot":"","sources":["../../src/dsp/resamplers.ts"],"names":[],"mappings":"AAoBA,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAAC;IAC9C,QAAQ,IAAI,MAAM,CAAC;IACnB,KAAK,IAAI,aAAa,CAAC;CACxB;AAED,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACzE,QAAQ,IAAI,MAAM,CAAC;IACnB,KAAK,IAAI,WAAW,CAAC;CACtB;AAkLD,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,CAgCf;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,WAAW,CAEb;AAED;;;GAGG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;gBADP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,GAAG,YAAY;IAWnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,IAAI,CAAc;IAE1B,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY;IAW/C,QAAQ,IAAI,MAAM;IAIlB,KAAK,IAAI,eAAe;CAKzB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B;;;;OAIG;gBAED,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,YAAY;IAMnC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,KAAK,CAAkB;IAE/B;;;;OAIG;IACH,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC;IAI1E,QAAQ,IAAI,MAAM;CAGnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,MAAM,CA6CR"}
@@ -12,87 +12,399 @@
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 { RadioError, RadioErrorType } from "../errors.js";
15
16
  import { Float32Pool } from "./buffers.js";
16
17
  import { makeLowPassKernel } from "./coefficients.js";
17
18
  import { FIRFilter } from "./filters.js";
18
- /** A class to convert the input to a lower sample rate using a FIR filter. */
19
- class Downsampler {
19
+ class PureRealDownsampler {
20
20
  ratio;
21
- /**
22
- * @param ratio The ratio of input/output sample rates.
23
- * @param kernel The coefficients for the low-pass filter.
24
- */
25
- constructor(ratio, filter) {
21
+ constructor(ratio, kernel) {
26
22
  this.ratio = ratio;
27
- this.filter = filter.clone();
23
+ if (ratio != Math.floor(ratio))
24
+ throw new RadioError(`Non-integer downsample ratio: ${ratio}`, RadioErrorType.DemodulationError);
25
+ this.filter = new FIRFilter(kernel);
28
26
  this.pool = new Float32Pool(2);
27
+ this.residual = 0;
29
28
  }
30
29
  filter;
31
30
  pool;
32
- /**
33
- * Returns a downsampled version of the given samples.
34
- * @param samples The sample block to downsample.
35
- * @returns The downsampled block.
36
- */
37
- downsample(samples) {
31
+ residual;
32
+ resample(samples) {
38
33
  const ratio = this.ratio;
39
- const len = Math.floor(samples.length / ratio);
40
- let output = this.pool.get(len);
34
+ const skip = (ratio - this.residual) % ratio;
35
+ const outLen = Math.floor((this.residual + samples.length - 1) / ratio) -
36
+ Math.floor((this.residual - 1) / ratio);
37
+ let output = this.pool.get(outLen);
41
38
  this.filter.loadSamples(samples);
42
- for (let i = 0; i < len; ++i) {
43
- output[i] = this.filter.get(Math.floor(i * ratio));
39
+ for (let i = 0; i < outLen; ++i) {
40
+ output[i] = this.filter.get(skip + i * ratio);
44
41
  }
42
+ this.residual = (this.residual + samples.length) % ratio;
45
43
  return output;
46
44
  }
47
45
  getDelay() {
48
46
  return this.filter.getDelay() / this.ratio;
49
47
  }
50
48
  clone() {
51
- return new Downsampler(this.ratio, this.filter);
49
+ let out = new PureRealDownsampler(this.ratio, new Float32Array(1));
50
+ out.filter = this.filter.clone();
51
+ return out;
52
+ }
53
+ }
54
+ class PureRealUpsampler {
55
+ ratio;
56
+ constructor(ratio, kernel) {
57
+ this.ratio = ratio;
58
+ if (ratio != Math.floor(ratio))
59
+ throw new RadioError(`Non-integer upsample ratio: ${ratio}`, RadioErrorType.DemodulationError);
60
+ this.filter = new Polyfilter(kernel, ratio);
61
+ this.pool = new Float32Pool(2);
62
+ }
63
+ filter;
64
+ pool;
65
+ resample(samples) {
66
+ const ratio = this.ratio;
67
+ const outLen = samples.length * ratio;
68
+ let output = this.pool.get(outLen);
69
+ this.filter.loadSamples(samples);
70
+ for (let i = 0, o = 0; i < samples.length; ++i) {
71
+ for (let j = 0; j < ratio; ++j, ++o) {
72
+ output[o] = this.filter.get(j, i);
73
+ }
74
+ }
75
+ return output;
76
+ }
77
+ getDelay() {
78
+ return this.filter.getDelay();
79
+ }
80
+ clone() {
81
+ let out = new PureRealUpsampler(this.ratio, new Float32Array(this.ratio));
82
+ out.filter = this.filter.clone();
83
+ return out;
84
+ }
85
+ }
86
+ class RealUpDownsampler {
87
+ upRatio;
88
+ downRatio;
89
+ constructor(upRatio, downRatio, kernel) {
90
+ this.upRatio = upRatio;
91
+ this.downRatio = downRatio;
92
+ if (upRatio != Math.floor(upRatio))
93
+ throw new RadioError(`Non-integer upsample ratio: ${upRatio}`, RadioErrorType.DemodulationError);
94
+ if (downRatio != Math.floor(downRatio))
95
+ throw new RadioError(`Non-integer downsample ratio: ${downRatio}`, RadioErrorType.DemodulationError);
96
+ this.filter = new Polyfilter(kernel, upRatio);
97
+ this.pool = new Float32Pool(4);
98
+ this.residual = 0;
99
+ }
100
+ filter;
101
+ pool;
102
+ residual;
103
+ resample(samples) {
104
+ const upRatio = this.upRatio;
105
+ const midLen = samples.length * upRatio;
106
+ this.filter.loadSamples(samples);
107
+ const downRatio = this.downRatio;
108
+ const skip = (downRatio - this.residual) % downRatio;
109
+ const outLen = Math.floor((this.residual + midLen - 1) / downRatio) -
110
+ Math.floor((this.residual - 1) / downRatio);
111
+ let output = this.pool.get(outLen);
112
+ const di = Math.floor(downRatio / upRatio);
113
+ const dj = downRatio % upRatio;
114
+ let i = Math.floor(skip / upRatio);
115
+ let j = skip % upRatio;
116
+ for (let k = 0; k < outLen; ++k) {
117
+ output[k] = this.filter.get(j, i);
118
+ j += dj;
119
+ i += di;
120
+ if (j >= upRatio) {
121
+ j -= upRatio;
122
+ ++i;
123
+ }
124
+ }
125
+ this.residual = (this.residual + midLen) % downRatio;
126
+ return output;
127
+ }
128
+ getDelay() {
129
+ return this.filter.getDelay() / this.downRatio;
130
+ }
131
+ clone() {
132
+ let out = new RealUpDownsampler(this.upRatio, this.downRatio, new Float32Array(this.upRatio));
133
+ out.filter = this.filter.clone();
134
+ return out;
135
+ }
136
+ }
137
+ class GenericIqResampler {
138
+ constructor(realResampler) {
139
+ this.resampleI = realResampler.clone();
140
+ this.resampleQ = realResampler.clone();
141
+ }
142
+ resampleI;
143
+ resampleQ;
144
+ resample(I, Q) {
145
+ return [this.resampleI.resample(I), this.resampleQ.resample(Q)];
146
+ }
147
+ getDelay() {
148
+ return this.resampleI.getDelay();
149
+ }
150
+ clone() {
151
+ return new GenericIqResampler(this.resampleI);
152
+ }
153
+ }
154
+ /** Returns a RealResampler that converts signals from the input rate to the output rate. */
155
+ export function getRealResampler(inRate, outRate, options) {
156
+ if (inRate > outRate && inRate % outRate == 0) {
157
+ // Pure downsampler
158
+ let downFactor = inRate / outRate;
159
+ let corner = options?.lowPassFrequency || outRate / 2;
160
+ let taps = options?.taps || (options?.tapsPerLeg || 101) * downFactor;
161
+ let gain = options?.gain;
162
+ let kernel = options?.kernel || makeLowPassKernel(inRate, corner, taps, gain);
163
+ return new PureRealDownsampler(inRate / outRate, kernel);
164
+ }
165
+ if (inRate < outRate && outRate % inRate == 0) {
166
+ // Pure upsampler
167
+ let upFactor = outRate / inRate;
168
+ let corner = options?.lowPassFrequency || inRate / 2;
169
+ let taps = options?.taps || options?.tapsPerLeg || 101;
170
+ let gain = options?.gain;
171
+ let kernel = options?.kernel || makeLowPassKernel(outRate, corner, taps, gain);
172
+ return new PureRealUpsampler(upFactor, kernel);
52
173
  }
174
+ // Resampler
175
+ let gcd = greatestCommonDivisor(inRate, outRate);
176
+ let upFactor = outRate / gcd;
177
+ let downFactor = inRate / gcd;
178
+ let interRate = (inRate * outRate) / gcd;
179
+ let corner = options?.lowPassFrequency || Math.min(inRate, outRate) / 2;
180
+ let taps = options?.taps || (options?.tapsPerLeg || 101) * downFactor;
181
+ let gain = options?.gain;
182
+ let kernel = options?.kernel || makeLowPassKernel(interRate, corner, taps, gain);
183
+ return new RealUpDownsampler(upFactor, downFactor, kernel);
53
184
  }
54
- function getDownsampler(inRate, outRate, filterSpec) {
55
- let ratio = inRate / outRate;
56
- let filter = filterSpec;
57
- if (typeof filter === "number")
58
- filter = makeLowPassKernel(inRate, outRate / 2, filter);
59
- return new Downsampler(ratio, new FIRFilter(filter));
185
+ /** Returns an IqResampler that converts signals from the input rate to the output rate. */
186
+ export function getIqResampler(inRate, outRate, options) {
187
+ return new GenericIqResampler(getRealResampler(inRate, outRate, options));
60
188
  }
61
- /** A class to convert a real input to a lower sample rate. */
189
+ /**
190
+ * A class to convert the input to a lower sample rate.
191
+ * @deprecated Use getRealResampler() instead.
192
+ */
62
193
  export class RealDownsampler {
194
+ inRate;
195
+ outRate;
63
196
  constructor(inRate, outRate, filterSpec) {
64
- this.downsampler = getDownsampler(inRate, outRate, filterSpec);
197
+ this.inRate = inRate;
198
+ this.outRate = outRate;
199
+ this.ratio = inRate / outRate;
200
+ let kernel = typeof filterSpec === "number"
201
+ ? makeLowPassKernel(inRate, outRate / 2, filterSpec)
202
+ : filterSpec;
203
+ this.filter = new FIRFilter(kernel);
204
+ this.pool = new Float32Pool(2);
65
205
  }
66
- downsampler;
67
- /**
68
- * @param input The signal in the original sample rate.
69
- * @returns The resampled signal.
70
- */
71
- downsample(input) {
72
- return this.downsampler.downsample(input);
206
+ ratio;
207
+ filter;
208
+ pool;
209
+ downsample(samples) {
210
+ const ratio = this.ratio;
211
+ const len = Math.floor(samples.length / ratio);
212
+ let output = this.pool.get(len);
213
+ this.filter.loadSamples(samples);
214
+ for (let i = 0; i < len; ++i) {
215
+ output[i] = this.filter.get(Math.floor(i * ratio));
216
+ }
217
+ return output;
73
218
  }
74
219
  getDelay() {
75
- return this.downsampler.getDelay();
220
+ return this.filter.getDelay() / this.ratio;
221
+ }
222
+ clone() {
223
+ let out = new RealDownsampler(this.inRate, this.outRate, 1);
224
+ out.filter = this.filter.clone();
225
+ return out;
76
226
  }
77
227
  }
78
- /** A class to convert a complex input to a lower sample rate. */
228
+ /**
229
+ * A class to convert a complex input to a lower sample rate.
230
+ * @deprecated Use getIqResampler() instead.
231
+ */
79
232
  export class ComplexDownsampler {
233
+ /**
234
+ * @param inRate The input sample rate.
235
+ * @param outRate The output sample rate.
236
+ * @param filterSpec The size or kernel of the low-pass filter to apply to the signal before downsampling.
237
+ */
80
238
  constructor(inRate, outRate, filterSpec) {
81
- this.downsamplerI = getDownsampler(inRate, outRate, filterSpec);
82
- this.downsamplerQ = this.downsamplerI.clone();
239
+ this.downI = new RealDownsampler(inRate, outRate, filterSpec);
240
+ this.downQ = this.downI.clone();
83
241
  }
84
- downsamplerI;
85
- downsamplerQ;
242
+ downI;
243
+ downQ;
86
244
  /**
87
245
  * @param I The signal's real component.
88
246
  * @param Q The signal's imaginary component.
89
247
  * @returns An array with the output's real and imaginary components.
90
248
  */
91
249
  downsample(I, Q) {
92
- return [this.downsamplerI.downsample(I), this.downsamplerQ.downsample(Q)];
250
+ return [this.downI.downsample(I), this.downQ.downsample(Q)];
93
251
  }
94
252
  getDelay() {
95
- return this.downsamplerI.getDelay();
253
+ return this.downI.getDelay();
254
+ }
255
+ }
256
+ /**
257
+ * Computes an output sample rate that makes for the simplest rescaler.
258
+ *
259
+ * For example, to resample 1024000 to 336000 samples/sec,
260
+ * the resampler has to upsample 21x and then downsample 64x.
261
+ * However, with a tolerance of 50000 samples/sec, you could instead
262
+ * resample to 384000 samples/sec, which only requires upsampling 3x and downsampling 8x.
263
+ *
264
+ * @param inRate The input sample rate.
265
+ * @param outRate The desired output sample rate.
266
+ * @param tolerance The variation that's allowed for the sample rate (over or under the outRate).
267
+ * @returns The computed sample rate.
268
+ */
269
+ export function getGoodResampleRate(inRate, outRate, tolerance) {
270
+ if (inRate == outRate)
271
+ return inRate;
272
+ let left = outRate - tolerance;
273
+ let right = outRate + tolerance;
274
+ if (left <= inRate && inRate <= right)
275
+ return inRate;
276
+ if (inRate > outRate) {
277
+ for (let d = 2;; ++d) {
278
+ let best = -1;
279
+ let bestDist = outRate;
280
+ const minM = Math.ceil((left * d) / inRate);
281
+ const maxM = Math.floor((right * d) / inRate);
282
+ for (let m = minM; m <= maxM; ++m) {
283
+ let target = (inRate * m) / d;
284
+ if (Number.isInteger(target)) {
285
+ let dist = Math.abs(target - outRate);
286
+ if (dist < bestDist || best < 0) {
287
+ best = target;
288
+ bestDist = dist;
289
+ }
290
+ }
291
+ }
292
+ if (best > 0)
293
+ return best;
294
+ }
295
+ }
296
+ for (let m = 2;; ++m) {
297
+ let best = -1;
298
+ let bestDist = outRate;
299
+ const minD = Math.ceil((m * inRate) / right);
300
+ const maxD = Math.floor((m * inRate) / left);
301
+ for (let d = minD; d <= maxD; ++d) {
302
+ let target = (inRate * m) / d;
303
+ if (Number.isInteger(target)) {
304
+ let dist = Math.abs(target - outRate);
305
+ if (dist < bestDist || best < 0) {
306
+ best = target;
307
+ bestDist = dist;
308
+ }
309
+ }
310
+ }
311
+ if (best > 0)
312
+ return best;
313
+ }
314
+ }
315
+ function greatestCommonDivisor(a, b) {
316
+ if (a < b) {
317
+ [a, b] = [b, a];
318
+ }
319
+ while (b != 0) {
320
+ [a, b] = [b, a % b];
321
+ }
322
+ return a;
323
+ }
324
+ /** A polyphase filter. */
325
+ class Polyfilter {
326
+ constructor(kernel, ratio) {
327
+ this.delay = Math.floor(kernel.length / 2);
328
+ if (kernel.length % ratio != 0) {
329
+ const wantedLen = ratio * Math.ceil(kernel.length / ratio);
330
+ const newKernel = new Float32Array(wantedLen);
331
+ newKernel.subarray(wantedLen - kernel.length, wantedLen).set(kernel);
332
+ kernel = newKernel;
333
+ }
334
+ const coefLen = kernel.length / ratio;
335
+ this.coefs = [];
336
+ for (let i = 0; i < ratio; ++i) {
337
+ const filterKernel = new Float32Array(coefLen);
338
+ for (let j = 0; j < filterKernel.length; ++j) {
339
+ filterKernel[j] = kernel[(j + 1) * ratio - i - 1] * ratio;
340
+ }
341
+ this.coefs[i] = filterKernel;
342
+ }
343
+ this.offset = coefLen - 1;
344
+ this.pool = new Float32Pool(2, 2 * this.offset);
345
+ this.curSamples = this.pool.get(this.offset);
346
+ }
347
+ delay;
348
+ coefs;
349
+ offset;
350
+ pool;
351
+ curSamples;
352
+ clone() {
353
+ let out = new Polyfilter(new Float32Array(this.coefs.length), this.coefs.length);
354
+ out.delay = this.delay;
355
+ out.coefs = this.coefs;
356
+ out.offset = this.offset;
357
+ return out;
358
+ }
359
+ getDelay() {
360
+ return this.delay;
361
+ }
362
+ /**
363
+ * Loads a new block of samples to filter.
364
+ * @param samples The samples to load.
365
+ */
366
+ loadSamples(samples) {
367
+ const len = samples.length + this.offset;
368
+ if (this.curSamples.length != len) {
369
+ let newSamples = this.pool.get(len);
370
+ newSamples.set(this.curSamples.subarray(this.curSamples.length - this.offset));
371
+ this.curSamples = newSamples;
372
+ }
373
+ else {
374
+ this.curSamples.copyWithin(0, samples.length);
375
+ }
376
+ this.curSamples.set(samples, this.offset);
377
+ }
378
+ /**
379
+ * Returns a filtered sample.
380
+ * Be very careful when you modify this function. About 85% of the total execution
381
+ * time is spent here, so performance is critical.
382
+ * @param index The index of the sample to return, corresponding
383
+ * to the same index in the latest sample block loaded via loadSamples().
384
+ */
385
+ get(phase, index) {
386
+ const coefs = this.coefs[phase];
387
+ let i = 0;
388
+ let out = 0;
389
+ let len = coefs.length;
390
+ let len4 = 4 * Math.floor(len / 4);
391
+ while (i < len4) {
392
+ out +=
393
+ coefs[i++] * this.curSamples[index++] +
394
+ coefs[i++] * this.curSamples[index++] +
395
+ coefs[i++] * this.curSamples[index++] +
396
+ coefs[i++] * this.curSamples[index++];
397
+ }
398
+ let len2 = 2 * Math.floor(len / 2);
399
+ while (i < len2) {
400
+ out +=
401
+ coefs[i++] * this.curSamples[index++] +
402
+ coefs[i++] * this.curSamples[index++];
403
+ }
404
+ while (i < len) {
405
+ out += coefs[i++] * this.curSamples[index++];
406
+ }
407
+ return out;
96
408
  }
97
409
  }
98
410
  //# sourceMappingURL=resamplers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resamplers.js","sourceRoot":"","sources":["../../src/dsp/resamplers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resamplers.js","sourceRoot":"","sources":["../../src/dsp/resamplers.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.7",
4
+ "version": "0.9.9",
5
5
  "author": "Jacobo Tarrio <jtarrio@gmail.com>",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {