import AudioNode from './AudioNode'; import type BaseAudioContext from './BaseAudioContext'; import { AudioWorkletRuntime } from '../types'; import AudioAPIModule from '../AudioAPIModule'; export default class WorkletNode extends AudioNode { constructor( context: BaseAudioContext, runtime: AudioWorkletRuntime, callback: (audioData: Array, channelCount: number) => void, bufferLength: number, inputChannelCount: number ) { const shareableWorklet = AudioAPIModule.workletsModule!.makeShareableCloneRecursive( (audioBuffers: Array, channelCount: number) => { 'worklet'; const floatAudioData: Array = audioBuffers.map( (buffer) => new Float32Array(buffer) ); callback(floatAudioData, channelCount); } ); const node = context.context.createWorkletNode( shareableWorklet, runtime === 'UIRuntime', bufferLength, inputChannelCount ); super(context, node); } }