@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
43 lines (36 loc) • 1.2 kB
text/typescript
/**
* applies a ToDestination
*
*
*/
import {TypedAudioNode} from './_Base';
import {NodeParamsConfig} from '../utils/params/ParamsConfig';
import {AudioBuilder} from '../../../core/audio/AudioBuilder';
import {ToneAudioNode} from 'tone/build/esm/core/context/ToneAudioNode';
class ToDestinationAudioParamsConfig extends NodeParamsConfig {}
const ParamsConfig = new ToDestinationAudioParamsConfig();
export class ToDestinationAudioNode extends TypedAudioNode<ToDestinationAudioParamsConfig> {
override paramsConfig = ParamsConfig;
static override type() {
return 'toDestination';
}
override initializeNode() {
this.io.inputs.setCount(1);
}
private _previousAudioNode: ToneAudioNode | undefined;
override cook(inputContents: AudioBuilder[]) {
const audioBuilder = inputContents[0];
const audioNode = audioBuilder.audioNode();
if (!audioNode) {
this.states.error.set('no audioNode in input');
this.cookController.endCook();
return;
}
if (this._previousAudioNode) {
this._previousAudioNode.disconnect(this._previousAudioNode.context.destination);
}
audioNode.toDestination();
this._previousAudioNode = audioNode;
this.setAudioBuilder(audioBuilder);
}
}