pub struct AudioClock {
pub samples: InstantSamples,
pub seconds: InstantSeconds,
pub musical: Option<InstantMusical>,
pub transport_is_playing: bool,
pub update_instant: Option<Instant>,
}Expand description
The time of the internal audio clock.
Note, due to the nature of audio processing, this clock is is NOT synced with
the system’s time (Instant::now). (Instead it is based on the amount of data
that has been processed.) For applications where the timing of audio events is
critical (i.e. a rythm game), sync the game to this audio clock instead of the
OS’s clock (Instant::now()).
Fields§
§samples: InstantSamplesThe timestamp from the audio stream, equal to the number of frames (samples in a single channel of audio) of data that have been processed since the Firewheel context was first started.
Note, generally this value will always count up, but there may be a few edge cases that cause this value to be less than the previous call, such as when the sample rate of the stream has been changed.
Note, this value is NOT synced to the system’s time (Instant::now), and
does NOT account for any output underflows (underruns) that may have
occured. For applications where the timing of audio events is critical (i.e.
a rythm game), sync the game to this audio clock.
seconds: InstantSecondsThe timestamp from the audio stream, equal to the number of seconds of data that have been processed since the Firewheel context was first started.
Note, this value is NOT synced to the system’s time (Instant::now), and
does NOT account for any output underflows (underruns) that may have
occured. For applications where the timing of audio events is critical (i.e.
a rythm game), sync the game to this audio clock.
musical: Option<InstantMusical>The current time of the playhead of the musical transport.
If no musical transport is present, then this will be None.
Note, this value is NOT synced to the system’s time (Instant::now), and
does NOT account for any output underflows (underruns) that may have
occured. For applications where the timing of audio events is critical (i.e.
a rythm game), sync the game to this audio clock.
transport_is_playing: boolThis is true if a musical transport is present and it is not paused,
false otherwise.
update_instant: Option<Instant>The instant the audio clock was last updated.
If the audio thread is not currently running, then this will be None.
Note, if this was returned via FirewheelCtx::audio_clock_corrected(), then
samples, seconds, and musical have already taken this delay into
account.
Trait Implementations§
Source§impl Clone for AudioClock
impl Clone for AudioClock
Source§fn clone(&self) -> AudioClock
fn clone(&self) -> AudioClock
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AudioClock
impl Debug for AudioClock
Source§impl PartialEq for AudioClock
impl PartialEq for AudioClock
impl Copy for AudioClock
impl StructuralPartialEq for AudioClock
Auto Trait Implementations§
impl Freeze for AudioClock
impl RefUnwindSafe for AudioClock
impl Send for AudioClock
impl Sync for AudioClock
impl Unpin for AudioClock
impl UnwindSafe for AudioClock
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<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.