mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16: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)
|
/// Whether to include a transport toolbar (default: true)
|
||||||
#[arg(short, long)] transport: Option<bool>,
|
#[arg(short, long)] transport: Option<bool>,
|
||||||
/// Number of tracks
|
/// 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
|
/// Number of scenes
|
||||||
#[arg(short, long, default_value_t = 1)] scenes: usize,
|
#[arg(short, long, default_value_t = 8)] scenes: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Arranger {
|
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)> {
|
pub fn track_clip_name_lengths (tracks: &[Sequencer]) -> Vec<(usize, usize)> {
|
||||||
let mut total = 0;
|
let mut total = 0;
|
||||||
let mut lengths: Vec<(usize, usize)> = tracks.iter().map(|track|{
|
let mut lengths: Vec<(usize, usize)> = tracks.iter().map(|track|{
|
||||||
let len = 2 + track.phrases
|
let len = 4 + track.phrases
|
||||||
.iter()
|
.iter()
|
||||||
.fold(track.name.len(), |len, phrase|{
|
.fold(track.name.len(), |len, phrase|{
|
||||||
len.max(phrase.read().unwrap().name.len())
|
len.max(phrase.read().unwrap().name.len())
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,14 @@ render!(Arranger |self, buf, area| {
|
||||||
} else {
|
} else {
|
||||||
Rect::default()
|
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 {
|
Corners(Style::default().green().not_dim()).draw(buf, match self.focus_sequencer {
|
||||||
true => sequencer,
|
true => sequencer,
|
||||||
false => arrangement,
|
false => arrangement,
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ fn scene_row (
|
||||||
) {
|
) {
|
||||||
if let Some(phrase) = track.phrases.get(*clip) {
|
if let Some(phrase) = track.phrases.get(*clip) {
|
||||||
let phrase = phrase.read().unwrap();
|
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) {
|
if track.sequence == Some(*clip) {
|
||||||
fill_bg(buf, Rect {
|
fill_bg(buf, Rect {
|
||||||
x: x - 1,
|
x: x - 1,
|
||||||
|
|
|
||||||
|
|
@ -68,15 +68,8 @@ impl Sequencer {
|
||||||
now: 0,
|
now: 0,
|
||||||
ppq: 96,
|
ppq: 96,
|
||||||
transport: None,
|
transport: None,
|
||||||
note_axis: FixedAxis {
|
note_axis: FixedAxis { start: 12, point: Some(36) },
|
||||||
start: 12,
|
time_axis: ScaledAxis { start: 0, scale: 24, point: Some(0) },
|
||||||
point: Some(36)
|
|
||||||
},
|
|
||||||
time_axis: ScaledAxis {
|
|
||||||
start: 0,
|
|
||||||
scale: 24,
|
|
||||||
point: Some(0)
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn toggle_monitor (&mut self) {
|
pub fn toggle_monitor (&mut self) {
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,19 @@ impl Sequencer {
|
||||||
|
|
||||||
const H_KEYS_OFFSET: usize = 5;
|
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)?;
|
self.horizontal_keys(buf, area)?;
|
||||||
if let Some(ref phrase) = self.phrase {
|
if let Some(ref phrase) = self.phrase {
|
||||||
self.horizontal_timer(buf, area, phrase)?;
|
self.horizontal_timer(buf, area, phrase)?;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue