Available Audio Samples
audiotest
Basic audio playback with sine wave generation
audiosync
Event-based audio synchronization for sample playback
PS3 Audio Architecture
The PS3 audio system uses a block-based architecture:- Audio ports provide audio output channels
- Blocks are fixed-size buffers (AUDIO_BLOCK_SAMPLES per block)
- Hardware reads blocks automatically at the sample rate
- Application writes ahead of the hardware read pointer
Audio Parameters
- Channels: 2 (stereo) or 8 (multi-channel)
- Block counts: 8, 16, or 32 blocks per port
- Sample format: Float32 (-1.0 to 1.0)
- Sample rate: 48 kHz
audiotest - Basic Audio Playback
Location:samples/audio/audiotest/
Demonstrates simple audio output by generating sine waves.
What It Demonstrates
- Audio library initialization
- Opening and configuring audio ports
- Generating audio samples (sine waves)
- Block-based buffer filling
- Staying ahead of hardware playback
- Proper shutdown sequence
Implementation
samples/audio/audiotest/source/main.c
Audio Playback Flow
Get port configuration
readIndex: Hardware read positionaudioDataStart: Buffer addresschannelCount,numBlocks: Confirmed settings
audiosync - Event-Based Audio
Location:samples/audio/audiosync/
Demonstrates event-based audio synchronization for precise timing.
What It Demonstrates
- Audio event queue creation
- Event-based synchronization
- Playing pre-recorded audio samples
- Precise timing control
Implementation
samples/audio/audiosync/source/main.c
Event-Based vs Polling
Polling (audiotest)
Polling (audiotest)
Pros:
- Simpler code
- No event queue overhead
- Works well for always-playing audio
- Must actively check if buffer is ready
- Can waste CPU cycles
Event-based (audiosync)
Event-based (audiosync)
Pros:
- Efficient - thread sleeps until event
- Precise timing
- Better for interactive audio
- More complex setup
- Event queue overhead
Building Audio Samples
Build All Audio Samples
Build Individual Sample
Run Sample
Audio Buffer Management
Buffer Calculation
Interleaved Format
Audio samples are interleaved by channel:Common Audio Patterns
Sine wave generation
Sine wave generation
PCM sample conversion
PCM sample conversion
Volume control
Volume control
Mixing multiple sources
Mixing multiple sources
Best Practices
Stay Ahead
Always keep several blocks filled ahead of the hardware read pointer
Avoid Underruns
If you don’t fill blocks fast enough, you’ll hear audio glitches
Use Events
Event-based synchronization is more efficient than polling
Mind the Format
Audio samples must be float in range [-1.0, 1.0]
Audio Constants
Related Documentation
Audio API Reference
Complete audio system API documentation
Audio Programming Guide
In-depth audio programming concepts
Event Queue API
System event queue documentation
Threading
Multi-threading for audio processing