mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-10 21:56:42 +01:00
display/play/stop transport
This commit is contained in:
parent
265dc13248
commit
1f928fba9d
8 changed files with 251 additions and 177 deletions
|
|
@ -1,6 +1,6 @@
|
|||
use crate::prelude::*;
|
||||
use super::*;
|
||||
|
||||
pub fn handle (state: &mut Transport, event: &Event) -> Result<(), Box<dyn Error>> {
|
||||
pub fn handle (state: &mut super::Transport, event: &Event) -> Result<(), Box<dyn Error>> {
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,31 +7,58 @@ pub fn render (
|
|||
mut offset: (u16, u16)
|
||||
) -> Result<(), Box<dyn Error>> {
|
||||
let move_to = |col, row| MoveTo(offset.0 + col, offset.1 + row);
|
||||
let position = state.transport.query();
|
||||
stdout.queue(move_to( 1, 0))?.queue(
|
||||
Print("Project: ")
|
||||
)?.queue(move_to(10, 0))?.queue(
|
||||
PrintStyledContent("The Quick Brown Fox - Jumping Over Lazy Dogs".white().bold())
|
||||
)?.queue(move_to( 1, 1))?.queue(
|
||||
Print("Rate: ")
|
||||
)?.queue(move_to( 7, 1))?.queue(
|
||||
PrintStyledContent("48000Hz".white().bold())
|
||||
)?.queue(move_to(20, 1))?.queue(
|
||||
Print("BPM: ")
|
||||
)?.queue(move_to(25, 1))?.queue(
|
||||
PrintStyledContent("120.34".white().bold())
|
||||
)?.queue(move_to(35, 1))?.queue(
|
||||
Print("Signature: ")
|
||||
)?.queue(move_to(46, 1))?.queue(
|
||||
PrintStyledContent("4 / 4".white().bold())
|
||||
)?.queue(move_to( 1, 2))?.queue(
|
||||
Print("Time: ")
|
||||
)?.queue(move_to( 7, 2))?.queue(
|
||||
PrintStyledContent("1m 23.456s".white().bold())
|
||||
)?.queue(move_to(20, 2))?.queue(
|
||||
Print("Beat: ")
|
||||
)?.queue(move_to(26, 2))?.queue(
|
||||
PrintStyledContent("30x 3/4".white().bold())
|
||||
PrintStyledContent(state.title.clone().white().bold())
|
||||
)?;
|
||||
|
||||
if let Ok(position) = state.transport.query() {
|
||||
let frame = position.pos.frame();
|
||||
let rate = position.pos.frame_rate();
|
||||
let bbt = position.pos.bbt();
|
||||
stdout
|
||||
.queue(move_to( 1, 1))?.queue(Print("Frame: "))?
|
||||
.queue(move_to( 1, 2))?.queue(
|
||||
PrintStyledContent(
|
||||
format!("{frame}").white().bold(),
|
||||
))?
|
||||
.queue(move_to(11, 1))?.queue(Print("Rate: "))?
|
||||
.queue(move_to(11, 2))?.queue(
|
||||
PrintStyledContent(match rate {
|
||||
Some(rate) => format!("{rate}Hz"),
|
||||
None => String::from("(none)"),
|
||||
}.white().bold())
|
||||
)?
|
||||
.queue(move_to(20, 1))?.queue(Print("Time: "))?
|
||||
.queue(move_to(20, 2))?.queue(
|
||||
PrintStyledContent(match rate {
|
||||
Some(rate) => format!("{:.03}", frame as f64 / rate as f64),
|
||||
None => String::from("(none)")
|
||||
}.white().bold())
|
||||
)?
|
||||
.queue(move_to(30, 1))?.queue(Print("BPM: "))?
|
||||
.queue(move_to(30, 2))?.queue(
|
||||
PrintStyledContent(match bbt {
|
||||
Some(bbt) => format!("{:.01}", bbt.bpm),
|
||||
None => String::from("(none)")
|
||||
}.white().bold())
|
||||
)?
|
||||
.queue(move_to(39, 1))?.queue(Print("Timesig: "))?
|
||||
.queue(move_to(39, 2))?.queue(
|
||||
PrintStyledContent(match bbt {
|
||||
Some(bbt) => format!("{}/{}", bbt.sig_num, bbt.sig_denom),
|
||||
None => String::from("(none)")
|
||||
}.white().bold())
|
||||
)?
|
||||
.queue(move_to(50, 1))?.queue(Print("Beat: "))?
|
||||
.queue(move_to(50, 2))?.queue(
|
||||
PrintStyledContent(match bbt {
|
||||
Some(bbt) => format!("{}.{}.{}", bbt.bar, bbt.beat, bbt.tick),
|
||||
None => String::from("(none)")
|
||||
}.white().bold())
|
||||
)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue