Skip to main content

Transport

Struct Transport 

Source
pub struct Transport { /* private fields */ }
Expand description

A sample-accurate musical clock. All arithmetic before the single frame-boundary crossings is the exact rational/f64 segment walk shared with the compiler (ADR 0002), so the transport and the offline render can never disagree about where a beat lands.

Implementations§

Source§

impl Transport

Source

pub fn for_program(meta: &ProgramMeta) -> Self

A transport for a compiled program, stopped at frame 0.

Source

pub fn sample_rate(&self) -> u32

The clock’s sample rate.

Source

pub fn state(&self) -> TransportState

The current state.

Source

pub fn is_playing(&self) -> bool

Whether the transport is advancing.

Source

pub fn play(&mut self)

Start or resume advancing.

Source

pub fn pause(&mut self)

Hold position.

Source

pub fn stop(&mut self)

Stop and rewind to frame 0.

Source

pub fn frame_at_beat(&self, beat: f64) -> u64

The frame a beat lands on (rounds halves away from zero, ADR 0002).

Source

pub fn beat_at_frame(&self, frame: u64) -> f64

The beat at a frame (the inverse conversion).

Source

pub fn frame_at_bar(&self, bar: u32) -> u64

The frame a bar starts on (through the meter map and pickup).

Source

pub fn position_frames(&self) -> u64

The position in frames.

Source

pub fn position_beats(&self) -> f64

The position in beats.

Source

pub fn position_bars(&self) -> f64

The position in bars (bar index plus intra-bar fraction).

Source

pub fn length_frames(&self) -> u64

The program length in frames.

Source

pub fn seek_frame(&mut self, frame: u64)

Seek to a frame (clamped to the program length).

Source

pub fn seek_beat(&mut self, beat: f64)

Seek to a beat position.

Source

pub fn seek_bar(&mut self, bar: u32)

Seek to a bar (through the meter map and pickup).

Source

pub fn set_loop_frames(&mut self, start: u64, end: u64) -> bool

Loop a frame range [start, end). At end the playhead wraps to start; seeking outside the range is allowed (the loop engages when the playhead reaches end). Invalid ranges (empty, past the end) are rejected with false and leave the old range.

Source

pub fn set_loop_bars(&mut self, start_bar: u32, end_bar: u32) -> bool

Loop a bar range (through the meter map), or report an invalid range.

Source

pub fn clear_loop(&mut self)

Clear the loop range.

Source

pub fn loop_range(&self) -> Option<(u64, u64)>

The loop range in frames, if set.

Source

pub fn advance(&mut self, frames: u64) -> Advance

Advance the playhead by frames (no-op unless Playing). At the loop end the playhead wraps; at the program end with no loop it stops.

Trait Implementations§

Source§

impl Clone for Transport

Source§

fn clone(&self) -> Transport

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Transport

Source§

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

Formats the value using the given formatter. Read more

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> 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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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, 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more