sequencer sidebar

This commit is contained in:
🪞👃🪞 2024-08-18 23:06:11 +03:00
parent 52e9613d52
commit 72afc45f5e
6 changed files with 38 additions and 25 deletions

View file

@ -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 {

View file

@ -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())

View file

@ -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,

View file

@ -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,

View file

@ -57,26 +57,19 @@ impl Sequencer {
reset: true,
notes_in: [false;128],
notes_out: [false;128],
buffer: Default::default(),
keys: keys_vert(),
entered: false,
focused: false,
mode: false,
keys_in: [false;128],
keys_out: [false;128],
phrase: None,
now: 0,
ppq: 96,
transport: None,
note_axis: FixedAxis {
start: 12,
point: Some(36)
},
time_axis: ScaledAxis {
start: 0,
scale: 24,
point: Some(0)
},
buffer: Default::default(),
keys: keys_vert(),
entered: false,
focused: false,
mode: false,
keys_in: [false;128],
keys_out: [false;128],
phrase: None,
now: 0,
ppq: 96,
transport: None,
note_axis: FixedAxis { start: 12, point: Some(36) },
time_axis: ScaledAxis { start: 0, scale: 24, point: Some(0) },
}
}
pub fn toggle_monitor (&mut self) {

View file

@ -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)?;