pub struct SpatialBasicNode {
pub volume: Volume,
pub offset: Vec3,
pub panning_threshold: f32,
pub downmix: bool,
pub muffle_cutoff_hz: f32,
pub distance_attenuation: DistanceAttenuation,
pub smooth_seconds: f32,
pub min_gain: f32,
pub coeff_update_factor: CoeffUpdateFactor,
}Expand description
A 3D spatial positioning node using a basic but fast algorithm. It does not make use of any fancy binaural algorithms, rather it just applies basic panning and filtering.
Fields§
§volume: VolumeThe overall volume. This is applied before the spatialization algorithm.
offset: Vec3A 3D vector representing the offset between the listener and the sound source.
The coordinates are (x, y, z).
-xis to the left of the listener, and+xis the the right of the listener-yis below the listener, and+yis above the listener.-zis in front of the listener, and+zis behind the listener
By default this is set to (0.0, 0.0, 0.0)
panning_threshold: f32The threshold for the maximum amount of panning that can occur, in the range
[0.0, 1.0], where 0.0 is no panning and 1.0 is full panning (where one
of the channels is fully silent when panned hard left or right).
Setting this to a value less than 1.0 can help remove some of the
jarringness of having a sound playing in only one ear.
By default this is set to 0.6.
downmix: boolIf true, then any stereo input signals will be downmixed to mono before
going throught the spatialization algorithm. If false then the left and
right channels will be processed independently.
This has no effect if only one input channel is connected.
By default this is set to true.
muffle_cutoff_hz: f32The amount of muffling (lowpass) in the range [20.0, 20_480.0],
where 20_480.0 is no muffling and 20.0 is maximum muffling.
This can be used to give the effect of a sound being played behind a wall or underwater.
By default this is set to 20_480.0.
See https://www.desmos.com/calculator/jxp8t9ero4 for an interactive graph of how these parameters affect the final lowpass cuttoff frequency.
distance_attenuation: DistanceAttenuationThe parameters which describe how to attenuate a sound based on its distance from the listener.
smooth_seconds: f32The time in seconds of the internal smoothing filter.
By default this is set to 0.015 (15ms).
min_gain: f32If the resutling gain (in raw amplitude, not decibels) is less than or equal
to this value, the the gain will be clamped to 0 (silence).
By default this is set to “0.0001” (-80 dB).
coeff_update_factor: CoeffUpdateFactorAn exponent representing the rate at which DSP coefficients are updated when parameters are being smoothed.
Smaller values will produce less “stair-stepping” artifacts, but will also consume more CPU.
The resulting number of frames (samples in a single channel of audio)
that will elapse between each update is calculated as
2^coeff_update_factor.
By default this is set to 5.
Implementations§
Source§impl SpatialBasicNode
impl SpatialBasicNode
pub fn from_volume_offset(volume: Volume, offset: impl Into<Vec3>) -> Self
Sourcepub const fn set_volume_linear(&mut self, linear: f32)
pub const fn set_volume_linear(&mut self, linear: f32)
Set the given volume in a linear scale, where 0.0 is silence and
1.0 is unity gain.
These units are suitable for volume sliders (simply convert percent volume to linear volume by diving the percent volume by 100).
Sourcepub const fn set_volume_percent(&mut self, percent: f32)
pub const fn set_volume_percent(&mut self, percent: f32)
Set the given volume in percentage, where 0.0 is silence and
100.0 is unity gain.
These units are suitable for volume sliders.
Sourcepub const fn set_volume_decibels(&mut self, decibels: f32)
pub const fn set_volume_decibels(&mut self, decibels: f32)
Set the given volume in decibels, where 0.0 is unity gain and
f32::NEG_INFINITY is silence.
Trait Implementations§
Source§impl AudioNode for SpatialBasicNode
impl AudioNode for SpatialBasicNode
Source§type Configuration = EmptyConfig
type Configuration = EmptyConfig
Source§fn info(&self, _config: &Self::Configuration) -> AudioNodeInfo
fn info(&self, _config: &Self::Configuration) -> AudioNodeInfo
Source§fn construct_processor(
&self,
_config: &Self::Configuration,
cx: ConstructProcessorContext<'_>,
) -> impl AudioNodeProcessor
fn construct_processor( &self, _config: &Self::Configuration, cx: ConstructProcessorContext<'_>, ) -> impl AudioNodeProcessor
Source§fn update(&mut self, configuration: &Self::Configuration, cx: UpdateContext<'_>)
fn update(&mut self, configuration: &Self::Configuration, cx: UpdateContext<'_>)
AudioNodeInfo::call_update_method was set to true, then the Firewheel
context will call this method on every update cycle. Read moreSource§impl Clone for SpatialBasicNode
impl Clone for SpatialBasicNode
Source§fn clone(&self) -> SpatialBasicNode
fn clone(&self) -> SpatialBasicNode
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Component for SpatialBasicNode
impl Component for SpatialBasicNode
Source§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
Source§type Mutability = Mutable
type Mutability = Mutable
Component<Mutability = Mutable>,
while immutable components will instead have Component<Mutability = Immutable>. Read moreSource§fn register_required_components(
_requiree: ComponentId,
required_components: &mut RequiredComponentsRegistrator<'_, '_>,
)
fn register_required_components( _requiree: ComponentId, required_components: &mut RequiredComponentsRegistrator<'_, '_>, )
Source§fn clone_behavior() -> ComponentCloneBehavior
fn clone_behavior() -> ComponentCloneBehavior
Source§fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
EntityMapper. This is used to remap entities in contexts like scenes and entity cloning.
When deriving Component, this is populated by annotating fields containing entities with #[entities] Read moreSource§impl Debug for SpatialBasicNode
impl Debug for SpatialBasicNode
Source§impl Default for SpatialBasicNode
impl Default for SpatialBasicNode
Source§impl<'de> Deserialize<'de> for SpatialBasicNode
impl<'de> Deserialize<'de> for SpatialBasicNode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Diff for SpatialBasicNode
impl Diff for SpatialBasicNode
Source§fn diff<__E: EventQueue>(
&self,
baseline: &Self,
path: PathBuilder,
event_queue: &mut __E,
)
fn diff<__E: EventQueue>( &self, baseline: &Self, path: PathBuilder, event_queue: &mut __E, )
self to baseline and generate events to resolve any differences.Source§impl FromReflect for SpatialBasicNode
impl FromReflect for SpatialBasicNode
Source§fn from_reflect(reflect: &dyn PartialReflect) -> Option<Self>
fn from_reflect(reflect: &dyn PartialReflect) -> Option<Self>
Self from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self using,
constructing the value using from_reflect if that fails. Read moreSource§impl GetTypeRegistration for SpatialBasicNode
impl GetTypeRegistration for SpatialBasicNode
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl PartialEq for SpatialBasicNode
impl PartialEq for SpatialBasicNode
Source§impl PartialReflect for SpatialBasicNode
impl PartialReflect for SpatialBasicNode
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(&mut self, value: &dyn PartialReflect) -> Result<(), ApplyError>
fn try_apply(&mut self, value: &dyn PartialReflect) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<Self>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Self>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&dyn Reflect>
fn try_as_reflect(&self) -> Option<&dyn Reflect>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
Source§fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &dyn PartialReflect
fn as_partial_reflect(&self) -> &dyn PartialReflect
Source§fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
Source§fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
PartialReflect, combines reflect_clone and
take in a useful fashion, automatically constructing an appropriate
ReflectCloneError if the downcast fails. Read moreSource§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Patch for SpatialBasicNode
impl Patch for SpatialBasicNode
Source§type Patch = SpatialBasicNodePatch
type Patch = SpatialBasicNodePatch
Source§fn patch(data: &ParamData, path: &[u32]) -> Result<Self::Patch, PatchError>
fn patch(data: &ParamData, path: &[u32]) -> Result<Self::Patch, PatchError>
Source§fn patch_event(event: &NodeEventType) -> Option<Self::Patch>
fn patch_event(event: &NodeEventType) -> Option<Self::Patch>
Source§impl Reflect for SpatialBasicNode
impl Reflect for SpatialBasicNode
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any. Read moreSource§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
Source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
Source§impl Serialize for SpatialBasicNode
impl Serialize for SpatialBasicNode
Source§impl Struct for SpatialBasicNode
impl Struct for SpatialBasicNode
Source§fn field(&self, name: &str) -> Option<&dyn PartialReflect>
fn field(&self, name: &str) -> Option<&dyn PartialReflect>
name as a &dyn PartialReflect.Source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn PartialReflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn PartialReflect>
name as a
&mut dyn PartialReflect.Source§fn field_at(&self, index: usize) -> Option<&dyn PartialReflect>
fn field_at(&self, index: usize) -> Option<&dyn PartialReflect>
index as a
&dyn PartialReflect.Source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn PartialReflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn PartialReflect>
index
as a &mut dyn PartialReflect.Source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index.Source§fn iter_fields(&self) -> FieldIter<'_>
fn iter_fields(&self) -> FieldIter<'_>
Source§fn to_dynamic_struct(&self) -> DynamicStruct
fn to_dynamic_struct(&self) -> DynamicStruct
DynamicStruct from this struct.Source§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
None if TypeInfo is not available.Source§impl TypePath for SpatialBasicNode
impl TypePath for SpatialBasicNode
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl Typed for SpatialBasicNode
impl Typed for SpatialBasicNode
impl Copy for SpatialBasicNode
impl StructuralPartialEq for SpatialBasicNode
Auto Trait Implementations§
impl Freeze for SpatialBasicNode
impl RefUnwindSafe for SpatialBasicNode
impl Send for SpatialBasicNode
impl Sync for SpatialBasicNode
impl Unpin for SpatialBasicNode
impl UnwindSafe for SpatialBasicNode
Blanket Implementations§
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<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )
Source§fn get_component_ids(
components: &Components,
ids: &mut impl FnMut(Option<ComponentId>),
)
fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )
Source§impl<C> BundleFromComponents for Cwhere
C: Component,
impl<C> BundleFromComponents for Cwhere
C: Component,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
Source§unsafe fn get_components(
ptr: MovingPtr<'_, C>,
func: &mut impl FnMut(StorageType, OwningPtr<'_>),
) -> <C as DynamicBundle>::Effect
unsafe fn get_components( ptr: MovingPtr<'_, C>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect
Source§unsafe fn apply_effect(
_ptr: MovingPtr<'_, MaybeUninit<C>>,
_entity: &mut EntityWorldMut<'_>,
)
unsafe fn apply_effect( _ptr: MovingPtr<'_, MaybeUninit<C>>, _entity: &mut EntityWorldMut<'_>, )
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info.Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
Source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path. Read more