group modules and scripts

This commit is contained in:
🪞👃🪞 2025-03-04 19:02:48 +02:00
parent 93a14a3040
commit 8794b2e05b
32 changed files with 34 additions and 26 deletions

View file

@ -1,82 +0,0 @@
This is the unified Tek Arranger.
Its appearance is defined by the following view definition:
{def :view (bsp/s (fixed/y 2 :toolbar)
(fill/x (align/c (bsp/w (fixed/x :pool-w :pool)
(bsp/n (fixed/y 3 :outputs)
(bsp/n (fixed/y 3 :inputs)
(bsp/n (fixed/y 3 :tracks) :scenes)))))))}
The arranger's behavior is controlled by the
following keymaps:
{def :keys
(@u undo 1)
(@shift-u redo 1)
(@space clock toggle)
(@shift-space clock toggle 0)
(@ctrl-a scene add)
(@ctrl-t track add)
(@tab edit :clip)
(@c color)}
{def :keys-mix
(@down select 0 1)
(@s select 0 1)
(@right select 1 0)
(@d select 1 0)}
{def :keys-track
(@left select :track-prev :scene)
(@a select :track-prev :scene)
(@right select :track-next :scene)
(@d select :track-next :scene)
(@down select :track :scene-next)
(@s select :track :scene-next)
(@q track launch)
(@c track color :track)
(@comma track swap-prev)
(@period track swap-next)
(@lt track size-dec)
(@gt track size-inc)
(@delete track delete)}
{def :keys-scene
(@up select :track :scene-prev)
(@w select :track :scene-prev)
(@down select :track :scene-next)
(@s select :track :scene-next)
(@right select :track-next :scene)
(@d select :track-next :scene)
(@q scene launch)
(@c scene color :scene)
(@comma scene swap-prev)
(@period scene swap-next)
(@lt scene size-dec)
(@gt scene size-inc)
(@delete scene delete)}
{def :keys-clip
(@up select :track :scene-prev)
(@w select :track :scene-prev)
(@down select :track :scene-next)
(@s select :track :scene-next)
(@left select :track-prev :scene)
(@a select :track-prev :scene)
(@right select :track-next :scene)
(@d select :track-next :scene)
(@q enqueue :clip)
(@c clip color :track :scene)
(@g clip get)
(@p clip put)
(@delete clip del)
(@comma clip prev)
(@period clip next)
(@lt clip swap-prev)
(@gt clip swap-next)
(@l clip loop-toggle)}

View file

@ -100,7 +100,7 @@ impl Tek {
midi_froms: &[PortConnect], midi_tos: &[PortConnect],
) -> Usually<Self> {
let tek = Self {
view: SourceIter(include_str!("./view_transport.edn")),
view: SourceIter(include_str!("../edn/view_transport.edn")),
jack: jack.clone(),
color: ItemPalette::random(),
clock: Clock::new(jack, bpm)?,
@ -147,7 +147,7 @@ impl Tek {
let clip = Arc::new(RwLock::new(clip));
let this = Self::new_clock(jack, bpm, sync_lead, sync_follow, midi_froms, midi_tos)?;
Ok(Self {
view: SourceIter(include_str!("./view_sequencer.edn")),
view: SourceIter(include_str!("../edn/view_sequencer.edn")),
pool: Some((&clip).into()),
editor: Some((&clip).into()),
editing: false.into(),
@ -164,7 +164,7 @@ impl Tek {
audio_froms: &[&[PortConnect];2], audio_tos: &[&[PortConnect];2],
) -> Usually<Self> {
let tek = Self {
view: SourceIter(include_str!("./view_groovebox.edn")),
view: SourceIter(include_str!("../edn/view_groovebox.edn")),
tracks: vec![Track {
devices: vec![Sampler::new(jack, &"sampler", midi_froms, audio_froms, audio_tos)?.boxed()],
..Track::default()
@ -184,7 +184,7 @@ impl Tek {
scenes: usize, tracks: usize, track_width: usize,
) -> Usually<Self> {
let mut tek = Self {
view: SourceIter(include_str!("./view_arranger.edn")),
view: SourceIter(include_str!("../edn/view_arranger.edn")),
pool: Some(Default::default()),
editor: Some(Default::default()),
editing: false.into(),

View file

@ -1,21 +0,0 @@
(@u undo 1)
(@shift-u redo 1)
(@space clock toggle)
(@shift-space clock toggle 0)
(@t select :track 0)
(@tab edit :clip)
(@c color)
(@q launch)
(@shift-I input add)
(@shift-O output add)
(@shift-S scene add)
(@shift-T track add)
(@up select :scene-prev)
(@w select :scene-prev)
(@down select :scene-next)
(@s select :scene-next)
(@left select :track-prev)
(@a select :track-prev)
(@right select :track-next)
(@d select :track-next)

View file

@ -1,9 +1,14 @@
use crate::*;
pub const KEYS_APP: &str = include_str!("keys.edn");
pub const KEYS_CLIP: &str = include_str!("keys_clip.edn");
pub const KEYS_TRACK: &str = include_str!("keys_track.edn");
pub const KEYS_SCENE: &str = include_str!("keys_scene.edn");
pub const KEYS_MIX: &str = include_str!("keys_mix.edn");
mod keys_clip; pub use self::keys_clip::*;
mod keys_ins; pub use self::keys_ins::*;
mod keys_outs; pub use self::keys_outs::*;
mod keys_scene; pub use self::keys_scene::*;
mod keys_track; pub use self::keys_track::*;
pub const KEYS_APP: &str = include_str!("../edn/keys.edn");
pub const KEYS_CLIP: &str = include_str!("../edn/keys_clip.edn");
pub const KEYS_TRACK: &str = include_str!("../edn/keys_track.edn");
pub const KEYS_SCENE: &str = include_str!("../edn/keys_scene.edn");
pub const KEYS_MIX: &str = include_str!("../edn/keys_mix.edn");
handle!(TuiIn: |self: Tek, input|Ok({
// If editing, editor keys take priority
if self.is_editing() {

View file

@ -1,8 +0,0 @@
(@g clip get)
(@p clip put)
(@delete clip del)
(@comma clip prev)
(@period clip next)
(@lt clip swap-prev)
(@gt clip swap-next)
(@l clip loop-toggle)

View file

View file

@ -1,7 +0,0 @@
(@q scene launch :scene)
(@c scene color :scene)
(@comma scene prev)
(@period scene next)
(@lt scene swap-prev)
(@gt scene swap-next)
(@delete scene delete)

View file

@ -1,12 +0,0 @@
(@q track launch :track)
(@c track color :track)
(@comma track prev)
(@period track next)
(@lt track swap-prev)
(@gt track swap-next)
(@delete track delete)
(@r track rec)
(@m track mon)
(@p track play)
(@P track solo)

View file

@ -10,23 +10,8 @@ mod cli; pub use self::cli::*;
mod audio; pub use self::audio::*;
mod device; pub use self::device::*;
mod keys; pub use self::keys::*;
mod keys_clip; pub use self::keys_clip::*;
mod keys_ins; pub use self::keys_ins::*;
mod keys_outs; pub use self::keys_outs::*;
mod keys_scene; pub use self::keys_scene::*;
mod keys_track; pub use self::keys_track::*;
mod model; pub use self::model::*;
mod model_track; pub use self::model_track::*;
mod model_scene; pub use self::model_scene::*;
mod model_select; pub use self::model_select::*;
mod view; pub use self::view::*;
mod view_arranger; pub use self::view_arranger::*;
mod view_clock; pub use self::view_clock::*;
mod view_color; pub use self::view_color::*;
mod view_iter; pub use self::view_iter::*;
mod view_memo; pub use self::view_memo::*;
mod view_meter; pub use self::view_meter::*;
mod view_sizes; pub use self::view_sizes::*;
/// Standard result type.
pub type Usually<T> = std::result::Result<T, Box<dyn std::error::Error>>;
/// Standard optional result type.

View file

@ -1,4 +1,7 @@
use crate::*;
mod model_track; pub use self::model_track::*;
mod model_scene; pub use self::model_scene::*;
mod model_select; pub use self::model_select::*;
#[derive(Default, Debug)] pub struct Tek {
/// Must not be dropped for the duration of the process
pub jack: Jack,

View file

@ -1,4 +1,11 @@
use crate::*;
mod view_arranger; pub use self::view_arranger::*;
mod view_clock; pub use self::view_clock::*;
mod view_color; pub use self::view_color::*;
mod view_iter; pub use self::view_iter::*;
mod view_memo; pub use self::view_memo::*;
mod view_meter; pub use self::view_meter::*;
mod view_sizes; pub use self::view_sizes::*;
pub(crate) use std::fmt::Write;
pub(crate) use ::tek_tui::ratatui::prelude::Position;
pub(crate) trait ScenesColors<'a> = Iterator<Item=SceneWithColor<'a>>;

View file

@ -1 +0,0 @@
(bsp/n (fixed/y 2 :transport) (bsp/s (fixed/y 2 :status) (fill/xy (bsp/a (fill/xy (align/e :pool)) :arranger))))

View file

@ -1,6 +0,0 @@
(bsp/s (fixed/y 2 :toolbar)
(bsp/s :sample (bsp/n
(fixed/y 2 :status)
(bsp/w
(fixed/x :pool-w :pool)
(bsp/e :sampler :editor)))))

View file

@ -1,4 +0,0 @@
(bsp/s (fixed/y 2 :toolbar)
(bsp/n (fixed/y 2 :status) (bsp/w
(fixed/x :pool-w :pool)
:editor)))