1 Introduction racket-audio
1.1 APIs for normal users
1.2 Lower-level modules for geeks
2 Audio Player
2.1 Creating a player
2.2 Basic playback
2.3 Position, volume, and buffering
2.4 State snapshots
2.5 Events and callbacks
2.6 Example
3 audio-sniffer
3.1 Overview
3.2 Formats
3.3 API
3.4 Architecture
3.5 Detection Details
3.6 Why not use FFmpeg?
4 TagLib Metadata
4.1 Reading metadata
4.2 Common tag fields
4.3 Audio properties
4.4 Generic properties
4.5 Embedded pictures
4.6 Picture values
4.7 Converting to a hash
4.8 Example
4.9 Implementation notes
5 Playback Test Program
5.1 Purpose
5.2 Selecting the test mode
5.3 Queue setup
5.4 Formatting state output
5.5 State callback
5.6 EOF callback and queue advancement
5.7 Creating the player
5.8 Starting the test
5.9 Integration pattern
6 Placed Audio Player
6.1 Interface
6.2 Overall state model
6.3 Command protocol
6.4 Worker and decoder lifecycle
6.5 Audio output and buffering
6.6 Pause, seek, and volume
6.7 State snapshots and events
6.8 Stop, cleanup, and quit
6.9 Running in a place or in a thread
7 audio-decoder
7.1 Reader registration
7.2 Audio handles
7.3 Known extensions and validation
7.4 Opening and callbacks
7.5 Reading, seeking, and stopping
7.6 Using custom decoders
8 Asynchronous libao playback in Racket
8.1 Basic example
8.2 Playback handles
8.3 Buffer descriptions
8.4 Queuing audio
8.5 Playback state
8.6 Volume and output format
8.7 Implementation strategy
8.8 Compatibility notes
9 flac-decoder
9.1 Procedures
9.2 Diagnostic bindings
9.3 Notes
10 mp3-decoder
10.1 Validation
10.2 Opening
10.3 Reading
10.4 Seeking
10.5 Stopping
10.6 Notes
11 FFmpeg Decoder
11.1 Stream Information
11.2 Decoding Model
11.3 Notes
12 libao
12.1 Audio handles
12.2 Validation predicates
12.3 Opening and closing
12.4 Playback
12.5 Playback state
12.6 Volume control
12.7 Notes
13 FFmpeg Decoder Definitions
13.1 Layering
13.2 Implementation strategy
13.2.1 Versioned C struct layouts
13.2.2 Sequential failure handling
13.3 Decoder instances
13.4 Audio stream information
13.5 Decoding
13.6 Decoded buffers
13.7 FFmpeg version information
13.8 Use through the decoder frontend
13.9 Example
14 FFmpeg FFI
14.1 Command Interface
14.2 Format Callback
14.3 Reading Audio
14.4 Seeking
14.5 Metadata
14.6 Native Library
14.7 Errors
Index