import { AudioNodeKeyName, AudioNodeConfig, createAudioNode, } from "@/nativeWebAudio" import { VirtualAudioNode } from "./virtualAudioNode" export interface RenderedAudioNode { virtualNode: VNode audioNode: InstanceType["cls"]> inputs: RenderedAudioNode[] destination?: VNode["node"] extends AudioNodeKeyName<"destination"> ? undefined : RenderedAudioNode } export const renderAudioNode = ( vNode: VNode, context: AudioContext ): RenderedAudioNode => ({ virtualNode: vNode, audioNode: createAudioNode(vNode.node, context, vNode.options), inputs: vNode.inputs.map((input) => renderAudioNode(input, context)), destination: (vNode.destination ? renderAudioNode(vNode.destination, context) : undefined) as any, })