10 releases
0.1.9 | Feb 6, 2024 |
---|---|
0.1.8 | Jan 31, 2024 |
0.1.7 | Dec 30, 2023 |
0.1.3 | Nov 30, 2023 |
#58 in Multimedia
80KB
1.5K
SLoC
🐱 kittyaudio
crates.io | docs.rs | examples | changelogs
kittyaudio is a Rust audio playback library focusing on simplicity, speed and low-latency audio playback.
Installation with cargo
:
cargo add kittyaudio
Example
use kittyaudio::{include_sound, Mixer};
fn main() {
// include a sound into the executable.
// this type can be cheaply cloned.
let sound = include_sound!("jump.ogg").unwrap();
// create sound mixer
let mut mixer = Mixer::new();
mixer.init(); // use init_ex to specify settings
let playing_sound = mixer.play(sound);
playing_sound.set_volume(0.5); // decrease volume
mixer.wait(); // wait for all sounds to finish
}
Features
- Low-latency audio playback
- Cross-platform audio playback (including wasm)
- Handle device changes or disconnects in real time
- Low CPU usage
- Minimal dependencies
- Minimal memory allocations
- No
panic!()
or.unwrap()
, always propogate errors - No unsafe code
- Simple API, while being customizable
- Optionally use Symphonia to support most audio formats
- Feature to disable audio playback support, if you want to use kittyaudio purely as an audio library
- Commands to change volume, playback rate, position and panning in the sound with easings
- Loops, and commands to change them with easings
Roadmap
Those features are not implemented yet.
- Effects (reverb, delay, eq, etc.)
- C API
- Audio streaming from disk
Dependencies
~5–34MB
~583K SLoC