Skip to main content

AudioDataEvent

The AudioDataEvent type represents audio data streamed at the configured interval. The data format depends on the streamFormat setting in your RecordingConfig.

Type Definition​

AudioDataEvent is a discriminated union of two variants:

// Common fields shared by both variants
interface AudioDataEventBase {
position: number // Position in the recording (seconds)
fileUri: string // URI of the audio file being written
eventDataSize: number // Size of this chunk in bytes
totalSize: number // Total recorded bytes so far
}

// Default mode (streamFormat: 'raw' or unset)
interface AudioDataEventRaw extends AudioDataEventBase {
data: string | Float32Array | Int16Array
streamFormat?: undefined | 'raw'
}

// Float32 mode (streamFormat: 'float32')
interface AudioDataEventFloat32 extends AudioDataEventBase {
data: Float32Array
streamFormat: 'float32'
}

type AudioDataEvent = AudioDataEventRaw | AudioDataEventFloat32

Data Field​

The type of data depends on the streamFormat setting:

streamFormatNative (Android/iOS)Web
'raw' (default)base64-encoded stringFloat32Array
'float32'Float32ArrayFloat32Array

With streamFormat: 'float32', data is guaranteed to be Float32Array on all platforms — no manual base64 decoding or type checking needed.

Example Usage​

import { useAudioRecorder, type AudioDataEvent } from '@siteed/audio-studio';

const { startRecording } = useAudioRecorder({ debug: true });

await startRecording({
sampleRate: 16000,
channels: 1,
streamFormat: 'float32',
onAudioStream: async (event: AudioDataEvent) => {
// With streamFormat: 'float32', data is always Float32Array
const samples = event.data as Float32Array;
console.log(`Received ${samples.length} samples at position ${event.position}s`);
},
});