pub struct SessionSequencer {
pub child: String,
pub child_params: Vec<f32>,
pub discrete: Vec<SessionSelector>,
pub selected: u8,
pub live: u8,
pub lane: u8,
pub step: u8,
pub playing: bool,
pub switch_quant: u8,
pub chain: Vec<(u8, u8)>,
pub patterns: Vec<SessionPattern>,
}Expand description
A sequencer as a session stores it.
Sparse: only the steps that are on are written, so a track with four hits on it is four lines of JSON rather than two thousand. Steps past the pattern’s current length are stored too — shortening a pattern masks its tail rather than clearing it, and a session that dropped the masked steps would turn that into a truncation the next time it was opened.
Fields§
§child: StringThe child instrument, by the same key a track stores.
child_params: Vec<f32>The child’s panel, so a sequencer track restores the sound it had.
discrete: Vec<SessionSelector>The child’s selectors, by position. Same reasoning as
crate::session::SessionTrack::discrete.
selected: u8§live: u8§lane: u8Where the editor’s cursor was. Not needed to play anything, and kept because reopening a session on the step you were working on is the difference between resuming and starting again.
step: u8§playing: bool§switch_quant: u8§chain: Vec<(u8, u8)>(slot, repeats) per chain entry.
patterns: Vec<SessionPattern>Implementations§
Source§impl SessionSequencer
impl SessionSequencer
Sourcepub fn from_state(
state: &SequencerState,
child: InstrumentType,
child_params: &[f32],
) -> Self
pub fn from_state( state: &SequencerState, child: InstrumentType, child_params: &[f32], ) -> Self
Write a sequencer track out.
Sourcepub fn child_instrument(&self) -> InstrumentType
pub fn child_instrument(&self) -> InstrumentType
The child this session named, or the default when the name is one this build does not have — a track with no instrument at all is worse than a track with the wrong one, and the patterns are still right.
Sourcepub fn child_panel(&self, expected: usize) -> Option<Vec<f32>>
pub fn child_panel(&self, expected: usize) -> Option<Vec<f32>>
The child’s panel as it should be applied, with the stored selector positions resolved against today’s banks.
Returns None when the saved block is a different length from the
instrument’s, which means it is a different panel — the same rule
ordinary tracks follow, and for the same reason: copying it in slot by
slot would load every value into the wrong control.
Sourcepub fn to_state(&self) -> SequencerState
pub fn to_state(&self) -> SequencerState
Read a sequencer track back.
Trait Implementations§
Source§impl Clone for SessionSequencer
impl Clone for SessionSequencer
Source§fn clone(&self) -> SessionSequencer
fn clone(&self) -> SessionSequencer
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more