UNPKG

1.65 kBJavaScriptView Raw
1import { Delay } from "../core/context/Delay.js";
2import { optionsFromArguments } from "../core/util/Defaults.js";
3import { readOnly } from "../core/util/Interface.js";
4import { FeedbackEffect } from "./FeedbackEffect.js";
5/**
6 * FeedbackDelay is a DelayNode in which part of output signal is fed back into the delay.
7 *
8 * @param delayTime The delay applied to the incoming signal.
9 * @param feedback The amount of the effected signal which is fed back through the delay.
10 * @example
11 * const feedbackDelay = new Tone.FeedbackDelay("8n", 0.5).toDestination();
12 * const tom = new Tone.MembraneSynth({
13 * octaves: 4,
14 * pitchDecay: 0.1
15 * }).connect(feedbackDelay);
16 * tom.triggerAttackRelease("A2", "32n");
17 * @category Effect
18 */
19export 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 // connect it up
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//# sourceMappingURL=FeedbackDelay.js.map
\No newline at end of file