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/expo-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`);
},
});