openStream

Open a new audio stream with the given configuration.

The returned stream is in the StreamState.OPEN state and must be explicitly started via AudioStream.start. Multiple streams can be open simultaneously (e.g., one for input and one for output).

val stream = engine.openStream(
config = AudioStreamConfig(sampleRate = 48000, channelCount = 2),
callback = object : AudioStreamCallback {
override fun onAudioReady(buffer: FloatArray, numFrames: Int): Int {
// Fill buffer with audio data
return numFrames
}
},
)

Return

A new AudioStream in the StreamState.OPEN state.

Parameters

config

Stream configuration. See AudioStreamConfig for defaults and valid ranges.

callback

Optional callback for real-time audio processing. If null, use AudioStream.write or AudioStream.read to exchange audio data manually (blocking I/O mode).

Throws

if the stream could not be created, for example due to unsupported configuration or unavailable hardware.

if AudioStreamConfig.audioFormat is not AudioFormat.PCM_FLOAT on Android. Callbacks always receive float samples.

if recording permission is required but not granted (input streams only). On Android this is checked after AudioSessionManager.bind; without bind, a later AudioStream.start failure is StreamOperationException.

Open a new audio stream with the given configuration.

The returned stream is in the StreamState.OPEN state and must be explicitly started via AudioStream.start. Multiple streams can be open simultaneously (e.g., one for input and one for output).

val stream = engine.openStream(
config = AudioStreamConfig(sampleRate = 48000, channelCount = 2),
callback = object : AudioStreamCallback {
override fun onAudioReady(buffer: FloatArray, numFrames: Int): Int {
// Fill buffer with audio data
return numFrames
}
},
)

Return

A new AudioStream in the StreamState.OPEN state.

Parameters

config

Stream configuration. See AudioStreamConfig for defaults and valid ranges.

callback

Optional callback for real-time audio processing. If null, use AudioStream.write or AudioStream.read to exchange audio data manually (blocking I/O mode).

Throws

if the stream could not be created, for example due to unsupported configuration or unavailable hardware.

if AudioStreamConfig.audioFormat is not AudioFormat.PCM_FLOAT on Android. Callbacks always receive float samples.

if recording permission is required but not granted (input streams only). On Android this is checked after AudioSessionManager.bind; without bind, a later AudioStream.start failure is StreamOperationException.

expect fun openStream(config: AudioStreamConfig, callback: AudioStreamCallback? = null): AudioStream

Open a new audio stream with the given configuration.

The returned stream is in the StreamState.OPEN state and must be explicitly started via AudioStream.start. Multiple streams can be open simultaneously (e.g., one for input and one for output).

val stream = engine.openStream(
config = AudioStreamConfig(sampleRate = 48000, channelCount = 2),
callback = object : AudioStreamCallback {
override fun onAudioReady(buffer: FloatArray, numFrames: Int): Int {
// Fill buffer with audio data
return numFrames
}
},
)

Return

A new AudioStream in the StreamState.OPEN state.

Parameters

config

Stream configuration. See AudioStreamConfig for defaults and valid ranges.

callback

Optional callback for real-time audio processing. If null, use AudioStream.write or AudioStream.read to exchange audio data manually (blocking I/O mode).

Throws

if the stream could not be created, for example due to unsupported configuration or unavailable hardware.

if AudioStreamConfig.audioFormat is not AudioFormat.PCM_FLOAT on Android. Callbacks always receive float samples.

if recording permission is required but not granted (input streams only). On Android this is checked after AudioSessionManager.bind; without bind, a later AudioStream.start failure is StreamOperationException.

Open a new audio stream with the given configuration.

The returned stream is in the StreamState.OPEN state and must be explicitly started via AudioStream.start. Multiple streams can be open simultaneously (e.g., one for input and one for output).

val stream = engine.openStream(
config = AudioStreamConfig(sampleRate = 48000, channelCount = 2),
callback = object : AudioStreamCallback {
override fun onAudioReady(buffer: FloatArray, numFrames: Int): Int {
// Fill buffer with audio data
return numFrames
}
},
)

Return

A new AudioStream in the StreamState.OPEN state.

Parameters

config

Stream configuration. See AudioStreamConfig for defaults and valid ranges.

callback

Optional callback for real-time audio processing. If null, use AudioStream.write or AudioStream.read to exchange audio data manually (blocking I/O mode).

Throws

if the stream could not be created, for example due to unsupported configuration or unavailable hardware.

if AudioStreamConfig.audioFormat is not AudioFormat.PCM_FLOAT on Android. Callbacks always receive float samples.

if recording permission is required but not granted (input streams only). On Android this is checked after AudioSessionManager.bind; without bind, a later AudioStream.start failure is StreamOperationException.

Open a new audio stream with the given configuration.

The returned stream is in the StreamState.OPEN state and must be explicitly started via AudioStream.start. Multiple streams can be open simultaneously (e.g., one for input and one for output).

val stream = engine.openStream(
config = AudioStreamConfig(sampleRate = 48000, channelCount = 2),
callback = object : AudioStreamCallback {
override fun onAudioReady(buffer: FloatArray, numFrames: Int): Int {
// Fill buffer with audio data
return numFrames
}
},
)

Return

A new AudioStream in the StreamState.OPEN state.

Parameters

config

Stream configuration. See AudioStreamConfig for defaults and valid ranges.

callback

Optional callback for real-time audio processing. If null, use AudioStream.write or AudioStream.read to exchange audio data manually (blocking I/O mode).

Throws

if the stream could not be created, for example due to unsupported configuration or unavailable hardware.

if AudioStreamConfig.audioFormat is not AudioFormat.PCM_FLOAT on Android. Callbacks always receive float samples.

if recording permission is required but not granted (input streams only). On Android this is checked after AudioSessionManager.bind; without bind, a later AudioStream.start failure is StreamOperationException.

Open a new audio stream with the given configuration.

The returned stream is in the StreamState.OPEN state and must be explicitly started via AudioStream.start. Multiple streams can be open simultaneously (e.g., one for input and one for output).

val stream = engine.openStream(
config = AudioStreamConfig(sampleRate = 48000, channelCount = 2),
callback = object : AudioStreamCallback {
override fun onAudioReady(buffer: FloatArray, numFrames: Int): Int {
// Fill buffer with audio data
return numFrames
}
},
)

Return

A new AudioStream in the StreamState.OPEN state.

Parameters

config

Stream configuration. See AudioStreamConfig for defaults and valid ranges.

callback

Optional callback for real-time audio processing. If null, use AudioStream.write or AudioStream.read to exchange audio data manually (blocking I/O mode).

Throws

if the stream could not be created, for example due to unsupported configuration or unavailable hardware.

if AudioStreamConfig.audioFormat is not AudioFormat.PCM_FLOAT on Android. Callbacks always receive float samples.

if recording permission is required but not granted (input streams only). On Android this is checked after AudioSessionManager.bind; without bind, a later AudioStream.start failure is StreamOperationException.