# Sound — Modular Audio Toolkit for Games
Sound (formerly Ash Audio) is a lightweight yet extensible Rust audio stack inspired by Bevy's ECS patterns. Tier 1 ships with a simple CPAL backend and ready‑to‑use managers; Tier 2 layers on AAA‑grade capabilities such as DAG buses, per‑bus FX, voice virtualization, and procedural audio graphs.
## Highlights
- **Simple default manager** – `AudioManager` exposes one‑line playback APIs.
- **Pluggable backends** – CPAL baseline with optional Kira/Rodio integrations (Tier 2).
- **Advanced mixing** – Bus DAGs, per‑bus FX chains, soft clipping, spatialization helpers.
- **Voice virtualization** – Smart eviction/reactivation for 512+ simultaneous voices.
- **Procedural audio** – Feature‑gated `AudioGraph`, oscillators, envelopes, filters, mixers.
- **Tested + documented** – Extensive unit/integration tests covering buses, codecs, mixing.
## Getting Started
Add the crate to your project:
```toml
[dependencies]
sound = { version = "0.1", features = ["tier2"] }
```
Play a sound with default settings:
```rust
use sound::prelude::*;
fn main() -> sound::types::Result<()> {
let mut manager = AudioManager::new()?;
manager.play_sound("assets/music.ogg", "music")?;
manager.set_mix_state("gameplay")?;
Ok(())
}
```
### Feature Flags
`effects` | Enables the shared DSP infrastructure (effect trait + chains).
`tier2` | Convenience bundle for all advanced capabilities (includes backends, FX, streaming, procedural audio, profiling scaffold).
`procedural` | Standalone procedural audio graphs if you only need synthesis.
`backend-kira`, `backend-rodio` | Optional third‑party backends for Tier 2.
See [`Cargo.toml`](./cargo.toml) for the full feature graph.
## Status & Roadmap
- Tier 1 + Tier 2 Phase 1–2 are implemented (`AudioManager`, mixer v2, procedural graph).
- Upcoming phases: streaming backends, expanded FX suite, profiling, advanced spatial.
Contributions are welcome—please open an issue or PR with proposals.