Skip to main content

ClockTick

Struct ClockTick 

Source
pub struct ClockTick {
    pub sample_pos: u64,
    pub samples_since_last: u32,
    pub is_new_block: bool,
    pub sample_rate: f32,
    pub tempo: Option<f32>,
}
Expand description

A tick of the audio clock

Sent to nodes on every signal block to provide timing information and synchronize processing. This is the fundamental timing primitive in Rill.

§Fields

  • sample_pos - Absolute sample position since start
  • samples_since_last - Number of samples since the last tick
  • is_new_block - Whether this is the start of a new block
  • sample_rate - Current sample rate in Hz
  • tempo - Current tempo in BPM (if available)

§Example

use rill_core::time::ClockTick;

let tick = ClockTick::new(44100, 64, 44100.0);
assert_eq!(tick.absolute_seconds(), 1.0);
assert_eq!(tick.delta_seconds(), 64.0 / 44100.0);

Fields§

§sample_pos: u64

Absolute sample position since start

§samples_since_last: u32

Number of samples since the last tick

§is_new_block: bool

Whether this is the start of a new block

§sample_rate: f32

Current sample rate in Hz

§tempo: Option<f32>

Current tempo in BPM (if available)

Implementations§

Source§

impl ClockTick

Source

pub const fn new( sample_pos: u64, samples_since_last: u32, sample_rate: f32, ) -> ClockTick

Create a new clock tick

§Arguments
  • sample_pos - Absolute sample position
  • samples_since_last - Samples since last tick
  • sample_rate - Sample rate in Hz
§Returns

A new ClockTick with is_new_block = true and tempo = None

Source

pub const fn with_tempo( sample_pos: u64, samples_since_last: u32, sample_rate: f32, tempo: f32, ) -> ClockTick

Create a new clock tick with tempo information

§Arguments
  • sample_pos - Absolute sample position
  • samples_since_last - Samples since last tick
  • sample_rate - Sample rate in Hz
  • tempo - Tempo in BPM
Source

pub fn delta_seconds(&self) -> f32

Get the time since the last tick in seconds

§Returns

Time in seconds since the previous tick

Source

pub fn absolute_seconds(&self) -> f64

Get the absolute time in seconds since start

§Returns

Absolute time in seconds

Source

pub fn beat_position(&self) -> Option<f64>

Get the current beat position (if tempo is available)

§Returns
  • Some(beat) - Current beat position (fractional)
  • None - No tempo information available
Source

pub fn musical_position(&self) -> Option<(u32, u8, u8)>

Get the current bar-beat-sixteenth position (if tempo is available)

§Returns
  • Some((bar, beat, sixteenth)) - Musical position
  • None - No tempo information available
Source

pub fn advance(&mut self, samples: u32)

Advance to the next tick

§Arguments
  • samples - Number of samples to advance
Source

pub fn is_new_bar(&self) -> bool

Check if this tick is at the start of a new bar

§Returns

true if this is the first beat of a bar

Source

pub fn is_new_beat(&self) -> bool

Check if this tick is at the start of a new beat

§Returns

true if this is the start of a beat

Trait Implementations§

Source§

impl Clone for ClockTick

Source§

fn clone(&self) -> ClockTick

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ClockTick

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for ClockTick

Source§

fn default() -> ClockTick

Returns the “default value” for a type. Read more
Source§

impl Display for ClockTick

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ClockTick

Source§

fn eq(&self, other: &ClockTick) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ClockTick

Source§

impl StructuralPartialEq for ClockTick

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsAny for T
where T: 'static,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert to &dyn std::any::Any
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert to &mut dyn std::any::Any
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.