wip: layered keymaps
Some checks failed
/ build (push) Has been cancelled

This commit is contained in:
🪞👃🪞 2025-04-28 23:43:12 +03:00
parent 5696cbbebb
commit 2fd7d7b39f
18 changed files with 355 additions and 360 deletions

View file

@ -106,13 +106,49 @@ impl Cli {
color: ItemTheme::random(),
clock: Clock::new(jack, self.bpm)?,
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"),
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")))
.layer(SourceIter(include_str!("../../config/keys_sampler.edn"))),
LaunchMode::Clock => InputMap::default()
.layer(SourceIter(include_str!("../../config/keys_global.edn")))
.layer(SourceIter(include_str!("../../config/keys_clock.edn"))),
LaunchMode::Sequencer => InputMap::default()
.layer(SourceIter(include_str!("../../config/keys_global.edn")))
.layer(SourceIter(include_str!("../../config/keys_editor.edn")))
.layer(SourceIter(include_str!("../../config/keys_clock.edn")))
.layer(SourceIter(include_str!("../../config/keys_sequencer.edn"))),
LaunchMode::Groovebox => InputMap::default()
.layer(SourceIter(include_str!("../../config/keys_global.edn")))
.layer(SourceIter(include_str!("../../config/keys_editor.edn")))
.layer(SourceIter(include_str!("../../config/keys_clock.edn")))
.layer(SourceIter(include_str!("../../config/keys_sequencer.edn")))
.layer(SourceIter(include_str!("../../config/keys_groovebox.edn"))),
LaunchMode::Arranger {..} => InputMap::default()
.layer(SourceIter(include_str!("../../config/keys_global.edn")))
.layer_if(
|state: &Tek|state.is_editing(),
SourceIter(include_str!("../../config/keys_editor.edn")))
.layer(SourceIter(include_str!("../../config/keys_clock.edn")))
.layer(SourceIter(include_str!("../../config/keys_arranger.edn")))
.layer(SourceIter(include_str!("../../config/keys_clip.edn")))
.layer(SourceIter(include_str!("../../config/keys_track.edn")))
.layer(SourceIter(include_str!("../../config/keys_scene.edn")))
.layer(SourceIter(include_str!("../../config/keys_mix.edn"))),
_ => todo!("{mode:?}"),
},
pool: match mode {
LaunchMode::Sequencer | LaunchMode::Groovebox => clip.as_ref().map(Into::into),
LaunchMode::Arranger { .. } => Some(Default::default()),
@ -126,16 +162,13 @@ impl Cli {
midi_ins,
midi_outs,
midi_buf: match mode {
LaunchMode::Clock | LaunchMode::Sampler => vec![],
LaunchMode::Sequencer | LaunchMode::Groovebox | LaunchMode::Arranger {..} => vec![vec![];65536],
LaunchMode::Clock
| LaunchMode::Sampler => vec![],
LaunchMode::Sequencer
| LaunchMode::Groovebox
| LaunchMode::Arranger {..} => vec![vec![];65536],
_ => todo!("{mode:?}"),
},
handler: Some(match mode {
LaunchMode::Sequencer => handle_sequencer,
LaunchMode::Groovebox => handle_groovebox,
LaunchMode::Sampler => handle_sampler,
_ => handle_arranger,
}),
tracks: match mode {
LaunchMode::Sequencer => vec![
Track::new_sequencer()