Struct bones_framework::audio::audio_manager::AudioSource
source · pub struct AudioSource(pub StaticSoundData);
Expand description
The audio source asset type, contains no data, but Handle<AudioSource>
is still useful
because it uniquely represents a sound/music that may be played outside of bones.
Tuple Fields§
§0: StaticSoundData
Methods from Deref<Target = StaticSoundData>§
pub fn start_time(&self, start_time: impl Into<StartTime>) -> StaticSoundData
pub fn start_time(&self, start_time: impl Into<StartTime>) -> StaticSoundData
Sets when the sound should start playing.
This returns a cheap clone of the StaticSoundData
with the modified start time.
§Examples
Configuring a sound to start 4 ticks after a clock’s current time:
use kira::{
manager::{AudioManager, AudioManagerSettings, backend::DefaultBackend},
sound::static_sound::{StaticSoundData, StaticSoundSettings},
clock::ClockSpeed,
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let clock_handle = manager.add_clock(ClockSpeed::TicksPerMinute(120.0))?;
let sound = StaticSoundData::from_file("sound.ogg")?
.start_time(clock_handle.time() + 4);
pub fn start_position(
&self,
start_position: impl Into<PlaybackPosition>,
) -> StaticSoundData
pub fn start_position( &self, start_position: impl Into<PlaybackPosition>, ) -> StaticSoundData
Sets where in the sound playback should start.
This returns a cheap clone of the StaticSoundData
with the modified start position.
pub fn reverse(&self, reverse: bool) -> StaticSoundData
pub fn reverse(&self, reverse: bool) -> StaticSoundData
Sets whether the sound should be played in reverse.
This returns a cheap clone of the StaticSoundData
with the modified setting.
pub fn loop_region(
&self,
loop_region: impl IntoOptionalRegion,
) -> StaticSoundData
pub fn loop_region( &self, loop_region: impl IntoOptionalRegion, ) -> StaticSoundData
Sets the portion of the sound that should be looped.
This returns a cheap clone of the StaticSoundData
with the modified loop region.
§Examples
Configure a sound to loop the portion from 3 seconds in to the end:
let settings = StaticSoundSettings::new().loop_region(3.0..);
Configure a sound to loop the portion from 2 to 4 seconds:
let settings = StaticSoundSettings::new().loop_region(2.0..4.0);
pub fn volume(&self, volume: impl Into<Value<Volume>>) -> StaticSoundData
pub fn volume(&self, volume: impl Into<Value<Volume>>) -> StaticSoundData
Sets the volume of the sound.
This returns a cheap clone of the StaticSoundData
with the modified volume.
§Examples
Set the volume as a factor:
let settings = StaticSoundSettings::new().volume(0.5);
Set the volume as a gain in decibels:
let settings = StaticSoundSettings::new().volume(kira::Volume::Decibels(-6.0));
Link the volume to a modulator:
use kira::{
manager::{AudioManager, AudioManagerSettings, backend::DefaultBackend},
modulator::tweener::TweenerBuilder,
sound::static_sound::{StaticSoundSettings},
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let tweener = manager.add_modulator(TweenerBuilder {
initial_value: 0.5,
})?;
let settings = StaticSoundSettings::new().volume(&tweener);
pub fn playback_rate(
&self,
playback_rate: impl Into<Value<PlaybackRate>>,
) -> StaticSoundData
pub fn playback_rate( &self, playback_rate: impl Into<Value<PlaybackRate>>, ) -> StaticSoundData
Sets the playback rate of the sound.
Changing the playback rate will change both the speed and the pitch of the sound.
This returns a cheap clone of the StaticSoundData
with the modified playback rate.
§Examples
Set the playback rate as a factor:
let settings = StaticSoundSettings::new().playback_rate(0.5);
Set the playback rate as a change in semitones:
use kira::sound::PlaybackRate;
let settings = StaticSoundSettings::new().playback_rate(PlaybackRate::Semitones(-2.0));
Link the playback rate to a modulator:
use kira::{
manager::{AudioManager, AudioManagerSettings, backend::DefaultBackend},
modulator::tweener::TweenerBuilder,
sound::static_sound::{StaticSoundSettings},
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let tweener = manager.add_modulator(TweenerBuilder {
initial_value: 0.5,
})?;
let settings = StaticSoundSettings::new().playback_rate(&tweener);
pub fn panning(&self, panning: impl Into<Value<f64>>) -> StaticSoundData
pub fn panning(&self, panning: impl Into<Value<f64>>) -> StaticSoundData
Sets the panning of the sound, where 0 is hard left and 1 is hard right.
This returns a cheap clone of the StaticSoundData
with the modified panning.
§Examples
Set the panning to a static value:
let settings = StaticSoundSettings::new().panning(0.25);
Link the panning to a modulator:
use kira::{
manager::{AudioManager, AudioManagerSettings, backend::DefaultBackend},
modulator::tweener::TweenerBuilder,
sound::static_sound::{StaticSoundSettings},
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let tweener = manager.add_modulator(TweenerBuilder {
initial_value: 0.25,
})?;
let settings = StaticSoundSettings::new().panning(&tweener);
pub fn output_destination(
&self,
output_destination: impl Into<OutputDestination>,
) -> StaticSoundData
pub fn output_destination( &self, output_destination: impl Into<OutputDestination>, ) -> StaticSoundData
Sets the destination that this sound should be routed to.
This returns a cheap clone of the StaticSoundData
with the modified output destination.
§Examples
Set the output destination of a sound to a mixer track:
use kira::{
manager::{AudioManager, AudioManagerSettings, backend::DefaultBackend},
track::TrackBuilder,
sound::static_sound::{StaticSoundSettings},
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let sub_track = manager.add_sub_track(TrackBuilder::new())?;
let settings = StaticSoundSettings::new().output_destination(&sub_track);
Set the output destination of a sound to an emitter in a spatial scene:
use kira::{
manager::{AudioManager, AudioManagerSettings, backend::DefaultBackend},
spatial::{scene::SpatialSceneSettings, emitter::EmitterSettings},
sound::static_sound::{StaticSoundSettings},
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let mut scene = manager.add_spatial_scene(SpatialSceneSettings::default())?;
let emitter = scene.add_emitter(mint::Vector3 {
x: 0.0,
y: 0.0,
z: 0.0,
}, EmitterSettings::default())?;
let settings = StaticSoundSettings::new().output_destination(&emitter);
pub fn fade_in_tween(
&self,
fade_in_tween: impl Into<Option<Tween>>,
) -> StaticSoundData
pub fn fade_in_tween( &self, fade_in_tween: impl Into<Option<Tween>>, ) -> StaticSoundData
Sets the tween used to fade in the sound from silence.
This returns a cheap clone of the StaticSoundData
with the modified fade in tween.
pub fn with_settings(&self, settings: StaticSoundSettings) -> StaticSoundData
pub fn with_settings(&self, settings: StaticSoundSettings) -> StaticSoundData
Returns a cheap clone of the StaticSoundData
with the specified settings.
pub fn num_frames(&self) -> usize
pub fn num_frames(&self) -> usize
Returns the number of frames in the StaticSoundData
.
If StaticSoundData::slice
is Some
, this will be the number
of frames in the slice.
pub fn duration(&self) -> Duration
pub fn duration(&self) -> Duration
Returns the duration of the audio.
If StaticSoundData::slice
is Some
, this will be the duration
of the slice.
pub fn frame_at_index(&self, index: usize) -> Option<Frame>
pub fn frame_at_index(&self, index: usize) -> Option<Frame>
Returns the nth [Frame
] of audio in the StaticSoundData
.
If StaticSoundData::slice
is Some
, this will behave as if the StaticSoundData
only contained that portion of the audio.
pub fn slice(&self, region: impl IntoOptionalRegion) -> StaticSoundData
pub fn slice(&self, region: impl IntoOptionalRegion) -> StaticSoundData
Sets the portion of the audio this StaticSoundData
represents.
This returns a cheap clone of the StaticSoundData
with the modified slice.
Note that the StaticSoundData
holds the entire piece of audio it was originally
given regardless of the value of slice
, but StaticSoundData::num_frames
,
StaticSoundData::duration
, and StaticSoundData::frame_at_index
will all behave
as if this StaticSoundData
only contained the specified portion of audio.
§Example
use kira::{
sound::static_sound::{StaticSoundData, StaticSoundSettings},
Frame,
};
let sound = StaticSoundData {
sample_rate: 1,
frames: (0..10).map(|i| Frame::from_mono(i as f32)).collect(),
settings: StaticSoundSettings::default(),
slice: None,
};
let sliced = sound.slice(3.0..6.0);
assert_eq!(sliced.num_frames(), 3);
assert_eq!(sliced.frame_at_index(0), Some(Frame::from_mono(3.0)));
assert_eq!(sliced.frame_at_index(1), Some(Frame::from_mono(4.0)));
Trait Implementations§
source§impl Clone for AudioSource
impl Clone for AudioSource
source§fn clone(&self) -> AudioSource
fn clone(&self) -> AudioSource
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for AudioSource
impl Debug for AudioSource
source§impl Deref for AudioSource
impl Deref for AudioSource
source§impl DerefMut for AudioSource
impl DerefMut for AudioSource
source§impl HasSchema for AudioSource
impl HasSchema for AudioSource
source§fn register_schema()
fn register_schema()
source§fn cast<T>(this: &Self) -> &Twhere
T: HasSchema,
fn cast<T>(this: &Self) -> &Twhere
T: HasSchema,
source§fn try_cast<T>(this: &Self) -> Result<&T, SchemaMismatchError>where
T: HasSchema,
fn try_cast<T>(this: &Self) -> Result<&T, SchemaMismatchError>where
T: HasSchema,
source§fn cast_mut<T>(this: &mut Self) -> &mut Twhere
T: HasSchema,
fn cast_mut<T>(this: &mut Self) -> &mut Twhere
T: HasSchema,
source§fn try_cast_mut<T>(this: &mut Self) -> Result<&mut T, SchemaMismatchError>where
T: HasSchema,
fn try_cast_mut<T>(this: &mut Self) -> Result<&mut T, SchemaMismatchError>where
T: HasSchema,
source§fn as_schema_ref(&self) -> SchemaRef<'_>where
Self: Sized,
fn as_schema_ref(&self) -> SchemaRef<'_>where
Self: Sized,
T
to a SchemaRef
source§fn as_schema_mut(&mut self) -> SchemaRefMut<'_>where
Self: Sized,
fn as_schema_mut(&mut self) -> SchemaRefMut<'_>where
Self: Sized,
T
to a SchemaRefMut
source§impl SoundData for &AudioSource
impl SoundData for &AudioSource
§type Error = <StaticSoundData as SoundData>::Error
type Error = <StaticSoundData as SoundData>::Error
§type Handle = <StaticSoundData as SoundData>::Handle
type Handle = <StaticSoundData as SoundData>::Handle
Auto Trait Implementations§
impl Freeze for AudioSource
impl RefUnwindSafe for AudioSource
impl Send for AudioSource
impl Sync for AudioSource
impl Unpin for AudioSource
impl UnwindSafe for AudioSource
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.