simvx.core.audio_backend¶
Miniaudio-based audio backend for SimVX.
Provides MiniaudioBackend — a real-time audio mixer that plays decoded
PCM via miniaudio.PlaybackDevice. Each active sound is tracked as a
_Channel with its own gain, pan, pitch, loop flag, and cursor. The
device callback mixes all active channels into a single interleaved S16
output buffer every audio period.
Duck-typed interface consumed by AudioStreamPlayer, AudioStreamPlayer2D,
and AudioStreamPlayer3D.
Module Contents¶
Classes¶
Real-time audio mixer using miniaudio’s PlaybackDevice. |
Data¶
API¶
- simvx.core.audio_backend.log¶
‘getLogger(…)’
- simvx.core.audio_backend.__all__¶
[‘MiniaudioBackend’]
- class simvx.core.audio_backend.MiniaudioBackend(sample_rate: int = _SAMPLE_RATE, nchannels: int = _NCHANNELS)¶
Real-time audio mixer using miniaudio’s PlaybackDevice.
The backend owns a single playback device that runs a callback on a dedicated audio thread. All public methods are thread-safe — they mutate
_channelsunder a lock while the audio thread reads from it.Initialization
- play_audio(stream: simvx.core.audio.AudioStream, *, volume_db: float = 0.0, pitch: float = 1.0, loop: bool = False, bus: str = 'master') int | None¶
Decode and play an audio stream. Returns a channel ID.
- play_audio_2d(stream: simvx.core.audio.AudioStream, *, position: Any = None, volume_db: float = 0.0, pitch: float = 1.0, loop: bool = False, bus: str = 'sfx', max_distance: float = 2000.0) int | None¶
Play a 2D-positioned sound. Spatialization is updated per-frame via
update_audio_2d.
- play_audio_3d(stream: simvx.core.audio.AudioStream, *, position: Any = None, volume_db: float = 0.0, pitch: float = 1.0, loop: bool = False, bus: str = 'sfx', max_distance: float = 100.0) int | None¶
Play a 3D-positioned sound. Spatialization is updated per-frame via
update_audio_3d.
- stop_audio(channel_id: int) None¶
Stop a playing channel.
- pause_audio(channel_id: int) None¶
Pause a playing channel.
- resume_audio(channel_id: int) None¶
Resume a paused channel.
- update_audio_2d(channel_id: int, volume_db: float, pan: float) None¶
Update volume and pan for a 2D channel (called each frame).
- update_audio_3d(channel_id: int, volume_db: float, pan: float, pitch: float) None¶
Update volume, pan, and pitch for a 3D channel (called each frame).
- get_playback_position(channel_id: int) float¶
Return current playback position in seconds.
- open_stream(*, volume_db: float = 0.0, pitch: float = 1.0, bus: str = 'master') int¶
Open a streaming channel that accepts raw PCM chunks via
feed_audio_chunk.
- feed_audio_chunk(channel_id: int, chunk: bytes) None¶
Append raw PCM bytes to a streaming channel’s buffer.
- shutdown() None¶
Stop the playback device and release resources.