@thi.ng/dsp 4.2.27 → 4.3.0
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/CHANGELOG.md +7 -1
- package/README.md +10 -2
- package/feedback-delay.d.ts +3 -0
- package/feedback-delay.js +3 -0
- package/filter-delay.d.ts +20 -0
- package/filter-delay.js +28 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +12 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
- **Last updated**:
|
|
3
|
+
- **Last updated**: 2023-01-10T15:20:19Z
|
|
4
4
|
- **Generator**: [thi.ng/monopub](https://thi.ng/monopub)
|
|
5
5
|
|
|
6
6
|
All notable changes to this project will be documented in this file.
|
|
@@ -9,6 +9,12 @@ See [Conventional Commits](https://conventionalcommits.org/) for commit guidelin
|
|
|
9
9
|
**Note:** Unlisted _patch_ versions only involve non-code or otherwise excluded changes
|
|
10
10
|
and/or version bumps of transitive dependencies.
|
|
11
11
|
|
|
12
|
+
## [4.3.0](https://github.com/thi-ng/umbrella/tree/@thi.ng/dsp@4.3.0) (2023-01-10)
|
|
13
|
+
|
|
14
|
+
#### 🚀 Features
|
|
15
|
+
|
|
16
|
+
- add FilterFeedbackDelay ([d69b3bc](https://github.com/thi-ng/umbrella/commit/d69b3bc))
|
|
17
|
+
|
|
12
18
|
### [4.2.17](https://github.com/thi-ng/umbrella/tree/@thi.ng/dsp@4.2.17) (2022-10-17)
|
|
13
19
|
|
|
14
20
|
#### 🩹 Bug fixes
|
package/README.md
CHANGED
|
@@ -25,6 +25,7 @@ This project is part of the
|
|
|
25
25
|
- [Filter responses](#filter-responses)
|
|
26
26
|
- [Delay](#delay)
|
|
27
27
|
- [Feedback delay](#feedback-delay)
|
|
28
|
+
- [Filtered feedback delay](#filtered-feedback-delay)
|
|
28
29
|
- [Wave shaping](#wave-shaping)
|
|
29
30
|
- [Foldback distortion](#foldback-distortion)
|
|
30
31
|
- [FFT](#fft)
|
|
@@ -83,7 +84,7 @@ For Node.js REPL:
|
|
|
83
84
|
const dsp = await import("@thi.ng/dsp");
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
Package sizes (brotli'd, pre-treeshake): ESM: 6.
|
|
87
|
+
Package sizes (brotli'd, pre-treeshake): ESM: 6.88 KB
|
|
87
88
|
|
|
88
89
|
## Dependencies
|
|
89
90
|
|
|
@@ -480,6 +481,13 @@ for various other effects, filters etc.
|
|
|
480
481
|
Variation of `delay()` which adds a portion of the delayed value to each
|
|
481
482
|
new input and stores result in delay line.
|
|
482
483
|
|
|
484
|
+
#### Filtered feedback delay
|
|
485
|
+
|
|
486
|
+
[Source](https://github.com/thi-ng/umbrella/blob/develop/packages/dsp/src/filter-delay.ts)
|
|
487
|
+
|
|
488
|
+
Variation of `feedbackDelay()` which processes feedback via given filter /
|
|
489
|
+
`IProc`, e.g. to create dub style filter delays.
|
|
490
|
+
|
|
483
491
|
#### Wave shaping
|
|
484
492
|
|
|
485
493
|
[Source](https://github.com/thi-ng/umbrella/blob/develop/packages/dsp/src/waveshaper.ts)
|
|
@@ -581,4 +589,4 @@ If this project contributes to an academic publication, please cite it as:
|
|
|
581
589
|
|
|
582
590
|
## License
|
|
583
591
|
|
|
584
|
-
© 2015 -
|
|
592
|
+
© 2015 - 2023 Karsten Schmidt // Apache License 2.0
|
package/feedback-delay.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ import { Delay } from "./delay.js";
|
|
|
3
3
|
* Extension of {@link Delay} which adds sum delayed value multiplied
|
|
4
4
|
* with `feedback` for each new input.
|
|
5
5
|
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Also see {@link filterFeedbackDelay} for filtered version.
|
|
8
|
+
*
|
|
6
9
|
* @param n - delay length
|
|
7
10
|
* @param feedback - feedback factor (default: 0.5)
|
|
8
11
|
*/
|
package/feedback-delay.js
CHANGED
|
@@ -4,6 +4,9 @@ import { Delay } from "./delay.js";
|
|
|
4
4
|
* Extension of {@link Delay} which adds sum delayed value multiplied
|
|
5
5
|
* with `feedback` for each new input.
|
|
6
6
|
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Also see {@link filterFeedbackDelay} for filtered version.
|
|
9
|
+
*
|
|
7
10
|
* @param n - delay length
|
|
8
11
|
* @param feedback - feedback factor (default: 0.5)
|
|
9
12
|
*/
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { IProc } from "./api.js";
|
|
2
|
+
import { Delay } from "./delay.js";
|
|
3
|
+
/**
|
|
4
|
+
* Extension of {@link feedbackDelay} with additional filter/proc
|
|
5
|
+
* possibility for the feedback itself (e.g. a low pass filter).
|
|
6
|
+
*
|
|
7
|
+
* @param n - delay length
|
|
8
|
+
* @param filter - IProc applied to feedback
|
|
9
|
+
* @param feedback - feedback factor (default: 0.5)
|
|
10
|
+
*/
|
|
11
|
+
export declare const filterFeedbackDelay: (n: number, filter: IProc<number, number>, feedback?: number) => FilterFeedbackDelay;
|
|
12
|
+
export declare class FilterFeedbackDelay extends Delay<number> {
|
|
13
|
+
filter: IProc<number, number>;
|
|
14
|
+
protected _feedback: number;
|
|
15
|
+
constructor(n: number, filter: IProc<number, number>, _feedback?: number);
|
|
16
|
+
next(x: number): number;
|
|
17
|
+
feedback(): number;
|
|
18
|
+
setFeedback(feedback: number): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=filter-delay.d.ts.map
|
package/filter-delay.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { clamp01 } from "@thi.ng/math/interval";
|
|
2
|
+
import { Delay } from "./delay.js";
|
|
3
|
+
/**
|
|
4
|
+
* Extension of {@link feedbackDelay} with additional filter/proc
|
|
5
|
+
* possibility for the feedback itself (e.g. a low pass filter).
|
|
6
|
+
*
|
|
7
|
+
* @param n - delay length
|
|
8
|
+
* @param filter - IProc applied to feedback
|
|
9
|
+
* @param feedback - feedback factor (default: 0.5)
|
|
10
|
+
*/
|
|
11
|
+
export const filterFeedbackDelay = (n, filter, feedback) => new FilterFeedbackDelay(n, filter, feedback);
|
|
12
|
+
export class FilterFeedbackDelay extends Delay {
|
|
13
|
+
constructor(n, filter, _feedback = 0.5) {
|
|
14
|
+
super(n, 0);
|
|
15
|
+
this.filter = filter;
|
|
16
|
+
this._feedback = _feedback;
|
|
17
|
+
this.setFeedback(_feedback);
|
|
18
|
+
}
|
|
19
|
+
next(x) {
|
|
20
|
+
return super.next(x + this.filter.next(this._buf[this._rpos] * this._feedback));
|
|
21
|
+
}
|
|
22
|
+
feedback() {
|
|
23
|
+
return this._feedback;
|
|
24
|
+
}
|
|
25
|
+
setFeedback(feedback) {
|
|
26
|
+
this._feedback = clamp01(feedback);
|
|
27
|
+
}
|
|
28
|
+
}
|
package/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export * from "./dcblock.js";
|
|
|
18
18
|
export * from "./delay.js";
|
|
19
19
|
export * from "./feedback-delay.js";
|
|
20
20
|
export * from "./fft.js";
|
|
21
|
+
export * from "./filter-delay.js";
|
|
21
22
|
export * from "./filter-response.js";
|
|
22
23
|
export * from "./foldback.js";
|
|
23
24
|
export * from "./impulse-train.js";
|
package/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export * from "./dcblock.js";
|
|
|
18
18
|
export * from "./delay.js";
|
|
19
19
|
export * from "./feedback-delay.js";
|
|
20
20
|
export * from "./fft.js";
|
|
21
|
+
export * from "./filter-delay.js";
|
|
21
22
|
export * from "./filter-response.js";
|
|
22
23
|
export * from "./foldback.js";
|
|
23
24
|
export * from "./impulse-train.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thi.ng/dsp",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"description": "Composable signal generators, oscillators, filters, FFT, spectrum, windowing & related DSP utils",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./index.js",
|
|
@@ -34,16 +34,16 @@
|
|
|
34
34
|
"test": "testament test"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@thi.ng/api": "^8.6.
|
|
38
|
-
"@thi.ng/checks": "^3.3.
|
|
39
|
-
"@thi.ng/errors": "^2.2.
|
|
40
|
-
"@thi.ng/math": "^5.
|
|
41
|
-
"@thi.ng/random": "^3.3.
|
|
42
|
-
"@thi.ng/transducers": "^8.3.
|
|
37
|
+
"@thi.ng/api": "^8.6.3",
|
|
38
|
+
"@thi.ng/checks": "^3.3.7",
|
|
39
|
+
"@thi.ng/errors": "^2.2.8",
|
|
40
|
+
"@thi.ng/math": "^5.4.0",
|
|
41
|
+
"@thi.ng/random": "^3.3.21",
|
|
42
|
+
"@thi.ng/transducers": "^8.3.30"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@microsoft/api-extractor": "^7.33.7",
|
|
46
|
-
"@thi.ng/testament": "^0.3.
|
|
46
|
+
"@thi.ng/testament": "^0.3.9",
|
|
47
47
|
"rimraf": "^3.0.2",
|
|
48
48
|
"tools": "^0.0.1",
|
|
49
49
|
"typedoc": "^0.23.22",
|
|
@@ -154,6 +154,9 @@
|
|
|
154
154
|
"./fft": {
|
|
155
155
|
"default": "./fft.js"
|
|
156
156
|
},
|
|
157
|
+
"./filter-delay": {
|
|
158
|
+
"default": "./filter-delay.js"
|
|
159
|
+
},
|
|
157
160
|
"./filter-response": {
|
|
158
161
|
"default": "./filter-response.js"
|
|
159
162
|
},
|
|
@@ -272,5 +275,5 @@
|
|
|
272
275
|
],
|
|
273
276
|
"year": 2015
|
|
274
277
|
},
|
|
275
|
-
"gitHead": "
|
|
278
|
+
"gitHead": "3f0b3e2a7c82aefc7e46fb4338369836b5e1b8cf\n"
|
|
276
279
|
}
|