// the find
RustAudio/rodio
Rust audio playback library
rodio is a Rust audio playback library that sits on top of cpal (for device I/O) and Symphonia (for decoding). It gives you a Source trait-based pipeline where you chain effects—volume, speed, reverb, filters, spatial audio—and push them to a sink. Aimed at game devs and tool builders who need audio without pulling in a full engine.
The Source iterator chain is genuinely well-designed: every effect is composable and you can slot in custom sources without touching rodio internals. Symphonia as the default decoder covers most formats (MP3, FLAC, OGG, WAV, Opus, M4A) out of the box without needing external C libraries on most platforms. The minimal-build option—decode-only, no playback, no cpal dependency—is a thoughtful escape hatch for server-side audio processing. Benchmarks and a real test asset suite (multiple bit depths, multiple formats) suggest the maintainers actually care about correctness, not just CI green.
The API instability is a real cost: the README openly tells you the examples on crates.io may not match the current code and pins you to a specific commit hash—that's a red flag for production use. Cross-compilation for ARM Linux requires a multi-step manual dance with ALSA multiarch packages that is easy to get wrong and not automated. There's no built-in audio recording/capture story beyond the microphone module, which is sparse. Spatial audio is 2D only (left/right panning via the spatial source), so anything requiring proper 3D HRTF is out of scope.