Struct bones_framework::audio::StaticSoundData
pub struct StaticSoundData {
pub sample_rate: u32,
pub frames: Arc<[Frame]>,
pub settings: StaticSoundSettings,
pub slice: Option<(usize, usize)>,
}
Expand description
A piece of audio loaded into memory all at once.
These can be cheaply cloned, as the audio data is shared among all clones.
Fields§
§sample_rate: u32
The sample rate of the audio (in Hz).
frames: Arc<[Frame]>
The raw samples that make up the audio.
settings: StaticSoundSettings
Settings for the sound.
slice: Option<(usize, usize)>
The portion of the sound this StaticSoundData
represents.
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.
Implementations§
§impl StaticSoundData
impl StaticSoundData
pub fn from_file(
path: impl AsRef<Path>,
) -> Result<StaticSoundData, FromFileError>
pub fn from_file( path: impl AsRef<Path>, ) -> Result<StaticSoundData, FromFileError>
Loads an audio file into a StaticSoundData
.
pub fn from_cursor<T>(
cursor: Cursor<T>,
) -> Result<StaticSoundData, FromFileError>
pub fn from_cursor<T>( cursor: Cursor<T>, ) -> Result<StaticSoundData, FromFileError>
Loads a cursor wrapping audio file data into a StaticSoundData
.
pub fn from_media_source(
media_source: impl MediaSource + 'static,
) -> Result<StaticSoundData, FromFileError>
pub fn from_media_source( media_source: impl MediaSource + 'static, ) -> Result<StaticSoundData, FromFileError>
Loads an audio file from a type that implements Symphonia’s [MediaSource
]
trait.
§impl StaticSoundData
impl 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§
§impl Clone for StaticSoundData
impl Clone for StaticSoundData
§fn clone(&self) -> StaticSoundData
fn clone(&self) -> StaticSoundData
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for StaticSoundData
impl Debug for StaticSoundData
§impl PartialEq for StaticSoundData
impl PartialEq for StaticSoundData
§fn eq(&self, other: &StaticSoundData) -> bool
fn eq(&self, other: &StaticSoundData) -> bool
self
and other
values to be equal, and is used
by ==
.§impl SoundData for StaticSoundData
impl SoundData for StaticSoundData
§fn into_sound(
self,
) -> Result<(Box<dyn Sound>, <StaticSoundData as SoundData>::Handle), <StaticSoundData as SoundData>::Error>
fn into_sound( self, ) -> Result<(Box<dyn Sound>, <StaticSoundData as SoundData>::Handle), <StaticSoundData as SoundData>::Error>
impl StructuralPartialEq for StaticSoundData
Auto Trait Implementations§
impl Freeze for StaticSoundData
impl RefUnwindSafe for StaticSoundData
impl Send for StaticSoundData
impl Sync for StaticSoundData
impl Unpin for StaticSoundData
impl UnwindSafe for StaticSoundData
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
§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.