dsp-collection 0.2.8 → 0.2.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,3 +1,4 @@
1
+ export type UniFunction = (x: number) => number;
1
2
  export declare function fuzzyEquals(a: number, b: number, eps: number): boolean;
2
3
  export declare function isFuzzyInteger(i: number, eps: number): boolean;
3
4
  export declare function isPowerOf2(i: number): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"MathUtils.js","sourceRoot":"","sources":["../../src/math/MathUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MathUtils.js","sourceRoot":"","sources":["../../src/math/MathUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { UniFunction } from "../math/MathUtils.ts";
2
+ export declare function synthesizeSpectralNoise(spectrumCurveFunction: UniFunction, amplitudeCurveFunction: UniFunction | undefined, duration: number, sampleRate: number, noiseRms: number | undefined): Float64Array;
3
+ export declare function generateSpectralNoise(specAmplitudes: ArrayLike<number>, n: number): Float64Array;
@@ -0,0 +1,29 @@
1
+ import ComplexArray from "../math/ComplexArray.js";
2
+ import * as Fft from "./Fft.js";
3
+ import * as DspUtils from "../utils/DspUtils.js";
4
+ export function synthesizeSpectralNoise(spectrumCurveFunction, amplitudeCurveFunction, duration, sampleRate, noiseRms) {
5
+ const n0 = Math.round(duration * sampleRate);
6
+ const n = (n0 % 2 == 0 || n0 < 4096) ? n0 : n0 + 1;
7
+ const n2 = Math.floor(n / 2);
8
+ const specAmplitudes = Float64Array.from({ length: n2 }, (_x, i) => spectrumCurveFunction(i * sampleRate / n));
9
+ specAmplitudes[0] = 0;
10
+ const noiseSignal = generateSpectralNoise(specAmplitudes, n);
11
+ if ((noiseRms ?? 0) > 0) {
12
+ DspUtils.adjustSignalLevel(noiseSignal, { targetRms: noiseRms });
13
+ }
14
+ let signal1 = noiseSignal;
15
+ if (amplitudeCurveFunction) {
16
+ const timeAmplitudes = Float64Array.from({ length: n }, (_x, i) => amplitudeCurveFunction(i / sampleRate));
17
+ signal1 = signal1.map((x, i) => x * timeAmplitudes[i]);
18
+ }
19
+ const signal2 = (n == n0) ? signal1 : signal1.subarray(0, n0);
20
+ return signal2;
21
+ }
22
+ export function generateSpectralNoise(specAmplitudes, n) {
23
+ const n2 = specAmplitudes.length;
24
+ const specPhases = Float64Array.from({ length: n2 }, () => Math.random() * 2 * Math.PI);
25
+ const spectrum = ComplexArray.fromPolar(specAmplitudes, specPhases);
26
+ const signal = Fft.iFftRealHalf(spectrum, n);
27
+ return signal;
28
+ }
29
+ //# sourceMappingURL=NoiseGen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoiseGen.js","sourceRoot":"","sources":["../../src/signal/NoiseGen.ts"],"names":[],"mappings":"AAIA,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAEnD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAqBjD,MAAM,UAAU,uBAAuB,CAAE,qBAAkC,EAAE,sBAA+C,EAAE,QAAgB,EAAE,UAAkB,EAAE,QAA4B;IAC7L,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7G,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,qBAAqB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,QAAQ,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,QAAQ,EAAC,CAAC,CAAC;IAAC,CAAC;IACpE,IAAI,OAAO,GAAG,WAAW,CAAC;IAC1B,IAAI,sBAAsB,EAAE,CAAC;QAC1B,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,CAAC,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QACzG,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC;AAAC,CAAC;AAkBpB,MAAM,UAAU,qBAAqB,CAAE,cAAiC,EAAE,CAAS;IAChF,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC;IACjC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAAC,CAAC"}
@@ -1,5 +1,6 @@
1
- import { MutableArrayLike } from "../utils/MiscUtils.ts";
1
+ import { MutableArrayLike } from "./MiscUtils.ts";
2
2
  export declare function max(a: ArrayLike<number>): number;
3
+ export declare function maxAbs(a: ArrayLike<number>): number;
3
4
  export declare function argMax(a: ArrayLike<number>): number;
4
5
  export declare function argGte(a: ArrayLike<number>, v: number): number;
5
6
  export declare function multiply<T extends ArrayLike<number>>(a1: T, a2: T): T;
@@ -7,3 +8,5 @@ export declare function divide<T extends ArrayLike<number>>(a1: T, a2: T): T;
7
8
  export declare function copy(a1: ArrayLike<number>, a2: MutableArrayLike<number>): void;
8
9
  export declare function fill<T>(a: MutableArrayLike<T>, value: T): void;
9
10
  export declare function sum(a: ArrayLike<number>): number;
11
+ export declare function rms(a: ArrayLike<number>): number;
12
+ export declare function getQuantileNearestFromSortedArray<T>(a: readonly T[], q: number): T | undefined;
@@ -10,6 +10,19 @@ export function max(a) {
10
10
  }
11
11
  return maxVal;
12
12
  }
13
+ export function maxAbs(a) {
14
+ if (a.length == 0) {
15
+ return NaN;
16
+ }
17
+ let maxAbsVal = a[0];
18
+ for (let p = 1; p < a.length; p++) {
19
+ const v = Math.abs(a[p]);
20
+ if (v > maxAbsVal) {
21
+ maxAbsVal = v;
22
+ }
23
+ }
24
+ return maxAbsVal;
25
+ }
13
26
  export function argMax(a) {
14
27
  if (a.length == 0) {
15
28
  return NaN;
@@ -66,4 +79,24 @@ export function sum(a) {
66
79
  }
67
80
  return acc;
68
81
  }
82
+ export function rms(a) {
83
+ const n = a.length;
84
+ if (n == 0) {
85
+ return NaN;
86
+ }
87
+ let acc = 0;
88
+ for (let i = 0; i < n; i++) {
89
+ acc += a[i] ** 2;
90
+ }
91
+ return Math.sqrt(acc / n);
92
+ }
93
+ export function getQuantileNearestFromSortedArray(a, q) {
94
+ const n = a.length;
95
+ if (n == 0 || !Number.isFinite(q)) {
96
+ return undefined;
97
+ }
98
+ const p0 = Math.ceil(q * n) - 1;
99
+ const p = Math.max(0, Math.min(n - 1, p0));
100
+ return a[p];
101
+ }
69
102
  //# sourceMappingURL=ArrayUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayUtils.js","sourceRoot":"","sources":["../../src/utils/ArrayUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArrayUtils.js","sourceRoot":"","sources":["../../src/utils/ArrayUtils.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,12 @@
1
+ import { MutableArrayLike } from "./MiscUtils.ts";
1
2
  export declare function convertAmplitudeToDb(x: number): number;
2
3
  export declare function convertPowerToDb(x: number): number;
3
4
  export declare function convertDbToAmplitude(x: number): number;
5
+ export declare function convertDbToAmplitudeOr0(x: number): number;
4
6
  export declare function convertDbToPower(x: number): number;
7
+ export interface AdjustSignalLevelOptions {
8
+ targetRms?: number;
9
+ targetMaxLevel?: number;
10
+ clippingLevel?: number;
11
+ }
12
+ export declare function adjustSignalLevel(signal: MutableArrayLike<number>, options: AdjustSignalLevelOptions): void;
@@ -1,3 +1,4 @@
1
+ import * as ArrayUtils from "./ArrayUtils.js";
1
2
  export function convertAmplitudeToDb(x) {
2
3
  return 20 * Math.log10(x);
3
4
  }
@@ -7,7 +8,48 @@ export function convertPowerToDb(x) {
7
8
  export function convertDbToAmplitude(x) {
8
9
  return Math.pow(10, x / 20);
9
10
  }
11
+ export function convertDbToAmplitudeOr0(x) {
12
+ return (!Number.isFinite(x) || x <= -99) ? 0 : convertDbToAmplitude(x);
13
+ }
10
14
  export function convertDbToPower(x) {
11
15
  return Math.pow(10, x / 10);
12
16
  }
17
+ export function adjustSignalLevel(signal, options) {
18
+ const n = signal.length;
19
+ if (!n) {
20
+ return;
21
+ }
22
+ let rmsFactor = Infinity;
23
+ if (options.targetRms) {
24
+ const rms = ArrayUtils.rms(signal);
25
+ if (rms) {
26
+ rmsFactor = options.targetRms / rms;
27
+ }
28
+ }
29
+ let maxLevelFactor = Infinity;
30
+ if (options.targetMaxLevel) {
31
+ const maxAbs = ArrayUtils.maxAbs(signal);
32
+ if (maxAbs) {
33
+ maxLevelFactor = options.targetMaxLevel / maxAbs;
34
+ }
35
+ }
36
+ const factor = Math.min(rmsFactor, maxLevelFactor);
37
+ if (isFinite(factor) && Math.abs(factor - 1) > 1E-6) {
38
+ for (let i = 0; i < n; i++) {
39
+ signal[i] *= factor;
40
+ }
41
+ }
42
+ const clippingLevel = options.clippingLevel ?? 0;
43
+ if (clippingLevel) {
44
+ for (let i = 0; i < n; i++) {
45
+ const v = signal[i];
46
+ if (v > clippingLevel) {
47
+ signal[i] = clippingLevel;
48
+ }
49
+ else if (v < -clippingLevel) {
50
+ signal[i] = -clippingLevel;
51
+ }
52
+ }
53
+ }
54
+ }
13
55
  //# sourceMappingURL=DspUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DspUtils.js","sourceRoot":"","sources":["../../src/utils/DspUtils.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,oBAAoB,CAAE,CAAS;IAC5C,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAC,CAAC;AAG/B,MAAM,UAAU,gBAAgB,CAAE,CAAS;IACxC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAC,CAAC;AAE/B,MAAM,UAAU,oBAAoB,CAAE,CAAS;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAC,CAAC;AAEjC,MAAM,UAAU,gBAAgB,CAAE,CAAS;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAC,CAAC"}
1
+ {"version":3,"file":"DspUtils.js","sourceRoot":"","sources":["../../src/utils/DspUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAO9C,MAAM,UAAU,oBAAoB,CAAE,CAAS;IAC5C,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAC,CAAC;AAM/B,MAAM,UAAU,gBAAgB,CAAE,CAAS;IACxC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAC,CAAC;AAK/B,MAAM,UAAU,oBAAoB,CAAE,CAAS;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAC,CAAC;AAOjC,MAAM,UAAU,uBAAuB,CAAE,CAAS;IAC/C,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAAC,CAAC;AAK5E,MAAM,UAAU,gBAAgB,CAAE,CAAS;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAAC,CAAC;AA0BjC,MAAM,UAAU,iBAAiB,CAAE,MAAgC,EAAE,OAAiC;IACnG,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,CAAC,EAAE,CAAC;QACN,OAAO;IAAC,CAAC;IAEZ,IAAI,SAAS,GAAG,QAAQ,CAAC;IACzB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,EAAE,CAAC;YACP,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;QAAC,CAAC;IAAA,CAAC;IAE7C,IAAI,cAAc,GAAG,QAAQ,CAAC;IAC9B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,EAAE,CAAC;YACV,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC;QAAC,CAAC;IAAA,CAAC;IAE1D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1B,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAAC,CAAC;IAAA,CAAC;IAE7B,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC;IACjD,IAAI,aAAa,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC;gBACrB,MAAM,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;YAAC,CAAC;iBACzB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBAC5B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;YAAC,CAAC;QAAA,CAAC;IAAA,CAAC;AAAA,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsp-collection",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "A collection of JavaScript modules for digital signal processing (written in TypeScript)",
5
5
  "keywords": [
6
6
  "DSP",