WorldClock/PlayClock

This commit is contained in:
🪞👃🪞 2024-12-09 21:38:42 +01:00
parent f5128829d6
commit 26a9efaa86
19 changed files with 1216 additions and 3039 deletions

View file

@ -1,32 +1,21 @@
use crate::*;
mod jack_arranger; pub(crate) use app_arranger::*;
mod jack_sequencer; pub(crate) use app_sequencer::*;
mod jack_transport; pub(crate) use app_transport::*;
mod engine_focus; pub(crate) use engine_focus::*;
mod engine_input; pub(crate) use engine_input::*;
mod engine_style; pub(crate) use engine_style::*;
mod engine_output; pub(crate) use engine_output::*;
mod engine_focus; pub(crate) use engine_focus::*;
mod engine_input; pub(crate) use engine_input::*;
mod engine_style; pub(crate) use engine_style::*;
mod engine_output; pub(crate) use engine_output::*;
mod app_transport; pub(crate) use app_transport::*;
mod app_arranger; pub(crate) use app_arranger::*;
mod app_sequencer; pub(crate) use app_sequencer::*;
mod app_transport; pub(crate) use app_transport::*;
mod app_sequencer; pub(crate) use app_sequencer::*;
mod ctrl_sequencer; pub(crate) use ctrl_sequencer::*;
mod view_arranger; pub(crate) use view_arranger::*;
mod view_sequencer; pub(crate) use view_sequencer::*;
mod view_transport; pub(crate) use view_transport::*;
mod ctrl_arranger; pub(crate) use ctrl_arranger::*;
mod ctrl_sequencer; pub(crate) use ctrl_sequencer::*;
mod ctrl_transport; pub(crate) use ctrl_transport::*;
mod model_arranger; pub(crate) use model_arranger::*;
mod app_arranger; pub(crate) use app_arranger::*;
mod ctrl_arranger; pub(crate) use ctrl_arranger::*;
mod model_arranger; pub(crate) use model_arranger::*;
////////////////////////////////////////////////////////
mod model_clock; pub(crate) use model_clock::*;
mod view_status_bar; pub(crate) use view_status_bar::*;
mod model_file_browser; pub(crate) use model_file_browser::*;
@ -191,3 +180,100 @@ impl Tui {
buffer
}
}
struct Field(&'static str, String);
render!(|self: Field|{
Tui::to_east("", Tui::to_east(
Tui::bold(true, self.0),
Tui::bg(Color::Rgb(0, 0, 0), self.1.as_str()),
))
});
//pub struct TransportView {
//pub(crate) state: Option<TransportState>,
//pub(crate) selected: Option<TransportFocus>,
//pub(crate) focused: bool,
//pub(crate) bpm: f64,
//pub(crate) sync: f64,
//pub(crate) quant: f64,
//pub(crate) beat: String,
//pub(crate) msu: String,
//}
////)?;
////match *state {
////Some(TransportState::Rolling) => {
////add(&row!(
////"│",
////TuiStyle::fg("▶ PLAYING", Color::Rgb(0, 255, 0)),
////format!("│0 (0)"),
////format!("│00m00s000u"),
////format!("│00B 0b 00/00")
////))?;
////add(&row!("│Now ", row!(
////format!("│0 (0)"), //sample(chunk)
////format!("│00m00s000u"), //msu
////format!("│00B 0b 00/00"), //bbt
////)))?;
////},
////_ => {
////add(&row!("│", TuiStyle::fg("⏹ STOPPED", Color::Rgb(255, 128, 0))))?;
////add(&"")?;
////}
////}
////Ok(())
////}).fill_x().bg(Color::Rgb(40, 50, 30))
////});
//impl<'a, T: HasClock> From<&'a T> for TransportView where Option<TransportFocus>: From<&'a T> {
//fn from (state: &'a T) -> Self {
//let selected = state.into();
//Self {
//selected,
//focused: selected.is_some(),
//state: Some(state.clock().transport.query_state().unwrap()),
//bpm: state.clock().bpm().get(),
//sync: state.clock().sync.get(),
//quant: state.clock().quant.get(),
//beat: state.clock().playhead.format_beat(),
//msu: state.clock().playhead.usec.format_msu(),
//}
//}
//}
//row!(
////selected.wrap(TransportFocus::PlayPause, &play_pause.fixed_xy(10, 3)),
//row!(
//col!(
//Field("SR ", format!("192000")),
//Field("BUF ", format!("1024")),
//Field("LEN ", format!("21300")),
//Field("CPU ", format!("00.0%"))
//),
//col!(
//Field("PUL ", format!("000000000")),
//Field("PPQ ", format!("96")),
//Field("BBT ", format!("00B0b00p"))
//),
//col!(
//Field("SEC ", format!("000000.000")),
//Field("BPM ", format!("000.000")),
//Field("MSU ", format!("00m00s00u"))
//),
//),
//selected.wrap(TransportFocus::Bpm, &Outset::X(1u16, {
//row! {
//"BPM ",
//format!("{}.{:03}", *bpm as usize, (bpm * 1000.0) % 1000.0)
//}
//})),
//selected.wrap(TransportFocus::Sync, &Outset::X(1u16, row! {
//"SYNC ", pulses_to_name(*sync as usize)
//})),
//selected.wrap(TransportFocus::Quant, &Outset::X(1u16, row! {
//"QUANT ", pulses_to_name(*quant as usize)
//})),
//selected.wrap(TransportFocus::Clock, &{
//row!("B" , beat.as_str(), " T", msu.as_str()).outset_x(1)
//}).align_e().fill_x(),
//).fill_x().bg(Color::Rgb(40, 50, 30))