seconds timer

This commit is contained in:
🪞👃🪞 2024-07-01 21:37:09 +03:00
parent 4055662bbd
commit 91832e0072
2 changed files with 29 additions and 25 deletions

View file

@ -2,10 +2,14 @@ use crate::core::*;
use crate::layout::*;
pub fn draw_timer (buf: &mut Buffer, x: u16, y: u16, timebase: &Arc<Timebase>, frame: usize) {
let tick = (frame as f64 / timebase.frames_per_tick());
let (beats, ticks) = (tick / timebase.ppq(), tick % timebase.ppq());
let (bars, beats) = (beats / 4.0, beats % 4.0);
let timer = format!("{}.{}.{ticks:02}", bars as usize + 1, beats as usize + 1);
let ppq = timebase.ppq() as usize;
let pulse = timebase.frames_pulses(frame as f64) as usize;
let (beats, pulses) = (pulse / ppq, pulse % ppq);
let (bars, beats) = (beats / 4, beats % 4);
let usecs = timebase.frames_usecs(frame as f64) as usize;
let (seconds, msecs) = (usecs / 1000000, usecs / 1000 % 1000);
let (minutes, seconds) = (seconds / 60, seconds % 60);
let timer = format!("{minutes}:{seconds:02}:{msecs:03} {}.{}.{pulses:02}", bars as usize + 1, beats as usize + 1);
timer.blit(buf, x - timer.len() as u16, y, Some(Style::default().not_dim()));
}
pub fn draw_play_stop (buf: &mut Buffer, x: u16, y: u16, state: &TransportState) {