-
Notifications
You must be signed in to change notification settings - Fork 955
/
StereoXFeedbackEffect.ts
37 lines (31 loc) · 1.55 KB
/
StereoXFeedbackEffect.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { StereoFeedbackEffect, StereoFeedbackEffectOptions } from "./StereoFeedbackEffect";
import { NormalRange } from "../core/type/Units";
import { readOnly } from "../core/util/Interface";
export interface StereoXFeedbackEffectOptions extends StereoFeedbackEffectOptions {
feedback: NormalRange;
}
/**
* Just like a [[StereoFeedbackEffect]], but the feedback is routed from left to right
* and right to left instead of on the same channel.
* ```
* +--------------------------------+ feedbackL <-----------------------------------+
* | |
* +--> +-----> +----> +-----+
* feedbackMerge +--> split (EFFECT) merge +--> feedbackSplit | |
* +--> +-----> +----> +---+ |
* | |
* +--------------------------------+ feedbackR <-------------------------------------+
* ```
*/
export class StereoXFeedbackEffect<Options extends StereoXFeedbackEffectOptions> extends StereoFeedbackEffect<Options> {
constructor(options: StereoXFeedbackEffectOptions) {
super(options);
// the left output connected to the right input
this._feedbackL.disconnect();
this._feedbackL.connect(this._feedbackMerge, 0, 1);
// the left output connected to the right input
this._feedbackR.disconnect();
this._feedbackR.connect(this._feedbackMerge, 0, 0);
readOnly(this, ["feedback"]);
}
}