2024-05-03 14:10:40 +00:00
|
|
|
import { optionsFromArguments } from "../core/util/Defaults.js";
|
2024-05-03 15:09:28 +00:00
|
|
|
import {
|
|
|
|
InputNode,
|
|
|
|
ToneAudioNode,
|
|
|
|
ToneAudioNodeOptions,
|
|
|
|
} from "../core/context/ToneAudioNode.js";
|
2024-05-03 14:10:40 +00:00
|
|
|
import { connectSignal } from "./Signal.js";
|
2019-11-14 00:34:55 +00:00
|
|
|
|
|
|
|
export type SignalOperatorOptions = ToneAudioNodeOptions;
|
|
|
|
|
2019-07-11 21:13:58 +00:00
|
|
|
/**
|
|
|
|
* A signal operator has an input and output and modifies the signal.
|
|
|
|
*/
|
2024-05-03 15:09:28 +00:00
|
|
|
export abstract class SignalOperator<
|
|
|
|
Options extends SignalOperatorOptions,
|
|
|
|
> extends ToneAudioNode<Options> {
|
2019-07-11 21:13:58 +00:00
|
|
|
constructor(options?: Partial<Options>);
|
|
|
|
constructor() {
|
2024-05-03 15:09:28 +00:00
|
|
|
super(
|
|
|
|
Object.assign(
|
|
|
|
optionsFromArguments(SignalOperator.getDefaults(), arguments, [
|
|
|
|
"context",
|
|
|
|
])
|
|
|
|
)
|
|
|
|
);
|
2019-07-11 21:13:58 +00:00
|
|
|
}
|
|
|
|
|
2019-11-17 18:09:19 +00:00
|
|
|
connect(destination: InputNode, outputNum = 0, inputNum = 0): this {
|
2019-07-17 17:46:48 +00:00
|
|
|
connectSignal(this, destination, outputNum, inputNum);
|
2019-07-11 21:13:58 +00:00
|
|
|
return this;
|
|
|
|
}
|
|
|
|
}
|