Overview
The audio subsystem uses a block-based circular buffer system where:- Audio data is 32-bit floating point PCM format
- Sample values range from -1.0 to 1.0
- Samples are interlaced (stereo: even=left, odd=right)
- Each block contains 256 samples (AUDIO_BLOCK_SAMPLES)
Typical Usage Flow
- Initialize audio system (
audioInit) - Open an audio port (
audioPortOpen) - Get port configuration (
audioGetPortConfig) - Create notify event queue (
audioCreateNotifyEventQueue) - Set event queue (
audioSetNotifyEventQueue) - Start audio port (
audioPortStart) - Write audio blocks as events arrive
- Stop port, close port, and quit when done
Data Structures
audioPortParam
Audio port parameters for initialization.Number of audio channels:
AUDIO_PORT_2CH(2) - Stereo outputAUDIO_PORT_8CH(8) - 8-channel output
Number of blocks in audio buffer:
AUDIO_BLOCK_8(8) - 8 blocksAUDIO_BLOCK_16(16) - 16 blocksAUDIO_BLOCK_32(32) - 32 blocks
Special attributes. Set to 0 or
AUDIO_PORT_INITLEVEL (0x1000) to set initial volume.Initial volume level (0.0 to 1.0). Only valid when
attrib is set to AUDIO_PORT_INITLEVEL.audioPortConfig
Audio port configuration returned by the system.Index of currently read block in audio port buffer.
Audio port status:
AUDIO_STATUS_READY(1) - Port is ready to playAUDIO_STATUS_RUN(2) - Port is playingAUDIO_STATUS_CLOSE(0x1010) - Port has been closed
Number of channels configured.
Number of blocks in the buffer.
Total size of the audio port buffer.
Start address of audio port buffer. Cast to
float* for writing audio data.Functions
audioInit
Returns 0 on success, non-zero on error.
audioQuit
Returns 0 on success, non-zero on error.
audioPortOpen
Pointer to audio port parameter structure.
Pointer to storage for the returned port ID.
Returns 0 on success, non-zero on error.
audioPortClose
Port ID as returned by
audioPortOpen.Returns 0 on success, non-zero on error.
audioPortStart
Port ID as returned by
audioPortOpen.Returns 0 on success, non-zero on error.
audioPortStop
Port ID as returned by
audioPortOpen.Returns 0 on success, non-zero on error.
audioGetPortConfig
Port ID as returned by
audioPortOpen.Pointer to port config structure to be filled.
Returns 0 on success, non-zero on error.
audioCreateNotifyEventQueue
Pointer to event queue object to be updated.
Pointer to storage for the returned queue key.
Returns 0 on success, non-zero on error.
audioSetNotifyEventQueue
Queue key value (must have been created using
audioCreateNotifyEventQueue).Returns 0 on success, non-zero on error.
audioRemoveNotifyEventQueue
Queue key value (must have been created using
audioCreateNotifyEventQueue).Returns 0 on success, non-zero on error.
Example
Audio Data Format
The audio buffer expects 32-bit floating-point PCM data:- Sample format: 32-bit float
- Sample range: -1.0 to 1.0
- Samples per block: 256 (AUDIO_BLOCK_SAMPLES)
- Interleaving: Samples are interlaced by channel