@jtarrio/signals 0.9.8 → 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.
- package/dist/demod/demod-wbfm.d.ts.map +1 -1
- package/dist/demod/demod-wbfm.js +5 -8
- package/dist/demod/demod-wbfm.js.map +1 -1
- package/dist/dsp/resamplers.d.ts +30 -13
- package/dist/dsp/resamplers.d.ts.map +1 -1
- package/dist/dsp/resamplers.js +215 -87
- package/dist/dsp/resamplers.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
package/dist/demod/demod-wbfm.js
CHANGED
|
@@ -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,
|
|
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 {
|
|
@@ -142,11 +142,8 @@ export class DemodWBFMStage2 {
|
|
|
142
142
|
1e6;
|
|
143
143
|
const audioTaps = options?.audioTaps || 41;
|
|
144
144
|
const filterF = Math.min(15000, outRate / 2);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
taps: audioTaps,
|
|
148
|
-
gain: 1 / 0.9,
|
|
149
|
-
});
|
|
145
|
+
const kernel = makeLowPassKernel(inRate, filterF, audioTaps, 1 / 0.9);
|
|
146
|
+
this.monoSampler = new RealDownsampler(inRate, outRate, kernel);
|
|
150
147
|
this.stereoSampler = this.monoSampler.clone();
|
|
151
148
|
this.stereoSeparator = new StereoSeparator(inRate, pilotF);
|
|
152
149
|
this.leftDeemph = new Deemphasis(outRate, deemphTc);
|
|
@@ -171,11 +168,11 @@ export class DemodWBFMStage2 {
|
|
|
171
168
|
* @returns The demodulated audio signal.
|
|
172
169
|
*/
|
|
173
170
|
demodulate(samplesI) {
|
|
174
|
-
let audio = this.monoSampler.
|
|
171
|
+
let audio = this.monoSampler.downsample(samplesI);
|
|
175
172
|
if (this.mode.stereo) {
|
|
176
173
|
const stereo = this.stereoSeparator.separate(samplesI);
|
|
177
174
|
if (stereo.found) {
|
|
178
|
-
const diffAudio = this.stereoSampler.
|
|
175
|
+
const diffAudio = this.stereoSampler.downsample(stereo.diff);
|
|
179
176
|
let leftAudio = this.outPool.get(audio.length);
|
|
180
177
|
let rightAudio = audio;
|
|
181
178
|
for (let i = 0; i < diffAudio.length; ++i) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,kDAAkD;AAClD,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,UAAU,EAIV,gBAAgB,EAChB,WAAW,EAEX,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"demod-wbfm.js","sourceRoot":"","sources":["../../src/demod/demod-wbfm.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,kDAAkD;AAClD,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,UAAU,EAIV,gBAAgB,EAChB,WAAW,EAEX,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAElB,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAuB9D,6CAA6C;AAC7C,MAAM,OAAO,SAAS;IAUV;IATV;;;;;OAKG;IACH,YACE,MAAc,EACd,OAAe,EACP,IAAc,EACtB,OAAqB;QADb,SAAI,GAAJ,IAAI,CAAU;QAGtB,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAEO,MAAM,CAAkB;IACxB,MAAM,CAAkB;IAEhC,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CACR,QAAsB,EACtB,QAAsB,EACtB,UAAkB;QAElB,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAEzC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAShB;IACA;IATV;;;;;OAKG;IACH,YACE,MAAc,EACN,OAAe,EACf,IAAc,EACtB,OAAqB;QAFb,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAU;QAGtB,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,GAAG,CAAC;QACxD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,GAAG,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CACvC,MAAM,EACN,OAAO,EACP,eAAe,CAChB,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,YAAY;YACjC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC;YACzB,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IACvD,CAAC;IAEO,OAAO,CAAmB;IAC1B,WAAW,CAAsB;IACjC,MAAM,CAAW;IACjB,WAAW,CAAgB;IAEnC,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CACR,QAAsB,EACtB,QAAsB,EACtB,UAAkB;QAElB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW;YAC3B,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACjD,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzB,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,WAAW,GAAG,QAAQ;SAC5B,CAAC;IACJ,CAAC;CACF;AAED;;;;KAIK;AACL,MAAM,OAAO,eAAe;IAUhB;IATV;;;;;OAKG;IACH,YACE,MAAc,EACd,OAAe,EACP,IAAc,EACtB,OAAqB;QADb,SAAI,GAAJ,IAAI,CAAU;QAGtB,MAAM,MAAM,GAAG,KAAK,CAAC;QACrB,MAAM,QAAQ,GACZ,CAAC,OAAO,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;YACrE,GAAG,CAAC;QACN,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,WAAW,CAAkB;IAC7B,aAAa,CAAkB;IAC/B,eAAe,CAAkB;IACjC,UAAU,CAAa;IACvB,WAAW,CAAa;IACxB,OAAO,CAAc;IAE7B,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,QAAsB;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC7D,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC1C,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBACvC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrC,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAE,IAAI;oBACZ,GAAG,EAAE,CAAC;iBACP,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO;YACL,IAAI,EAAE,KAAK;YACX,KAAK;YACL,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAC;SACP,CAAC;IACJ,CAAC;CACF;AAED,sCAAsC;AACtC,MAAM,OAAO,UAAW,SAAQ,YAAsB;IACpD,YAAY,IAAuB;QACjC,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IACS,MAAM;QACd,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,SAAS,CAAC,MAAe;QACvB,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
package/dist/dsp/resamplers.d.ts
CHANGED
|
@@ -18,9 +18,16 @@ export type ResamplerOptions = {
|
|
|
18
18
|
*/
|
|
19
19
|
lowPassFrequency?: number;
|
|
20
20
|
/**
|
|
21
|
-
* The number of taps
|
|
21
|
+
* The number of taps that should be applied per filter "leg".
|
|
22
22
|
* If unspecified, 101 taps are used.
|
|
23
23
|
*/
|
|
24
|
+
tapsPerLeg?: number;
|
|
25
|
+
/**
|
|
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
|
|
30
|
+
*/
|
|
24
31
|
taps?: number;
|
|
25
32
|
/**
|
|
26
33
|
* A gain for the filter.
|
|
@@ -42,20 +49,15 @@ export declare function getIqResampler(inRate: number, outRate: number, options?
|
|
|
42
49
|
* @deprecated Use getRealResampler() instead.
|
|
43
50
|
*/
|
|
44
51
|
export declare class RealDownsampler {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* @param outRate The output sample rate.
|
|
48
|
-
* @param filterSpec The size or kernel of the low-pass filter to apply to the signal before downsampling.
|
|
49
|
-
*/
|
|
52
|
+
private inRate;
|
|
53
|
+
private outRate;
|
|
50
54
|
constructor(inRate: number, outRate: number, filterSpec: number | Float32Array);
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
* @param samples The sample block to downsample.
|
|
55
|
-
* @returns The downsampled block.
|
|
56
|
-
*/
|
|
55
|
+
private ratio;
|
|
56
|
+
private filter;
|
|
57
|
+
private pool;
|
|
57
58
|
downsample(samples: Float32Array): Float32Array;
|
|
58
59
|
getDelay(): number;
|
|
60
|
+
clone(): RealDownsampler;
|
|
59
61
|
}
|
|
60
62
|
/**
|
|
61
63
|
* A class to convert a complex input to a lower sample rate.
|
|
@@ -68,7 +70,8 @@ export declare class ComplexDownsampler {
|
|
|
68
70
|
* @param filterSpec The size or kernel of the low-pass filter to apply to the signal before downsampling.
|
|
69
71
|
*/
|
|
70
72
|
constructor(inRate: number, outRate: number, filterSpec: number | Float32Array);
|
|
71
|
-
private
|
|
73
|
+
private downI;
|
|
74
|
+
private downQ;
|
|
72
75
|
/**
|
|
73
76
|
* @param I The signal's real component.
|
|
74
77
|
* @param Q The signal's imaginary component.
|
|
@@ -77,4 +80,18 @@ export declare class ComplexDownsampler {
|
|
|
77
80
|
downsample(I: Float32Array, Q: Float32Array): [Float32Array, Float32Array];
|
|
78
81
|
getDelay(): number;
|
|
79
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;
|
|
80
97
|
//# sourceMappingURL=resamplers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
package/dist/dsp/resamplers.js
CHANGED
|
@@ -57,48 +57,29 @@ class PureRealUpsampler {
|
|
|
57
57
|
this.ratio = ratio;
|
|
58
58
|
if (ratio != Math.floor(ratio))
|
|
59
59
|
throw new RadioError(`Non-integer upsample ratio: ${ratio}`, RadioErrorType.DemodulationError);
|
|
60
|
-
this.
|
|
61
|
-
if (kernel.length % ratio != 0) {
|
|
62
|
-
const wantedLen = ratio * Math.ceil(kernel.length / ratio);
|
|
63
|
-
const newKernel = new Float32Array(wantedLen);
|
|
64
|
-
newKernel.subarray(wantedLen - kernel.length, wantedLen).set(kernel);
|
|
65
|
-
kernel = newKernel;
|
|
66
|
-
}
|
|
67
|
-
this.filters = [];
|
|
68
|
-
for (let i = 0; i < ratio; ++i) {
|
|
69
|
-
const filterKernel = new Float32Array(kernel.length / ratio);
|
|
70
|
-
for (let j = 0; j < filterKernel.length; ++j) {
|
|
71
|
-
filterKernel[j] = kernel[(j + 1) * ratio - i - 1] * ratio;
|
|
72
|
-
}
|
|
73
|
-
this.filters[i] = new FIRFilter(filterKernel);
|
|
74
|
-
}
|
|
60
|
+
this.filter = new Polyfilter(kernel, ratio);
|
|
75
61
|
this.pool = new Float32Pool(2);
|
|
76
62
|
}
|
|
77
|
-
|
|
78
|
-
filters;
|
|
63
|
+
filter;
|
|
79
64
|
pool;
|
|
80
65
|
resample(samples) {
|
|
81
66
|
const ratio = this.ratio;
|
|
82
67
|
const outLen = samples.length * ratio;
|
|
83
68
|
let output = this.pool.get(outLen);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
for (let j = 0; j < ratio; ++j) {
|
|
89
|
-
output[i * ratio + j] = this.filters[j].get(i);
|
|
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);
|
|
90
73
|
}
|
|
91
74
|
}
|
|
92
75
|
return output;
|
|
93
76
|
}
|
|
94
77
|
getDelay() {
|
|
95
|
-
return this.
|
|
78
|
+
return this.filter.getDelay();
|
|
96
79
|
}
|
|
97
80
|
clone() {
|
|
98
|
-
let out = new PureRealUpsampler(
|
|
99
|
-
out.
|
|
100
|
-
out.filters = this.filters.map((f) => f.clone());
|
|
101
|
-
out.delay = this.delay;
|
|
81
|
+
let out = new PureRealUpsampler(this.ratio, new Float32Array(this.ratio));
|
|
82
|
+
out.filter = this.filter.clone();
|
|
102
83
|
return out;
|
|
103
84
|
}
|
|
104
85
|
}
|
|
@@ -112,55 +93,44 @@ class RealUpDownsampler {
|
|
|
112
93
|
throw new RadioError(`Non-integer upsample ratio: ${upRatio}`, RadioErrorType.DemodulationError);
|
|
113
94
|
if (downRatio != Math.floor(downRatio))
|
|
114
95
|
throw new RadioError(`Non-integer downsample ratio: ${downRatio}`, RadioErrorType.DemodulationError);
|
|
115
|
-
this.
|
|
116
|
-
if (kernel.length % upRatio != 0) {
|
|
117
|
-
const wantedLen = upRatio * Math.ceil(kernel.length / upRatio);
|
|
118
|
-
const newKernel = new Float32Array(wantedLen);
|
|
119
|
-
newKernel.subarray(wantedLen - kernel.length, wantedLen).set(kernel);
|
|
120
|
-
kernel = newKernel;
|
|
121
|
-
}
|
|
122
|
-
this.filters = [];
|
|
123
|
-
for (let i = 0; i < upRatio; ++i) {
|
|
124
|
-
const filterKernel = new Float32Array(kernel.length / upRatio);
|
|
125
|
-
for (let j = 0; j < filterKernel.length; ++j) {
|
|
126
|
-
filterKernel[j] = kernel[(j + 1) * upRatio - i - 1] * upRatio;
|
|
127
|
-
}
|
|
128
|
-
this.filters[i] = new FIRFilter(filterKernel);
|
|
129
|
-
}
|
|
96
|
+
this.filter = new Polyfilter(kernel, upRatio);
|
|
130
97
|
this.pool = new Float32Pool(4);
|
|
131
98
|
this.residual = 0;
|
|
132
99
|
}
|
|
133
|
-
|
|
134
|
-
filters;
|
|
100
|
+
filter;
|
|
135
101
|
pool;
|
|
136
102
|
residual;
|
|
137
103
|
resample(samples) {
|
|
138
104
|
const upRatio = this.upRatio;
|
|
139
105
|
const midLen = samples.length * upRatio;
|
|
140
|
-
|
|
141
|
-
this.filters[j].loadSamples(samples);
|
|
142
|
-
}
|
|
106
|
+
this.filter.loadSamples(samples);
|
|
143
107
|
const downRatio = this.downRatio;
|
|
144
108
|
const skip = (downRatio - this.residual) % downRatio;
|
|
145
109
|
const outLen = Math.floor((this.residual + midLen - 1) / downRatio) -
|
|
146
110
|
Math.floor((this.residual - 1) / downRatio);
|
|
147
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;
|
|
148
116
|
for (let k = 0; k < outLen; ++k) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
117
|
+
output[k] = this.filter.get(j, i);
|
|
118
|
+
j += dj;
|
|
119
|
+
i += di;
|
|
120
|
+
if (j >= upRatio) {
|
|
121
|
+
j -= upRatio;
|
|
122
|
+
++i;
|
|
123
|
+
}
|
|
153
124
|
}
|
|
154
125
|
this.residual = (this.residual + midLen) % downRatio;
|
|
155
126
|
return output;
|
|
156
127
|
}
|
|
157
128
|
getDelay() {
|
|
158
|
-
return this.
|
|
129
|
+
return this.filter.getDelay() / this.downRatio;
|
|
159
130
|
}
|
|
160
131
|
clone() {
|
|
161
|
-
let out = new RealUpDownsampler(this.upRatio, this.downRatio, new Float32Array(
|
|
162
|
-
out.
|
|
163
|
-
out.filters = this.filters.map((f) => f.clone());
|
|
132
|
+
let out = new RealUpDownsampler(this.upRatio, this.downRatio, new Float32Array(this.upRatio));
|
|
133
|
+
out.filter = this.filter.clone();
|
|
164
134
|
return out;
|
|
165
135
|
}
|
|
166
136
|
}
|
|
@@ -185,28 +155,32 @@ class GenericIqResampler {
|
|
|
185
155
|
export function getRealResampler(inRate, outRate, options) {
|
|
186
156
|
if (inRate > outRate && inRate % outRate == 0) {
|
|
187
157
|
// Pure downsampler
|
|
158
|
+
let downFactor = inRate / outRate;
|
|
188
159
|
let corner = options?.lowPassFrequency || outRate / 2;
|
|
189
|
-
let taps = options?.taps || 101;
|
|
160
|
+
let taps = options?.taps || (options?.tapsPerLeg || 101) * downFactor;
|
|
190
161
|
let gain = options?.gain;
|
|
191
162
|
let kernel = options?.kernel || makeLowPassKernel(inRate, corner, taps, gain);
|
|
192
163
|
return new PureRealDownsampler(inRate / outRate, kernel);
|
|
193
164
|
}
|
|
194
165
|
if (inRate < outRate && outRate % inRate == 0) {
|
|
195
166
|
// Pure upsampler
|
|
167
|
+
let upFactor = outRate / inRate;
|
|
196
168
|
let corner = options?.lowPassFrequency || inRate / 2;
|
|
197
|
-
let taps = options?.taps || 101;
|
|
169
|
+
let taps = options?.taps || options?.tapsPerLeg || 101;
|
|
198
170
|
let gain = options?.gain;
|
|
199
171
|
let kernel = options?.kernel || makeLowPassKernel(outRate, corner, taps, gain);
|
|
200
|
-
return new PureRealUpsampler(
|
|
172
|
+
return new PureRealUpsampler(upFactor, kernel);
|
|
201
173
|
}
|
|
202
174
|
// Resampler
|
|
203
175
|
let gcd = greatestCommonDivisor(inRate, outRate);
|
|
176
|
+
let upFactor = outRate / gcd;
|
|
177
|
+
let downFactor = inRate / gcd;
|
|
178
|
+
let interRate = (inRate * outRate) / gcd;
|
|
204
179
|
let corner = options?.lowPassFrequency || Math.min(inRate, outRate) / 2;
|
|
205
|
-
let taps = options?.taps || 101;
|
|
180
|
+
let taps = options?.taps || (options?.tapsPerLeg || 101) * downFactor;
|
|
206
181
|
let gain = options?.gain;
|
|
207
|
-
let kernel = options?.kernel ||
|
|
208
|
-
|
|
209
|
-
return new RealUpDownsampler(outRate / gcd, inRate / gcd, kernel);
|
|
182
|
+
let kernel = options?.kernel || makeLowPassKernel(interRate, corner, taps, gain);
|
|
183
|
+
return new RealUpDownsampler(upFactor, downFactor, kernel);
|
|
210
184
|
}
|
|
211
185
|
/** Returns an IqResampler that converts signals from the input rate to the output rate. */
|
|
212
186
|
export function getIqResampler(inRate, outRate, options) {
|
|
@@ -217,28 +191,38 @@ export function getIqResampler(inRate, outRate, options) {
|
|
|
217
191
|
* @deprecated Use getRealResampler() instead.
|
|
218
192
|
*/
|
|
219
193
|
export class RealDownsampler {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
* @param outRate The output sample rate.
|
|
223
|
-
* @param filterSpec The size or kernel of the low-pass filter to apply to the signal before downsampling.
|
|
224
|
-
*/
|
|
194
|
+
inRate;
|
|
195
|
+
outRate;
|
|
225
196
|
constructor(inRate, outRate, filterSpec) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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);
|
|
230
205
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
* @param samples The sample block to downsample.
|
|
235
|
-
* @returns The downsampled block.
|
|
236
|
-
*/
|
|
206
|
+
ratio;
|
|
207
|
+
filter;
|
|
208
|
+
pool;
|
|
237
209
|
downsample(samples) {
|
|
238
|
-
|
|
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;
|
|
239
218
|
}
|
|
240
219
|
getDelay() {
|
|
241
|
-
return this.
|
|
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;
|
|
242
226
|
}
|
|
243
227
|
}
|
|
244
228
|
/**
|
|
@@ -252,22 +236,80 @@ export class ComplexDownsampler {
|
|
|
252
236
|
* @param filterSpec The size or kernel of the low-pass filter to apply to the signal before downsampling.
|
|
253
237
|
*/
|
|
254
238
|
constructor(inRate, outRate, filterSpec) {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
: { kernel: filterSpec };
|
|
258
|
-
this.resampler = getIqResampler(inRate, outRate, options);
|
|
239
|
+
this.downI = new RealDownsampler(inRate, outRate, filterSpec);
|
|
240
|
+
this.downQ = this.downI.clone();
|
|
259
241
|
}
|
|
260
|
-
|
|
242
|
+
downI;
|
|
243
|
+
downQ;
|
|
261
244
|
/**
|
|
262
245
|
* @param I The signal's real component.
|
|
263
246
|
* @param Q The signal's imaginary component.
|
|
264
247
|
* @returns An array with the output's real and imaginary components.
|
|
265
248
|
*/
|
|
266
249
|
downsample(I, Q) {
|
|
267
|
-
return this.
|
|
250
|
+
return [this.downI.downsample(I), this.downQ.downsample(Q)];
|
|
268
251
|
}
|
|
269
252
|
getDelay() {
|
|
270
|
-
return this.
|
|
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;
|
|
271
313
|
}
|
|
272
314
|
}
|
|
273
315
|
function greatestCommonDivisor(a, b) {
|
|
@@ -279,4 +321,90 @@ function greatestCommonDivisor(a, b) {
|
|
|
279
321
|
}
|
|
280
322
|
return a;
|
|
281
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;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
282
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