react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
33 lines (31 loc) • 1.04 kB
text/typescript
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<Float32Array>, channelCount: number) => void,
bufferLength: number,
inputChannelCount: number
) {
const shareableWorklet =
AudioAPIModule.workletsModule!.makeShareableCloneRecursive(
(audioBuffers: Array<ArrayBuffer>, channelCount: number) => {
'worklet';
const floatAudioData: Array<Float32Array> = audioBuffers.map(
(buffer) => new Float32Array(buffer)
);
callback(floatAudioData, channelCount);
}
);
const node = context.context.createWorkletNode(
shareableWorklet,
runtime === 'UIRuntime',
bufferLength,
inputChannelCount
);
super(context, node);
}
}