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.
- package/dist/math/MathUtils.d.ts +1 -0
- package/dist/math/MathUtils.js.map +1 -1
- package/dist/signal/NoiseGen.d.ts +3 -0
- package/dist/signal/NoiseGen.js +29 -0
- package/dist/signal/NoiseGen.js.map +1 -0
- package/dist/utils/ArrayUtils.d.ts +4 -1
- package/dist/utils/ArrayUtils.js +33 -0
- package/dist/utils/ArrayUtils.js.map +1 -1
- package/dist/utils/DspUtils.d.ts +8 -0
- package/dist/utils/DspUtils.js +42 -0
- package/dist/utils/DspUtils.js.map +1 -1
- package/package.json +1 -1
package/dist/math/MathUtils.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MathUtils.js","sourceRoot":"","sources":["../../src/math/MathUtils.ts"],"names":[],"mappings":"
|
|
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 "
|
|
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;
|
package/dist/utils/ArrayUtils.js
CHANGED
|
@@ -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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"}
|
package/dist/utils/DspUtils.d.ts
CHANGED
|
@@ -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;
|
package/dist/utils/DspUtils.js
CHANGED
|
@@ -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":"
|
|
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"}
|