From 7bc37e76596ebba792325ba178dc14bc23b27344 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sun, 11 May 2025 00:40:53 +0300 Subject: [PATCH] groovebox: add slots for output meters --- config/config_groovebox.edn | 17 +++++++++-------- crates/app/src/view.rs | 3 +++ crates/device/src/sampler/sampler_model.rs | 4 ++-- crates/device/src/sampler/sampler_view.rs | 6 ++++++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/config/config_groovebox.edn b/config/config_groovebox.edn index 05f22924..24154b74 100644 --- a/config/config_groovebox.edn +++ b/config/config_groovebox.edn @@ -3,14 +3,15 @@ (info "A sequencer with built-in sampler.") (view - (bsp/a :view-dialog - (bsp/s (fixed/y 1 :view-transport) - (bsp/n (fixed/y 1 :view-status) - (bsp/n (fixed/y 5 :view-sample-viewer) - (bsp/w (fixed/x :w-sidebar :view-pool) - (bsp/e :view-meters-input - (bsp/e :view-samples-keys - (fill/y :view-editor))))))))) + (bsp/a :view-dialog + (bsp/s (fixed/y 1 :view-transport) + (bsp/n (fixed/y 1 :view-status) + (bsp/w :view-meters-output + (bsp/e :view-meters-input + (bsp/n (fixed/y 5 :view-sample-viewer) + (bsp/w (fixed/x :w-sidebar :view-pool) + (bsp/e :view-samples-keys + (fill/y :view-editor)))))))))) (keys (layer-if :focus-pool-import "./keys_pool_file.edn") diff --git a/crates/app/src/view.rs b/crates/app/src/view.rs index e81cb73d..4a2c7859 100644 --- a/crates/app/src/view.rs +++ b/crates/app/src/view.rs @@ -59,6 +59,9 @@ impl App { pub fn view_meters_input (&self) -> impl Content + use<'_> { self.sampler().map(|s|s.view_meters_input()) } + pub fn view_meters_output (&self) -> impl Content + use<'_> { + self.sampler().map(|s|s.view_meters_output()) + } } impl App { diff --git a/crates/device/src/sampler/sampler_model.rs b/crates/device/src/sampler/sampler_model.rs index ad429a9d..d51d106a 100644 --- a/crates/device/src/sampler/sampler_model.rs +++ b/crates/device/src/sampler/sampler_model.rs @@ -52,8 +52,8 @@ impl Default for Sampler { Self { midi_in: None, audio_ins: vec![], - input_meters: vec![0.0;2], - output_meters: vec![0.0;2], + input_meters: vec![f32::MIN;2], + output_meters: vec![f32::MIN;2], audio_outs: vec![], name: "tek_sampler".to_string(), mapped: [const { None };128], diff --git a/crates/device/src/sampler/sampler_view.rs b/crates/device/src/sampler/sampler_view.rs index 8ceef605..c73b4908 100644 --- a/crates/device/src/sampler/sampler_view.rs +++ b/crates/device/src/sampler/sampler_view.rs @@ -108,6 +108,12 @@ impl Sampler { Fill::y(Meter(*value)) }))) } + + pub fn view_meters_output (&self) -> impl Content + use<'_> { + Tui::bg(Black, Fixed::x(2, Map::east(1, ||self.output_meters.iter(), |value, _index|{ + Fill::y(Meter(*value)) + }))) + } } fn draw_list_item (sample: &Option>>) -> String {