UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

43 lines (36 loc) 1.2 kB
/** * 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); } }