1 | import { Delay } from "../core/context/Delay.js";
|
2 | import { optionsFromArguments } from "../core/util/Defaults.js";
|
3 | import { readOnly } from "../core/util/Interface.js";
|
4 | import { FeedbackEffect } from "./FeedbackEffect.js";
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | export class FeedbackDelay extends FeedbackEffect {
|
20 | constructor() {
|
21 | const options = optionsFromArguments(FeedbackDelay.getDefaults(), arguments, ["delayTime", "feedback"]);
|
22 | super(options);
|
23 | this.name = "FeedbackDelay";
|
24 | this._delayNode = new Delay({
|
25 | context: this.context,
|
26 | delayTime: options.delayTime,
|
27 | maxDelay: options.maxDelay,
|
28 | });
|
29 | this.delayTime = this._delayNode.delayTime;
|
30 |
|
31 | this.connectEffect(this._delayNode);
|
32 | readOnly(this, "delayTime");
|
33 | }
|
34 | static getDefaults() {
|
35 | return Object.assign(FeedbackEffect.getDefaults(), {
|
36 | delayTime: 0.25,
|
37 | maxDelay: 1,
|
38 | });
|
39 | }
|
40 | dispose() {
|
41 | super.dispose();
|
42 | this._delayNode.dispose();
|
43 | this.delayTime.dispose();
|
44 | return this;
|
45 | }
|
46 | }
|
47 |
|
\ | No newline at end of file |