mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-08 12:46:42 +01:00
update initial track width
This commit is contained in:
parent
bbe49ad463
commit
b306059dbc
8 changed files with 25 additions and 18 deletions
|
|
@ -48,7 +48,7 @@ pub struct TekCli {
|
||||||
/// Number of tracks
|
/// Number of tracks
|
||||||
#[arg(short = 'x', long, default_value_t = 1)] tracks: usize,
|
#[arg(short = 'x', long, default_value_t = 1)] tracks: usize,
|
||||||
/// Width of tracks
|
/// Width of tracks
|
||||||
#[arg(short = 'w', long, default_value_t = 9)] track_width: usize,
|
#[arg(short = 'w', long, default_value_t = 12)] track_width: usize,
|
||||||
},
|
},
|
||||||
/// TODO: A MIDI-controlled audio mixer
|
/// TODO: A MIDI-controlled audio mixer
|
||||||
Mixer,
|
Mixer,
|
||||||
|
|
@ -111,6 +111,8 @@ impl Tek {
|
||||||
keys_track: SourceIter(KEYS_TRACK),
|
keys_track: SourceIter(KEYS_TRACK),
|
||||||
keys_scene: SourceIter(KEYS_SCENE),
|
keys_scene: SourceIter(KEYS_SCENE),
|
||||||
keys_mix: SourceIter(KEYS_MIX),
|
keys_mix: SourceIter(KEYS_MIX),
|
||||||
|
tracks: vec![],
|
||||||
|
scenes: vec![],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
jack.sync_lead(sync_lead, |mut state|{
|
jack.sync_lead(sync_lead, |mut state|{
|
||||||
|
|
@ -173,10 +175,12 @@ impl Tek {
|
||||||
editor: Some(Default::default()),
|
editor: Some(Default::default()),
|
||||||
editing: false.into(),
|
editing: false.into(),
|
||||||
midi_buf: vec![vec![];65536],
|
midi_buf: vec![vec![];65536],
|
||||||
|
tracks: vec![],
|
||||||
|
scenes: vec![],
|
||||||
..Self::new_clock(jack, bpm, sync_lead, sync_follow, midi_froms, midi_tos)?
|
..Self::new_clock(jack, bpm, sync_lead, sync_follow, midi_froms, midi_tos)?
|
||||||
};
|
};
|
||||||
arranger.scenes_add(scenes);
|
arranger.scenes_add(scenes);
|
||||||
arranger.tracks_add(tracks, track_width, midi_froms, midi_tos);
|
arranger.tracks_add(tracks, Some(track_width), midi_froms, midi_tos);
|
||||||
arranger.selected = Selection::Clip(1, 1);
|
arranger.selected = Selection::Clip(1, 1);
|
||||||
Ok(arranger)
|
Ok(arranger)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ atom_command!(TekCommand: |app: Tek| {
|
||||||
(t, s) => Self::Select(Selection::Clip(t, s)),
|
(t, s) => Self::Select(Selection::Clip(t, s)),
|
||||||
})
|
})
|
||||||
("clip" [,..a] Self::Clip(
|
("clip" [,..a] Self::Clip(
|
||||||
ClipCommand::try_from_expr(app, a).expect("invalid command")))
|
ClipCommand::try_from_expr(app, a).expect("invalid command: {a:?}")))
|
||||||
("clock" [,..a] Self::Clock(
|
("clock" [,..a] Self::Clock(
|
||||||
ClockCommand::try_from_expr(app.clock(), a).expect("invalid command")))
|
ClockCommand::try_from_expr(app.clock(), a).expect("invalid command")))
|
||||||
("editor" [,..a] Self::Editor(
|
("editor" [,..a] Self::Editor(
|
||||||
|
|
@ -190,7 +190,7 @@ command!(|self: TekCommand, app: Tek|match self {
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
},
|
},
|
||||||
_ => todo!()
|
_ => todo!("{self:?}")
|
||||||
});
|
});
|
||||||
#[derive(Clone, Debug)] pub enum TrackCommand {
|
#[derive(Clone, Debug)] pub enum TrackCommand {
|
||||||
Add,
|
Add,
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
(@right select :track-next :scene)
|
(@right select :track-next :scene)
|
||||||
(@d select :track-next :scene)
|
(@d select :track-next :scene)
|
||||||
|
|
||||||
(@q enqueue :track :scene)
|
(@q clip launch :track :scene)
|
||||||
(@c clip color :track :scene)
|
(@c clip color :track :scene)
|
||||||
(@g clip get)
|
(@g clip get)
|
||||||
(@p clip put)
|
(@p clip put)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
(@right select :track-next :scene)
|
(@right select :track-next :scene)
|
||||||
(@d select :track-next :scene)
|
(@d select :track-next :scene)
|
||||||
|
|
||||||
(@q scene launch)
|
(@q scene launch :scene)
|
||||||
(@c scene color :scene)
|
(@c scene color :scene)
|
||||||
(@comma scene prev)
|
(@comma scene prev)
|
||||||
(@period scene next)
|
(@period scene next)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
(@down select :track :scene-next)
|
(@down select :track :scene-next)
|
||||||
(@s select :track :scene-next)
|
(@s select :track :scene-next)
|
||||||
|
|
||||||
(@q track launch)
|
(@q track launch :track)
|
||||||
(@c track color :track)
|
(@c track color :track)
|
||||||
(@comma track prev)
|
(@comma track prev)
|
||||||
(@period track next)
|
(@period track next)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,11 @@
|
||||||
#![feature(if_let_guard)]
|
#![feature(if_let_guard)]
|
||||||
#![feature(impl_trait_in_assoc_type)]
|
#![feature(impl_trait_in_assoc_type)]
|
||||||
#![feature(type_alias_impl_trait)]
|
#![feature(type_alias_impl_trait)]
|
||||||
pub(crate) use std::sync::{Arc, RwLock, atomic::{AtomicBool, Ordering::Relaxed}};
|
mod cli; pub use self::cli::*;
|
||||||
|
mod model; pub use self::model::*;
|
||||||
|
mod view; pub use self::view::*;
|
||||||
|
mod keys; pub use self::keys::*;
|
||||||
|
mod audio; pub use self::audio::*;
|
||||||
/// Standard result type.
|
/// Standard result type.
|
||||||
pub type Usually<T> = std::result::Result<T, Box<dyn std::error::Error>>;
|
pub type Usually<T> = std::result::Result<T, Box<dyn std::error::Error>>;
|
||||||
/// Standard optional result type.
|
/// Standard optional result type.
|
||||||
|
|
@ -22,8 +26,5 @@ pub use ::tek_tui::{
|
||||||
Event, KeyEvent, KeyEventKind, KeyEventState, KeyModifiers, KeyCode::{self, *},
|
Event, KeyEvent, KeyEventKind, KeyEventState, KeyModifiers, KeyCode::{self, *},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
mod cli; pub use self::cli::*;
|
|
||||||
mod model; pub use self::model::*;
|
pub(crate) use std::sync::{Arc, RwLock, atomic::{AtomicBool, Ordering::Relaxed}};
|
||||||
mod view; pub use self::view::*;
|
|
||||||
mod keys; pub use self::keys::*;
|
|
||||||
mod audio; pub use self::audio::*;
|
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ impl Tek {
|
||||||
format!("Sc{:3>}", self.scenes().len() + 1).into()
|
format!("Sc{:3>}", self.scenes().len() + 1).into()
|
||||||
}
|
}
|
||||||
pub fn tracks_add (
|
pub fn tracks_add (
|
||||||
&mut self, count: usize, width: usize,
|
&mut self, count: usize, width: Option<usize>,
|
||||||
midi_from: &[PortConnect], midi_to: &[PortConnect],
|
midi_from: &[PortConnect], midi_to: &[PortConnect],
|
||||||
) -> Usually<()> {
|
) -> Usually<()> {
|
||||||
let jack = self.jack().clone();
|
let jack = self.jack().clone();
|
||||||
|
|
@ -100,7 +100,9 @@ impl Tek {
|
||||||
for i in 0..count {
|
for i in 0..count {
|
||||||
let color = track_color_1.mix(track_color_2, i as f32 / count as f32).into();
|
let color = track_color_1.mix(track_color_2, i as f32 / count as f32).into();
|
||||||
let mut track = self.track_add(None, Some(color), midi_from, midi_to)?.1;
|
let mut track = self.track_add(None, Some(color), midi_from, midi_to)?.1;
|
||||||
track.width = width;
|
if let Some(width) = width {
|
||||||
|
track.width = width;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
@ -111,7 +113,7 @@ impl Tek {
|
||||||
) -> Usually<(usize, &mut Track)> {
|
) -> Usually<(usize, &mut Track)> {
|
||||||
let name = name.map_or_else(||self.track_next_name(), |x|x.to_string().into());
|
let name = name.map_or_else(||self.track_next_name(), |x|x.to_string().into());
|
||||||
let mut track = Track {
|
let mut track = Track {
|
||||||
width: (name.len() + 2).max(9),
|
width: (name.len() + 2).max(12),
|
||||||
color: color.unwrap_or_else(ItemPalette::random),
|
color: color.unwrap_or_else(ItemPalette::random),
|
||||||
player: MidiPlayer::new(
|
player: MidiPlayer::new(
|
||||||
&format!("{name}"),
|
&format!("{name}"),
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,8 @@ impl Default for ViewCache {
|
||||||
view!(TuiOut: |self: Tek| self.size.of(View(self, self.view)); {
|
view!(TuiOut: |self: Tek| self.size.of(View(self, self.view)); {
|
||||||
":editor" => (&self.editor).boxed(),
|
":editor" => (&self.editor).boxed(),
|
||||||
":pool" => self.view_pool().boxed(),
|
":pool" => self.view_pool().boxed(),
|
||||||
//":sample" => self.view_sample(self.is_editing()).boxed(),
|
":sample" => ().boxed(),//self.view_sample(self.is_editing()).boxed(),
|
||||||
//":sampler" => self.view_sampler(self.is_editing(), &self.editor).boxed(),
|
":sampler" => ().boxed(),//self.view_sampler(self.is_editing(), &self.editor).boxed(),
|
||||||
":status" => self.view_editor().boxed(),
|
":status" => self.view_editor().boxed(),
|
||||||
":toolbar" => self.view_clock().boxed(),
|
":toolbar" => self.view_clock().boxed(),
|
||||||
":tracks" => self.view_tracks().boxed(),
|
":tracks" => self.view_tracks().boxed(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue