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, 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
Re-exports§
Macros§
- Includes a sound in the executable. The
symphonia
feature must be enabled for this macro to exist.
Structs§
- A command that specifies an action that is applied on a
crate::Sound
with 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
Renderer
so 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
Sound
so 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
cpal
should 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