mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +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
|
// track controls
|
||||||
let footer = row!((track, w) in tracks.iter().zip(cols.iter().map(|col|col.0))=>{
|
let footer = row!((track, w) in tracks.iter().zip(cols.iter().map(|col|col.0))=>{
|
||||||
let player = &track.player;
|
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 = 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:>}")
|
format!("▎+{elapsed:>}")
|
||||||
} else {
|
} else {
|
||||||
String::from("▎")
|
String::from("▎")
|
||||||
|
|
|
||||||
|
|
@ -60,8 +60,8 @@ impl PhrasePlayer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// Return next phrase with starting point
|
/// Return next phrase with starting point
|
||||||
fn enqueued (&self) -> Option<(usize, Arc<RwLock<Phrase>>)> {
|
fn enqueued (&self) -> Option<(usize, Option<Arc<RwLock<Phrase>>>)> {
|
||||||
if let (true, Some((start_at, Some(ref phrase)))) = (self.is_rolling(), &self.next_phrase) {
|
if let (true, Some((start_at, phrase))) = (self.is_rolling(), &self.next_phrase) {
|
||||||
Some((start_at.sample().get() as usize, phrase.clone()))
|
Some((start_at.sample().get() as usize, phrase.clone()))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
|
@ -115,7 +115,7 @@ impl PhrasePlayer {
|
||||||
let skipped = sample0 - start;
|
let skipped = sample0 - start;
|
||||||
// Switch over to enqueued phrase
|
// Switch over to enqueued phrase
|
||||||
let started = Instant::from_sample(&self.clock.timebase(), start as f64);
|
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?)
|
// Unset enqueuement (TODO: where to implement looping?)
|
||||||
self.next_phrase = None
|
self.next_phrase = None
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue