pub struct AudioEngine<G: Eq + Hash + Send + 'static = ()> { /* private fields */ }
Expand description
The main struct of the crate.
This hold all existing SoundSource
s and cpal::platform::Stream
.
Each sound is associated with a group, which is purely used by
set_group_volume
, to allow mixing multiple sounds together.
Implementations§
Source§impl<G: Default + Eq + Hash + Send> AudioEngine<G>
impl<G: Default + Eq + Hash + Send> AudioEngine<G>
Sourcepub fn new_sound<T: SoundSource + Send + 'static>(
&self,
source: T,
) -> Result<Sound<G>, &'static str>
pub fn new_sound<T: SoundSource + Send + 'static>( &self, source: T, ) -> Result<Sound<G>, &'static str>
Add a new Sound in the default Group.
Same as calling new_sound_with_group(G::default(), source)
.
See Self::new_sound_with_group, for more information.
Source§impl AudioEngine
impl AudioEngine
Sourcepub fn new() -> Result<Self, &'static str>
pub fn new() -> Result<Self, &'static str>
Tries to create a new AudioEngine.
cpal
will spawn a new thread where the sound samples will be sampled, mixed, and outputed
to the output stream.
Sourcepub fn with_groups<G: Eq + Hash + Send>() -> Result<AudioEngine<G>, &'static str>
pub fn with_groups<G: Eq + Hash + Send>() -> Result<AudioEngine<G>, &'static str>
Tries to create a new AudioEngine, with the given type to represent sound groups.
cpal
will spawn a new thread where the sound samples will be sampled, mixed, and outputed
to the output stream.
§Example
use audio_engine::{AudioEngine, WavDecoder};
#[derive(Eq, Hash, PartialEq)]
enum Group {
Effect,
Music,
}
let audio_engine = AudioEngine::with_groups::<Group>()?;
let mut fx = audio_engine.new_sound_with_group(Group::Effect, my_fx)?;
let mut music = audio_engine.new_sound_with_group(Group::Music, my_music)?;
fx.play();
music.play();
// decrease music volume, for example
audio_engine.set_group_volume(Group::Music, 0.1);
Source§impl<G: Eq + Hash + Send> AudioEngine<G>
impl<G: Eq + Hash + Send> AudioEngine<G>
Sourcepub fn sample_rate(&self) -> u32
pub fn sample_rate(&self) -> u32
The sample rate that is currently being outputed to the device.
Sourcepub fn channels(&self) -> u16
pub fn channels(&self) -> u16
The sample rate of the current output device.
May change when the device changes.
Sourcepub fn new_sound_with_group<T: SoundSource + Send + 'static>(
&self,
group: G,
source: T,
) -> Result<Sound<G>, &'static str>
pub fn new_sound_with_group<T: SoundSource + Send + 'static>( &self, group: G, source: T, ) -> Result<Sound<G>, &'static str>
Add a new Sound with the given Group.
The added sound starts in the stopped state, and play
must be called to
start playing it.
If the number of channels of source
mismatch the output number of
channel, source
will be wrapped in a ChannelConverter
.
If the sample rate of source
mismatch the output
sample rate, source
will be wrapped in a SampleRateConverter
.
Sourcepub fn set_group_volume(&self, group: G, volume: f32)
pub fn set_group_volume(&self, group: G, volume: f32)
Set the volume of the given group.
The volume of all sounds associated with this group is multiplied by this volume.