@thi.ng/dsp 4.2.28 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Change Log
2
2
 
3
- - **Last updated**: 2022-12-22T21:47:07Z
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.84 KB
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 - 2022 Karsten Schmidt // Apache License 2.0
592
+ © 2015 - 2023 Karsten Schmidt // Apache License 2.0
@@ -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
@@ -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.2.28",
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.2",
38
- "@thi.ng/checks": "^3.3.6",
39
- "@thi.ng/errors": "^2.2.7",
40
- "@thi.ng/math": "^5.3.18",
41
- "@thi.ng/random": "^3.3.20",
42
- "@thi.ng/transducers": "^8.3.29"
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.8",
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": "28bb74c67217a352d673b6efdab234921d4a370e\n"
278
+ "gitHead": "3f0b3e2a7c82aefc7e46fb4338369836b5e1b8cf\n"
276
279
  }