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.__all__¶
[‘MiniaudioBackend’]
- class simvx.core.audio_backend.MiniaudioBackend(sample_rate: int = _SAMPLE_RATE, nchannels: int = _NCHANNELS)[source]¶
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[source]¶
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[source]¶
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[source]¶
Play a 3D-positioned sound. Spatialization is updated per-frame via
update_audio_3d.
- update_audio_2d(channel_id: int, volume_db: float, pan: float) None[source]¶
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[source]¶
Update volume, pan, and pitch for a 3D channel (called each frame).
- open_stream(*, volume_db: float = 0.0, pitch: float = 1.0, bus: str = 'master') int[source]¶
Open a streaming channel that accepts raw PCM chunks via
feed_audio_chunk.