react-native-audio-api
Version:
react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification
39 lines (37 loc) • 1.2 kB
text/typescript
import AudioScheduledSourceNode from './AudioScheduledSourceNode';
import type BaseAudioContext from './BaseAudioContext';
import { AudioWorkletRuntime } from '../types';
import AudioAPIModule from '../AudioAPIModule';
export default class WorkletSourceNode extends AudioScheduledSourceNode {
constructor(
context: BaseAudioContext,
runtime: AudioWorkletRuntime,
callback: (
audioData: Array<Float32Array>,
framesToProcess: number,
currentTime: number,
startOffset: number
) => void
) {
const shareableWorklet =
AudioAPIModule.workletsModule!.makeShareableCloneRecursive(
(
audioBuffers: Array<ArrayBuffer>,
framesToProcess: number,
currentTime: number,
startOffset: number
) => {
'worklet';
const floatAudioData: Array<Float32Array> = audioBuffers.map(
(buffer) => new Float32Array(buffer)
);
callback(floatAudioData, framesToProcess, currentTime, startOffset);
}
);
const node = context.context.createWorkletSourceNode(
shareableWorklet,
runtime === 'UIRuntime'
);
super(context, node);
}
}