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: f32Fader 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
impl TrackState
Sourcepub const VOLUME_STEP_DB: f32 = 1.0
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.
Sourcepub const VOLUME_FLOOR_DB: f32 = -40.0
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.
pub fn new( name: &str, color_index: usize, armed: bool, kind: TrackKind, clips: Vec<Clip>, ) -> Self
Sourcepub fn sync_to_audio(&self)
pub fn sync_to_audio(&self)
Sync mute/solo/arm/volume to the audio thread handle (if wired up).
Sourcepub fn volume_db(&self) -> Option<f32>
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.
Sourcepub fn adjust_volume(&mut self, steps: i32) -> f32
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.
Trait Implementations§
Source§impl Clone for TrackState
impl Clone for TrackState
Source§fn clone(&self) -> TrackState
fn clone(&self) -> TrackState
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more