mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
sequencer sidebar
This commit is contained in:
parent
52e9613d52
commit
72afc45f5e
6 changed files with 38 additions and 25 deletions
|
|
@ -11,9 +11,9 @@ pub struct ArrangerCli {
|
|||
/// Whether to include a transport toolbar (default: true)
|
||||
#[arg(short, long)] transport: Option<bool>,
|
||||
/// Number of tracks
|
||||
#[arg(short = 'x', long, default_value_t = 1)] tracks: usize,
|
||||
#[arg(short = 'x', long, default_value_t = 8)] tracks: usize,
|
||||
/// Number of scenes
|
||||
#[arg(short, long, default_value_t = 1)] scenes: usize,
|
||||
#[arg(short, long, default_value_t = 8)] scenes: usize,
|
||||
}
|
||||
|
||||
impl Arranger {
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ pub fn track_name_max_len (tracks: &[Sequencer]) -> usize {
|
|||
pub fn track_clip_name_lengths (tracks: &[Sequencer]) -> Vec<(usize, usize)> {
|
||||
let mut total = 0;
|
||||
let mut lengths: Vec<(usize, usize)> = tracks.iter().map(|track|{
|
||||
let len = 2 + track.phrases
|
||||
let len = 4 + track.phrases
|
||||
.iter()
|
||||
.fold(track.name.len(), |len, phrase|{
|
||||
len.max(phrase.read().unwrap().name.len())
|
||||
|
|
|
|||
|
|
@ -44,6 +44,14 @@ render!(Arranger |self, buf, area| {
|
|||
} else {
|
||||
Rect::default()
|
||||
};
|
||||
match self.focus_sequencer {
|
||||
true => {
|
||||
"[Arrows] Move, [A]dd, [D]elete, [R]ecord, [P]lay".blit(buf, area.x + 1, area.height - 1, None)?;
|
||||
},
|
||||
false => {
|
||||
"[Arrows] Move, [P]lay, [R]ecord, [N]ame, [E]dit, [C-T]rack add, [C-A]dd scene".blit(buf, area.x + 1, area.y + arrangement.height, None)?;
|
||||
},
|
||||
}
|
||||
Corners(Style::default().green().not_dim()).draw(buf, match self.focus_sequencer {
|
||||
true => sequencer,
|
||||
false => arrangement,
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ fn scene_row (
|
|||
) {
|
||||
if let Some(phrase) = track.phrases.get(*clip) {
|
||||
let phrase = phrase.read().unwrap();
|
||||
phrase.name.blit(buf, x, y, style)?;
|
||||
phrase.name.blit(buf, x + 1, y, style)?;
|
||||
if track.sequence == Some(*clip) {
|
||||
fill_bg(buf, Rect {
|
||||
x: x - 1,
|
||||
|
|
|
|||
|
|
@ -68,15 +68,8 @@ impl Sequencer {
|
|||
now: 0,
|
||||
ppq: 96,
|
||||
transport: None,
|
||||
note_axis: FixedAxis {
|
||||
start: 12,
|
||||
point: Some(36)
|
||||
},
|
||||
time_axis: ScaledAxis {
|
||||
start: 0,
|
||||
scale: 24,
|
||||
point: Some(0)
|
||||
},
|
||||
note_axis: FixedAxis { start: 12, point: Some(36) },
|
||||
time_axis: ScaledAxis { start: 0, scale: 24, point: Some(0) },
|
||||
}
|
||||
}
|
||||
pub fn toggle_monitor (&mut self) {
|
||||
|
|
|
|||
|
|
@ -57,7 +57,19 @@ impl Sequencer {
|
|||
|
||||
const H_KEYS_OFFSET: usize = 5;
|
||||
|
||||
fn horizontal_draw (&self, buf: &mut Buffer, area: Rect) -> Usually<()> {
|
||||
fn horizontal_draw (&self, buf: &mut Buffer, mut area: Rect) -> Usually<()> {
|
||||
"Start 1.1.1".blit(buf, area.x + 1, area.y + 2, None)?;
|
||||
"End 2.1.1".blit(buf, area.x + 1, area.y + 3, None)?;
|
||||
"[ Loop off ] ".blit(buf, area.x + 1, area.y + 5, None)?;
|
||||
"Loop 1.1.1".blit(buf, area.x + 1, area.y + 6, None)?;
|
||||
"Length 1.0.0".blit(buf, area.x + 1, area.y + 7, None)?;
|
||||
"Notes -------".blit(buf, area.x + 1, area.y + 9, None)?;
|
||||
"[ /2 ] [ x2 ]".blit(buf, area.x + 1, area.y + 10, None)?;
|
||||
"[ Reverse ]".blit(buf, area.x + 1, area.y + 11, None)?;
|
||||
"[ Invert ]".blit(buf, area.x + 1, area.y + 12, None)?;
|
||||
"[ Duplicate ]".blit(buf, area.x + 1, area.y + 13, None)?;
|
||||
area.x = area.x + 16;
|
||||
area.width = area.width.saturating_sub(12);
|
||||
self.horizontal_keys(buf, area)?;
|
||||
if let Some(ref phrase) = self.phrase {
|
||||
self.horizontal_timer(buf, area, phrase)?;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue