Skip to main content

TrackState

Struct TrackState 

Source
pub struct TrackState {
Show 13 fields pub name: String, pub muted: bool, pub soloed: bool, pub armed: bool, pub color_index: usize, pub kind: TrackKind, pub clips: Vec<Clip>, pub fx_chain: Vec<FxInstance>, pub volume: f32, pub mixer_id: Option<usize>, pub handle: Option<Arc<TrackHandle>>, pub instrument_type: Option<InstrumentType>, pub synth_params: Vec<f32>,
}

Fields§

§name: String§muted: bool§soloed: bool§armed: bool§color_index: usize§kind: TrackKind§clips: Vec<Clip>§fx_chain: Vec<FxInstance>

Track-level FX chain.

§volume: f32

Fader position as a linear gain, mirroring the audio thread’s TrackConfig::volume. Travel is TrackConfig::MIN_VOLUME..=TrackConfig::MAX_VOLUME; the audio thread’s copy is clamped to it by TrackConfig::set_volume, so this mirror is the only place an out-of-range value could survive.

§mixer_id: Option<usize>

Unique ID for this track (matches the mixer’s track ID).

§handle: Option<Arc<TrackHandle>>

Handle to the audio engine’s track state. When present, mute/solo/arm/volume writes go directly to the audio thread via atomics.

§instrument_type: Option<InstrumentType>

What type of instrument this track has.

§synth_params: Vec<f32>

Parameter values (mirrors the audio thread’s plugin params).

Implementations§

Source§

impl TrackState

Source

pub const VOLUME_STEP_DB: f32 = 1.0

One press of the fader, in dB.

The fader is stepped in dB rather than in linear gain so that every press moves the readout by exactly one. A linear step small enough to be useful near the top of the travel is a 6 dB jump near the bottom, and three consecutive linear detents around unity all round to the same displayed number — a control that does not appear to respond.

Source

pub const VOLUME_FLOOR_DB: f32 = -40.0

Bottom of the fader’s travel, below which it goes to silence.

−40 dB rather than the −60 a drawn fader usually bottoms out at: this one is stepped a keypress at a time, and 20 extra presses to reach a level that is inaudible anyway is travel nobody wants. Muting a track outright is m.

Source

pub fn new( name: &str, color_index: usize, armed: bool, kind: TrackKind, clips: Vec<Clip>, ) -> Self

Source

pub fn sync_to_audio(&self)

Sync mute/solo/arm/volume to the audio thread handle (if wired up).

Source

pub fn volume_db(&self) -> Option<f32>

The fader position in dB relative to unity. None at the bottom of the travel, where the answer is negative infinity.

Source

pub fn adjust_volume(&mut self, steps: i32) -> f32

Move the fader by steps presses and push the result to the audio thread. Returns the new linear gain.

The current position is rounded onto the dB grid before stepping, so the fader self-corrects: the default of 0.75 is −2.5 dB, off the grid, and the first press lands it on −2 or −3 and every press after that moves exactly one. A session saved with a hand-edited volume snaps the same way.

Source

pub fn vu_levels(&self) -> (f32, f32)

Read VU levels from the audio thread handle.

Source

pub fn is_live(&self) -> bool

Whether this track is wired to the audio engine.

Trait Implementations§

Source§

impl Clone for TrackState

Source§

fn clone(&self) -> TrackState

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 TrackState

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<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

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> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

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