[−][src]Crate kira
Kira
Kira is an audio library designed to help create expressive audio for games. Besides the common features you'd expect from an audio library, it provides interfaces for scripting audio events, seamlessly looping complex pieces of music, smoothly changing parameters, and more.
Usage
To use Kira, first create an AudioManager
:
let mut audio_manager = AudioManager::new(AudioManagerSettings::default())?;
All audio-related actions go through the AudioManager
.
Loading and playing a sound
let sound_id = audio_manager.load_sound("loop.ogg", PlayableSettings::default())?; audio_manager.play(sound_id, InstanceSettings::default())?;
Looping a song while preserving trailing sounds
let sound_id = audio_manager.load_sound( std::env::current_dir()?.join("assets/loop.wav"), PlayableSettings { semantic_duration: Some(Tempo(140.0).beats_to_seconds(16.0)), ..Default::default() }, )?; let arrangement = Arrangement::new_loop(sound_id, LoopArrangementSettings::default()); let arrangement_id = audio_manager.add_arrangement(arrangement)?; audio_manager.play(arrangement_id, InstanceSettings::default())?;
Scripting audio sequences
This example will play a kick drum sound every 4 beats and emit an event each time:
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] enum CustomEvent { KickDrum, } let mut sequence = Sequence::<CustomEvent>::new(SequenceSettings::default()); sequence.start_loop(); sequence.wait_for_interval(4.0); sequence.play(kick_drum_sound_id, InstanceSettings::default()); sequence.emit(CustomEvent::KickDrum); let (id, mut event_receiver) = audio_manager.start_sequence(sequence, SequenceInstanceSettings::default())?; // start the metronome so the sequence will have a pulse to listen for audio_manager.start_metronome()?; // pop events while let Some(event) = event_receiver.pop() { println!("{:?}", event); }
Modules
arrangement | Provides an interface for combining individual sounds into larger pieces. |
audio_stream | Provides an interface for sending arbitrary audio data to a mixer track. |
group | Provides an interface for controlling multiple instances and sequences at a time. |
instance | Provides an interface to control "instances", or individual occurrences,
of |
manager | Provides a bridge between the main thread and the audio thread. |
mixer | Provides an interface for organizing and applying effects to sounds. |
parameter | Provides an interface for smoothly changing values over time. |
playable | Provides a wrapper around sounds and arrangements. |
sequence | Provides an interface to script timed audio events. |
sound | Provides an interface to work with pieces of audio. |
Structs
CachedValue | A wrapper around |
Frame | Represents an audio sample with a left and right channel. |
MetronomeSettings | Settings for the metronome. |
Tempo | Represents a tempo, or speed, of some music (in beats per minute). |
Enums
AudioError | Something that can go wrong. |
Duration | Represents a duration of time. |
Event | An audio-related event that can be observed on the main thread. |
Value | A value that something can be set to. |
Type Definitions
AudioResult | A wrapper around the standard |