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 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 Built-in decoder selection
10.5 Opening and callbacks
10.6 Reading, seeking, and stopping
10.7 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 opusfile-decoder
13.1 Availability
13.2 Output format setting
13.3 Validation
13.4 Opening
13.5 Reading
13.6 Seeking
13.7 Stopping
13.8 Notes
14 mp3-decoder
14.1 Validation
14.2 Opening
14.3 Reading
14.4 Seeking
14.5 Stopping
14.6 Notes
15 FFmpeg Decoder
15.1 Stream Information
15.2 Decoding Model
15.3 Notes
16 libao
16.1 Audio handles
16.2 Validation predicates
16.3 Opening and closing
16.4 Playback
16.5 Playback state
16.6 Volume control
16.7 Notes
17 FFmpeg Decoder Definitions
17.1 Layering
17.2 FFmpeg version information
17.3 Implementation strategy
17.3.1 C structs and offsets
17.3.2 Defensive control flow
17.4 Decoder instances
17.5 Audio stream information
17.6 Output format
17.7 Decoding
17.8 Decoded buffers
17.9 Seeking
17.10 Resource ownership
17.11 Use through the decoder frontend
17.12 Examples
18 FFmpeg FFI
18.1 Command Interface
18.2 Format Callback
18.3 Reading Audio
18.4 Seeking
18.5 Metadata
18.6 Native Library
18.7 Errors
Index