Crate kittyaudio
source ·Expand description
kittyaudio is an audio library focusing on simplicity.
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
}See more examples in the examples directory.
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 and position 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
Re-exports
Macros
- Includes a sound in the executable. The
symphoniafeature must be enabled for this macro to exist.
Structs
- A command that specifies an action that is applied on a
crate::Soundwith an optional tween. - Default audio renderer.
- Represents an audio sample. Stores a left and right channel.
- Audio mixer. The mixing is done by the
Renderer(RendererHandle), and the audio playback is handled by theBackend. - A parameter (used in
crate::Sound) that implements tweening the underlying value. - A mixer for recording audio.
- Wraps
Rendererso it can be shared between threads. - Resamples audio from one sample rate to another.
- Audio data stored in memory. This type can be cheaply cloned, as the audio data is shared between all clones.
- Wraps a
Soundso it can be returned to the user afterplay. - Wrapper around
cpal’s stream settings.
Enums
- Specifies what change to make to a
crate::Sound. Used withCommand. - Specifies what device
cpalshould use. - Specifies what easing function to use.
- KittyAudio’s error type.
- Specifies how quickly the sound is played.
Traits
- The audio renderer trait. Can be used to make custom audio renderers.
- A trait for types that can be used in a
Parameter.
Functions
- Returns all device names available on the system.
- This is the 4-point, 3rd-order Hermite interpolation x-form algorithm from “Polynomial Interpolators for High-Quality Resampling of Oversampled Audio” by Olli Niemitalo, p. 43: http://yehar.com/blog/wp-content/uploads/2009/08/deip.pdf