Struct SpatialTrackBuilder
pub struct SpatialTrackBuilder { /* private fields */ }
dep_kira
only.Expand description
Configures a spatial mixer track.
Implementations§
§impl SpatialTrackBuilder
impl SpatialTrackBuilder
pub fn new() -> SpatialTrackBuilder
pub fn new() -> SpatialTrackBuilder
Creates a new SpatialTrackBuilder
with the default settings.
pub fn volume(self, volume: impl Into<Value<Decibels>>) -> SpatialTrackBuilder
pub fn volume(self, volume: impl Into<Value<Decibels>>) -> SpatialTrackBuilder
Sets the volume of the track.
§Examples
Set the volume to a fixed decibel value:
let builder = SpatialTrackBuilder::new().volume(-6.0);
Link the volume to a modulator:
use kira::{
AudioManager, AudioManagerSettings, DefaultBackend,
modulator::tweener::TweenerBuilder,
track::SpatialTrackBuilder,
Easing, Value, Mapping,
Decibels,
};
let mut manager = AudioManager::<DefaultBackend>::new(AudioManagerSettings::default())?;
let tweener = manager.add_modulator(TweenerBuilder {
initial_value: 0.5,
})?;
let builder = SpatialTrackBuilder::new().volume(Value::FromModulator {
id: tweener.id(),
mapping: Mapping {
input_range: (0.0, 1.0),
output_range: (Decibels::SILENCE, Decibels::IDENTITY),
easing: Easing::Linear,
},
});
pub fn sub_track_capacity(self, capacity: usize) -> SpatialTrackBuilder
pub fn sub_track_capacity(self, capacity: usize) -> SpatialTrackBuilder
Sets the maximum number of sub-tracks this track can have.
pub fn sound_capacity(self, capacity: usize) -> SpatialTrackBuilder
pub fn sound_capacity(self, capacity: usize) -> SpatialTrackBuilder
Sets the maximum number of sounds that can be played simultaneously on this track.
pub fn with_send(
self,
track: impl Into<SendTrackId>,
volume: impl Into<Value<Decibels>>,
) -> SpatialTrackBuilder
pub fn with_send( self, track: impl Into<SendTrackId>, volume: impl Into<Value<Decibels>>, ) -> SpatialTrackBuilder
Routes this track to the given send track with the given volume.
pub fn add_effect<B>(&mut self, builder: B) -> <B as EffectBuilder>::Handlewhere
B: EffectBuilder,
pub fn add_effect<B>(&mut self, builder: B) -> <B as EffectBuilder>::Handlewhere
B: EffectBuilder,
Adds an effect to the track.
§Examples
use kira::{track::SpatialTrackBuilder, effect::delay::DelayBuilder};
let mut builder = SpatialTrackBuilder::new();
let delay_handle = builder.add_effect(DelayBuilder::new());
pub fn with_effect<B>(self, builder: B) -> SpatialTrackBuilderwhere
B: EffectBuilder,
pub fn with_effect<B>(self, builder: B) -> SpatialTrackBuilderwhere
B: EffectBuilder,
Adds an effect to the track and returns the SpatialTrackBuilder
.
If you need to modify the effect later, use add_effect
,
which returns the effect handle.
§Examples
use kira::{
track::SpatialTrackBuilder,
effect::{filter::FilterBuilder, reverb::ReverbBuilder},
};
let mut builder = SpatialTrackBuilder::new()
.with_effect(FilterBuilder::new())
.with_effect(ReverbBuilder::new());
pub fn add_built_effect(&mut self, effect: Box<dyn Effect>)
pub fn add_built_effect(&mut self, effect: Box<dyn Effect>)
Adds an already built effect into this track.
Box<dyn Effect>
values are created when calling build
on an effect builder, which gives you
an effect handle, as well as this boxed effect, which is the actual audio effect.
This is a lower-level method than Self::add_effect
, and you should probably use it rather
than this method, unless you have a reason to.
§Examples
use kira::track::SpatialTrackBuilder;
use kira::effect::{EffectBuilder, delay::DelayBuilder};
let mut builder = SpatialTrackBuilder::new();
let delay_builder = DelayBuilder::new();
let (effect, delay_handle) = delay_builder.build();
let delay_handle = builder.add_built_effect(effect);
pub fn with_built_effect(self, effect: Box<dyn Effect>) -> SpatialTrackBuilder
pub fn with_built_effect(self, effect: Box<dyn Effect>) -> SpatialTrackBuilder
Add an already-built effect and return the SpatialTrackBuilder
.
Box<dyn Effect>
values are created when calling build
on an effect builder, which gives you
an effect handle, as well as this boxed effect, which is the actual audio effect.
This is a lower-level method than Self::with_effect
, and you should probably use it rather
than this method, unless you have a reason to.
§Examples
use kira::{
track::SpatialTrackBuilder,
effect::{filter::FilterBuilder, reverb::ReverbBuilder, EffectBuilder},
};
let (filter_effect, filter_handle) = FilterBuilder::new().build();
let (reverb_effect, reverb_handle) = ReverbBuilder::new().build();
let mut builder = SpatialTrackBuilder::new()
.with_built_effect(filter_effect)
.with_built_effect(reverb_effect);
pub fn persist_until_sounds_finish(self, persist: bool) -> SpatialTrackBuilder
pub fn persist_until_sounds_finish(self, persist: bool) -> SpatialTrackBuilder
Sets whether the track should stay alive while sounds are playing on it.
By default, as soon as a track’s handle is dropped, the track is unloaded.
If this is set to true
, the track will wait until all sounds on the track
are finished before unloading.
pub fn distances(
self,
distances: impl Into<SpatialTrackDistances>,
) -> SpatialTrackBuilder
pub fn distances( self, distances: impl Into<SpatialTrackDistances>, ) -> SpatialTrackBuilder
Sets the distances from a listener at which the emitter is loudest and quietest.
pub fn attenuation_function(
self,
attenuation_function: impl Into<Option<Easing>>,
) -> SpatialTrackBuilder
pub fn attenuation_function( self, attenuation_function: impl Into<Option<Easing>>, ) -> SpatialTrackBuilder
Sets how the emitter’s volume will change with distance.
If None
, the emitter will output at a constant volume.
pub fn spatialization_strength(
self,
spatialization_strength: impl Into<Value<f32>>,
) -> SpatialTrackBuilder
pub fn spatialization_strength( self, spatialization_strength: impl Into<Value<f32>>, ) -> SpatialTrackBuilder
Sets how much the track’s output should be panned left or right depending on its direction from the listener.
This value should be between 0.0
and 1.0
. 0.0
disables spatialization
entirely.
Trait Implementations§
§impl Default for SpatialTrackBuilder
impl Default for SpatialTrackBuilder
§fn default() -> SpatialTrackBuilder
fn default() -> SpatialTrackBuilder
Auto Trait Implementations§
impl Freeze for SpatialTrackBuilder
impl !RefUnwindSafe for SpatialTrackBuilder
impl Send for SpatialTrackBuilder
impl !Sync for SpatialTrackBuilder
impl Unpin for SpatialTrackBuilder
impl !UnwindSafe for SpatialTrackBuilder
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize ⓘ
fn byte_align(&self) -> usize ⓘ
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of_val(&self) -> usize ⓘ
fn mem_align_of_val(&self) -> usize ⓘ
Source§fn mem_size_of_val(&self) -> usize ⓘ
fn mem_size_of_val(&self) -> usize ⓘ
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§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> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§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> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.