launch pt.7: allow enqueuing None phrase

This commit is contained in:
🪞👃🪞 2024-11-01 22:28:56 +02:00
parent 106e09121a
commit c20d49cd45
2 changed files with 8 additions and 5 deletions

View file

@ -187,9 +187,12 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
// track controls
let footer = row!((track, w) in tracks.iter().zip(cols.iter().map(|col|col.0))=>{
let player = &track.player;
let elapsed = if let Some((_, Some(_))) = player.phrase.as_ref() {
let elapsed = if let Some((_, Some(phrase))) = player.phrase.as_ref() {
let length = phrase.read().unwrap().length;
let elapsed = player.pulses_since_start().unwrap();
let elapsed = clock.timebase().format_beats_1_short(elapsed);
let elapsed = clock.timebase().format_beats_1_short(
(elapsed as usize % length) as f64
);
format!("▎+{elapsed:>}")
} else {
String::from("")

View file

@ -60,8 +60,8 @@ impl PhrasePlayer {
}
}
/// Return next phrase with starting point
fn enqueued (&self) -> Option<(usize, Arc<RwLock<Phrase>>)> {
if let (true, Some((start_at, Some(ref phrase)))) = (self.is_rolling(), &self.next_phrase) {
fn enqueued (&self) -> Option<(usize, Option<Arc<RwLock<Phrase>>>)> {
if let (true, Some((start_at, phrase))) = (self.is_rolling(), &self.next_phrase) {
Some((start_at.sample().get() as usize, phrase.clone()))
} else {
None
@ -115,7 +115,7 @@ impl PhrasePlayer {
let skipped = sample0 - start;
// Switch over to enqueued phrase
let started = Instant::from_sample(&self.clock.timebase(), start as f64);
self.phrase = Some((started, Some(phrase)));
self.phrase = Some((started, phrase));
// Unset enqueuement (TODO: where to implement looping?)
self.next_phrase = None
}