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§

Enums§

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