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 Remote defaults
2.3 Basic playback
2.4 Position, volume, and buffering
2.5 State snapshots
2.6 Events and callbacks
2.7 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 Opening and closing tag handles
4.2 Common tag fields
4.3 Selected generic fields
4.4 Audio properties
4.5 Generic properties
4.6 Embedded pictures
4.7 Picture values
4.8 Converting to a hash
4.9 Copying tags and pictures
4.10 Example
4.11 Implementation notes
5 Audio Encoding
5.1 Pipeline
5.2 Encoding a file
5.3 Result hash
5.4 Progress callback
5.5 Opus settings
5.6 FLAC settings
5.7 Encoder registration
6 PCM resampling with SoXR
7 Encoder Test Program
7.1 Program use
7.2 Program options
7.3 Racket functions
8 Playback Test Program
8.1 Purpose
8.2 Selecting the test mode
8.3 Queue setup
8.4 Formatting state output
8.5 State callback
8.6 EOF callback and queue advancement
8.7 Creating the player
8.8 Starting the test
8.9 Integration pattern
9 Placed Audio Player
9.1 Interface
9.2 Overall state model
9.3 Command protocol
9.4 Worker and decoder lifecycle
9.5 Audio output and buffering
9.6 Pause, seek, and volume
9.7 State snapshots and events
9.8 Stop, cleanup, and quit
9.9 Running in a place or in a thread
10 audio-decoder
10.1 Reader registration
10.2 Audio handles
10.3 Known extensions and validation
10.4 Opening and callbacks
10.5 Reading, seeking, and stopping
10.6 Using custom decoders
11 Asynchronous libao playback in Racket
11.1 Overview
11.2 Basic example
11.3 Playback handles
11.4 Buffer descriptions
11.5 Queuing audio
11.6 Playback state
11.7 Volume and output format
11.8 Playback buffer tuning
11.9 Implementation strategy
11.10 Compatibility notes
12 flac-decoder
12.1 Procedures
12.2 Diagnostic bindings
12.3 Notes
13 mp3-decoder
13.1 Validation
13.2 Opening
13.3 Reading
13.4 Seeking
13.5 Stopping
13.6 Notes
14 FFmpeg Decoder
14.1 Stream Information
14.2 Decoding Model
14.3 Notes
15 libao
15.1 Audio handles
15.2 Validation predicates
15.3 Opening and closing
15.4 Playback
15.5 Playback state
15.6 Volume control
15.7 Notes
16 FFmpeg Decoder Definitions
16.1 Layering
16.2 FFmpeg version information
16.3 Implementation strategy
16.3.1 C structs and offsets
16.3.2 Defensive control flow
16.4 Decoder instances
16.5 Audio stream information
16.6 Output format
16.7 Decoding
16.8 Decoded buffers
16.9 Seeking
16.10 Resource ownership
16.11 Use through the decoder frontend
16.12 Examples
17 FFmpeg FFI
17.1 Command Interface
17.2 Format Callback
17.3 Reading Audio
17.4 Seeking
17.5 Metadata
17.6 Native Library
17.7 Errors
Index