diff --git a/config/config_arranger.edn b/config/config_arranger.edn new file mode 100644 index 00000000..8831cf77 --- /dev/null +++ b/config/config_arranger.edn @@ -0,0 +1,25 @@ +(name "Arranger") + +(info "A session grid.") + +(view + (bsp/a :modal + (bsp/s (fixed/y 1 :transport) + (bsp/n (fixed/y 1 :status) + (fill/xy (bsp/a + (fill/xy (align/e :pool)) + :arranger)))))) + +(keys + (layer-if :mode-pool-import "./keys_pool_file.edn") + (layer-if :mode-pool-export "./keys_pool_file.edn") + (layer-if :mode-pool-rename "./keys_clip_rename.edn") + (layer-if :mode-pool-length "./keys_clip_length.edn") + (layer "./keys_global.edn") + (layer-if :mode-editor "./keys_editor.edn") + (layer-if :mode-clip "./keys_clip.edn") + (layer-if :mode-track "./keys_track.edn") + (layer-if :mode-scene "./keys_scene.edn") + (layer-if :mode-mix "./keys_mix.edn") + (layer "./keys_clock.edn") + (layer "./keys_arranger.edn")) diff --git a/config/config_groovebox.edn b/config/config_groovebox.edn new file mode 100644 index 00000000..5d094df2 --- /dev/null +++ b/config/config_groovebox.edn @@ -0,0 +1,22 @@ +(name "Arranger") + +(info "A sequencer with built-in sampler.") + +(view + (bsp/a :modal + (bsp/s (fixed/y 1 :transport) + (bsp/n (fixed/y 1 :status) + (bsp/n (fixed/y 5 :sample-viewer) + (bsp/w (fixed/x :w-sidebar :pool) + (bsp/e :samples-keys + (fill/y :editor)))))))) + +(keys + (layer-if :mode-pool-import "./keys_pool_file.edn") + (layer-if :mode-pool-export "./keys_pool_file.edn") + (layer-if :mode-pool-rename "./keys_clip_rename.edn") + (layer-if :mode-pool-length "./keys_clip_length.edn") + (layer "./keys_global.edn") + (layer-if :mode-editor "./keys_editor.edn") + (layer "./keys_clock.edn") + (layer "./keys_arranger.edn")) diff --git a/config/config_sampler.edn b/config/config_sampler.edn new file mode 100644 index 00000000..4d8fd6cb --- /dev/null +++ b/config/config_sampler.edn @@ -0,0 +1,13 @@ +(name "Sampler") + +(info "A sampling soundboard.") + +(view + (bsp/a :modal + (bsp/s (fixed/y 1 :transport) + (bsp/n (fixed/y 1 :status) + (fill/xy :samples-grid))))) + +(keys + (layer "./keys_global.edn") + (layer "./keys_sampler.edn")) diff --git a/config/config_sequencer.edn b/config/config_sequencer.edn new file mode 100644 index 00000000..99f43230 --- /dev/null +++ b/config/config_sequencer.edn @@ -0,0 +1,21 @@ +(name "Sequencer") + +(info "A MIDI sequencer.") + +(view + (bsp/a :modal + (bsp/s (fixed/y 1 :transport) + (bsp/n (fixed/y 1 :status) + (fill/xy (bsp/a + (fill/xy (align/e :pool)) + :editor))))) + +(keys + (layer-if :mode-pool-import "./keys_pool_file.edn") + (layer-if :mode-pool-export "./keys_pool_file.edn") + (layer-if :mode-pool-rename "./keys_clip_rename.edn") + (layer-if :mode-pool-length "./keys_clip_length.edn") + (layer "./keys_global.edn") + (layer "./keys_editor.edn") + (layer "./keys_clock.edn") + (layer "./keys_arranger.edn")) diff --git a/config/config_transport.edn b/config/config_transport.edn new file mode 100644 index 00000000..00f28567 --- /dev/null +++ b/config/config_transport.edn @@ -0,0 +1,9 @@ +(name "Transport") + +(info "A JACK transport controller.") + +(view :transport) + +(keys + (layer "./keys_global.edn") + (layer "./keys_clock.edn")) diff --git a/config/view_arranger.edn b/config/view_arranger.edn deleted file mode 100644 index a1074d30..00000000 --- a/config/view_arranger.edn +++ /dev/null @@ -1,6 +0,0 @@ -(bsp/a :modal - (bsp/s (fixed/y 1 :transport) - (bsp/n (fixed/y 1 :status) - (fill/xy (bsp/a - (fill/xy (align/e :pool)) - :arranger))))) diff --git a/config/view_groovebox.edn b/config/view_groovebox.edn deleted file mode 100644 index d7c94a3b..00000000 --- a/config/view_groovebox.edn +++ /dev/null @@ -1,7 +0,0 @@ -(bsp/a :modal - (bsp/s (fixed/y 1 :transport) - (bsp/n (fixed/y 1 :status) - (bsp/n (fixed/y 5 :sample-viewer) - (bsp/w (fixed/x :w-sidebar :pool) - (bsp/e :samples-keys - (fill/y :editor))))))) diff --git a/config/view_sampler.edn b/config/view_sampler.edn deleted file mode 100644 index 6cad9cdc..00000000 --- a/config/view_sampler.edn +++ /dev/null @@ -1,4 +0,0 @@ -(bsp/a :modal - (bsp/s (fixed/y 1 :transport) - (bsp/n (fixed/y 1 :status) - (fill/xy :samples-grid)))) diff --git a/config/view_sequencer.edn b/config/view_sequencer.edn deleted file mode 100644 index d1ee923e..00000000 --- a/config/view_sequencer.edn +++ /dev/null @@ -1,6 +0,0 @@ -(bsp/a :modal - (bsp/s (fixed/y 1 :transport) - (bsp/n (fixed/y 1 :status) - (fill/xy (bsp/a - (fill/xy (align/e :pool)) - :editor))))) diff --git a/config/view_transport.edn b/config/view_transport.edn deleted file mode 100644 index c108e094..00000000 --- a/config/view_transport.edn +++ /dev/null @@ -1 +0,0 @@ -:transport diff --git a/crates/cli/tek.rs b/crates/cli/tek.rs index eafb60ca..6c56a357 100644 --- a/crates/cli/tek.rs +++ b/crates/cli/tek.rs @@ -139,91 +139,19 @@ impl Cli { }, scenes, selected: Selection::TrackClip { track: 0, scene: 0 }, - config: Configuration { - view: SourceIter(match mode { - LaunchMode::Clock => - include_str!("../../config/view_transport.edn"), - LaunchMode::Sequencer => - include_str!("../../config/view_sequencer.edn"), - LaunchMode::Groovebox => - include_str!("../../config/view_groovebox.edn"), - LaunchMode::Arranger { .. } => - include_str!("../../config/view_arranger.edn"), - LaunchMode::Sampler => - include_str!("../../config/view_sampler.edn"), - _ => todo!("{mode:?}"), - }), - keys: match mode { - LaunchMode::Sampler => InputMap::default() - .layer(SourceIter(include_str!("../../config/keys_global.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_sampler.edn")).into()), - LaunchMode::Clock => InputMap::default() - .layer(SourceIter(include_str!("../../config/keys_global.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_clock.edn")).into()), - LaunchMode::Sequencer => InputMap::default() - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Import(..))|Some(PoolMode::Export(..)) - ), SourceIter(include_str!("../../config/keys_pool_file.edn")).into()) - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Rename(..)) - ), SourceIter(include_str!("../../config/keys_clip_rename.edn")).into()) - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Length(..)) - ), SourceIter(include_str!("../../config/keys_clip_length.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_global.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_editor.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_clock.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_sequencer.edn")).into()), - LaunchMode::Groovebox => InputMap::default() - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Import(..))|Some(PoolMode::Export(..)) - ), SourceIter(include_str!("../../config/keys_pool_file.edn")).into()) - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Rename(..)) - ), SourceIter(include_str!("../../config/keys_clip_rename.edn")).into()) - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Length(..)) - ), SourceIter(include_str!("../../config/keys_clip_length.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_global.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_editor.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_clock.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_sequencer.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_groovebox.edn")).into()), - LaunchMode::Arranger {..} => InputMap::default() - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Import(..))|Some(PoolMode::Export(..)) - ), SourceIter(include_str!("../../config/keys_pool_file.edn")).into()) - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Rename(..)) - ), SourceIter(include_str!("../../config/keys_clip_rename.edn")).into()) - .layer_if(|state: &Tek|matches!( - state.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), - Some(PoolMode::Length(..)) - ), SourceIter(include_str!("../../config/keys_clip_length.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_global.edn")).into()) - .layer_if(|state: &Tek|state.is_editing(), - SourceIter(include_str!("../../config/keys_editor.edn")).into()) - .layer_if(|state: &Tek|state.selected.is_clip()&&!state.is_editing(), - SourceIter(include_str!("../../config/keys_clip.edn")).into()) - .layer_if(|state: &Tek|state.selected.is_track()&&!state.is_editing(), - SourceIter(include_str!("../../config/keys_track.edn")).into()) - .layer_if(|state: &Tek|state.selected.is_scene()&&!state.is_editing(), - SourceIter(include_str!("../../config/keys_scene.edn")).into()) - .layer_if(|state: &Tek|state.selected.is_mix()&&!state.is_editing(), - SourceIter(include_str!("../../config/keys_mix.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_clock.edn")).into()) - .layer(SourceIter(include_str!("../../config/keys_arranger.edn")).into()), - _ => todo!("{mode:?}"), - }, - }, + config: Configuration::from(match mode { + LaunchMode::Clock => + include_str!("../../config/view_transport.edn"), + LaunchMode::Sequencer => + include_str!("../../config/view_sequencer.edn"), + LaunchMode::Groovebox => + include_str!("../../config/view_groovebox.edn"), + LaunchMode::Arranger { .. } => + include_str!("../../config/view_arranger.edn"), + LaunchMode::Sampler => + include_str!("../../config/view_sampler.edn"), + _ => todo!("{mode:?}"), + }), ..Default::default() }; if let &LaunchMode::Arranger { scenes, tracks, track_width, .. } = mode {