mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
format beats from 0 or 1
This commit is contained in:
parent
b8047ab1ef
commit
10c5dcca9d
2 changed files with 20 additions and 7 deletions
|
|
@ -122,7 +122,7 @@ impl Instant {
|
|||
self.sample.set(self.timebase.pulses_to_sample(pulse));
|
||||
}
|
||||
pub fn format_beat (&self) -> String {
|
||||
self.format_beats(self.pulse().get())
|
||||
self.format_beats_1(self.pulse().get())
|
||||
}
|
||||
}
|
||||
/// Iterator that emits subsequent ticks within a range.
|
||||
|
|
@ -223,13 +223,22 @@ pub trait MIDITime {
|
|||
) -> Vec<(f64, f64)> {
|
||||
events.map(|(time, event)|(self.quantize(step, time).0, event)).collect()
|
||||
}
|
||||
/// Format a number of pulses into Beat.Bar.Pulse
|
||||
#[inline] fn format_beats (&self, pulse: f64) -> String {
|
||||
/// Format a number of pulses into Beat.Bar.Pulse starting from 0
|
||||
#[inline] fn format_beats_0 (&self, pulse: f64) -> String {
|
||||
let pulse = pulse as usize;
|
||||
let ppq = self.ppq().get() as usize;
|
||||
let (beats, pulses) = if ppq > 0 { (pulse / ppq, pulse % ppq) } else { (0, 0) };
|
||||
let bars = ((beats / 4) + 1) as usize;
|
||||
let beats = ((beats % 4) + 1) as usize;
|
||||
let bars = beats / 4;
|
||||
let beats = beats % 4;
|
||||
format!("{bars}.{beats}.{pulses:02}")
|
||||
}
|
||||
/// Format a number of pulses into Beat.Bar.Pulse starting from 1
|
||||
#[inline] fn format_beats_1 (&self, pulse: f64) -> String {
|
||||
let pulse = pulse as usize;
|
||||
let ppq = self.ppq().get() as usize;
|
||||
let (beats, pulses) = if ppq > 0 { (pulse / ppq, pulse % ppq) } else { (0, 0) };
|
||||
let bars = beats / 4 + 1;
|
||||
let beats = beats % 4 + 1;
|
||||
format!("{bars}.{beats}.{pulses:02}")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -198,8 +198,12 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
|||
.map(|(t, _)|{
|
||||
let target = t.pulse().get();
|
||||
let current = clock.instant.pulse().get();
|
||||
let remaining = clock.timebase().format_beats(target - current);
|
||||
format!("▎{remaining:>}")
|
||||
if target > current {
|
||||
let remaining = clock.timebase().format_beats_0(target - current);
|
||||
format!("▎-{remaining:>}")
|
||||
} else {
|
||||
String::new()
|
||||
}
|
||||
})
|
||||
.unwrap_or(String::from("▎"));
|
||||
let output_name = track.player.midi_outputs.get(0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue