Struct oddio::SpatialSceneControl
source · pub struct SpatialSceneControl { /* private fields */ }
Expand description
Control for modifying a SpatialScene
Implementations§
source§impl SpatialSceneControl
impl SpatialSceneControl
sourcepub fn play<S>(&mut self, signal: S, options: SpatialOptions) -> Spatial
pub fn play<S>(&mut self, signal: S, options: SpatialOptions) -> Spatial
Begin playing signal
Note that signal
must be single-channel. Signals in a spatial scene are modeled as
isotropic point sources, and cannot sensibly emit multichannel audio.
Coordinates should be in world space, translated such that the listener is at the origin, but not rotated, with velocity relative to the listener. Units are meters and meters per second.
Returns a handle that can be used to adjust the signal’s movement in the future, pause or stop it, and access other controls.
The type of signal given determines what additional controls can be used. See the examples for a detailed guide.
sourcepub fn play_buffered<S>(
&mut self,
signal: S,
options: SpatialOptions,
max_distance: f32,
rate: u32,
buffer_duration: f32
) -> Spatial
pub fn play_buffered<S>( &mut self, signal: S, options: SpatialOptions, max_distance: f32, rate: u32, buffer_duration: f32 ) -> Spatial
Like play
, but supports propagation delay for sources which do not implement Seek
by
buffering.
max_distance
dictates the amount of propagation delay to allocate a buffer for; larger
values consume more memory. To avoid glitching, the signal should be inaudible at
max_distance
. signal
is sampled at rate
before resampling based on motion.
Sampling the scene for more than buffer_duration
seconds at once may produce audible
glitches when the signal exceeds max_distance
from the listener. If in doubt, 0.1 is a
reasonable guess.
sourcepub fn set_listener_rotation(&mut self, rotation: Quaternion<f32>)
pub fn set_listener_rotation(&mut self, rotation: Quaternion<f32>)
Set the listener’s rotation
An unrotated listener faces -Z, with +X to the right and +Y up.