mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 04:06:45 +01:00
launch pt.7: allow enqueuing None phrase
This commit is contained in:
parent
106e09121a
commit
c20d49cd45
2 changed files with 8 additions and 5 deletions
|
|
@ -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("▎")
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue