UNPKG

virtual-audio-graph

Version:

Library for declaratively manipulating the Web Audio API

37 lines (29 loc) 1.01 kB
import { OUTPUT } from "./constants"; import { IVirtualAudioNodeGraph, VirtualAudioNode } from "./types"; import updateVirtualNodeGraph from "./updateVirtualNodeGraph"; export default class VirtualAudioGraph { private virtualNodes: IVirtualAudioNodeGraph = {}; constructor( public readonly audioContext: AudioContext | OfflineAudioContext, private readonly output: AudioDestinationNode, ) {} public getAudioNodeById(id: number | string): AudioNode | void { return this.virtualNodes[id]?.audioNode; } public update(newGraph: IVirtualAudioNodeGraph): this { if (OUTPUT in newGraph) throw new Error( `"${OUTPUT}" is a virtual-audio-graph reserved string and therefore not a valid node ID`, ); updateVirtualNodeGraph( this.virtualNodes, newGraph, this.audioContext, (vNode: VirtualAudioNode) => vNode.connect(this.output), ); return this; } public get currentTime(): number { return this.audioContext.currentTime; } }