diff --git a/src/arranger.rs b/src/arranger.rs index 8b11c808..0debca70 100644 --- a/src/arranger.rs +++ b/src/arranger.rs @@ -76,7 +76,7 @@ impl ArrangerTui { from_jack!(|jack| ArrangerTui { let clock = Clock::from(jack); let phrase = Arc::new(RwLock::new(MidiClip::new( - "New", true, 4 * clock.timebase.ppq.get() as usize, + "Clip", true, 4 * clock.timebase.ppq.get() as usize, None, Some(ItemColor::random().into()) ))); Self { diff --git a/src/border.rs b/src/border.rs index f8e7e8f9..03188944 100644 --- a/src/border.rs +++ b/src/border.rs @@ -31,7 +31,7 @@ pub trait BorderStyle: Send + Sync + Copy { Bordered(self, w) } fn enclose > (self, w: W) -> impl Content { - Tui::bg(self.style().unwrap().bg.unwrap(), lay!(Fill::xy(Border(self)), w)) + Tui::bg(self.style().unwrap().bg.unwrap_or(Color::Reset), lay!(Fill::xy(Border(self)), w)) } const NW: &'static str = ""; const N: &'static str = ""; diff --git a/src/groovebox.rs b/src/groovebox.rs index 1aee904b..f66baa21 100644 --- a/src/groovebox.rs +++ b/src/groovebox.rs @@ -33,7 +33,7 @@ impl Groovebox { let mut player = crate::midi::MidiPlayer::new(jack, &"sequencer", &midi_from, &midi_to)?; jack.read().unwrap().client().connect_ports(&player.midi_outs[0], &sampler.midi_in)?; let phrase = Arc::new(RwLock::new(MidiClip::new( - "New", true, 4 * player.clock.timebase.ppq.get() as usize, + "Clip", true, 4 * player.clock.timebase.ppq.get() as usize, None, Some(ItemColor::random().into()) ))); player.play_phrase = Some((Moment::zero(&player.clock.timebase), Some(phrase.clone()))); @@ -112,16 +112,13 @@ render!(Tui: (self: Groovebox) => { Bsp::s( lay!(Align::w(edit_clip), Align::e(selectors)), Bsp::n( - Bsp::a( - Outer(Style::default().fg(TuiTheme::g(128))), - Fill::x(Fixed::y(sample_h, if let Some((_, sample)) = &self.sampler.recording { - SampleViewer(Some(sample.clone())) - } else if let Some(sample) = &self.sampler.mapped[note_pt] { - SampleViewer(Some(sample.clone())) - } else { - SampleViewer(None) - })), - ), + Max::y(sample_h, Fill::xy(if let Some((_, sample)) = &self.sampler.recording { + SampleViewer(Some(sample.clone())) + } else if let Some(sample) = &self.sampler.mapped[note_pt] { + SampleViewer(Some(sample.clone())) + } else { + SampleViewer(None) + })), Bsp::n( lay!( Align::w(Fixed::y(1, SamplerStatus(&self.sampler, note_pt))), diff --git a/src/pool.rs b/src/pool.rs index edba6b46..4c862e23 100644 --- a/src/pool.rs +++ b/src/pool.rs @@ -147,10 +147,10 @@ fn to_phrases_command (state: &PoolModel, input: &TuiIn) -> Option return None }, key_pat!(Char('a')) | key_pat!(Shift-Char('A')) => Cmd::Phrase(PhrasePoolCommand::Add(count, MidiClip::new( - String::from("(new)"), true, 4 * PPQ, None, Some(ItemPalette::random()) + String::from("Clip"), true, 4 * PPQ, None, Some(ItemPalette::random()) ))), key_pat!(Char('i')) => Cmd::Phrase(PhrasePoolCommand::Add(index + 1, MidiClip::new( - String::from("(new)"), true, 4 * PPQ, None, Some(ItemPalette::random()) + String::from("Clip"), true, 4 * PPQ, None, Some(ItemPalette::random()) ))), key_pat!(Char('d')) | key_pat!(Shift-Char('D')) => { let mut phrase = state.phrases()[index].read().unwrap().duplicate(); diff --git a/src/sampler.rs b/src/sampler.rs index ef02bc21..259b1198 100644 --- a/src/sampler.rs +++ b/src/sampler.rs @@ -74,7 +74,7 @@ impl Sampler { pub fn begin_recording (&mut self, index: usize) { self.recording = Some(( index, - Arc::new(RwLock::new(Sample::new("(new)", 0, 0, vec![vec![];self.audio_ins.len()]))) + Arc::new(RwLock::new(Sample::new("Sample", 0, 0, vec![vec![];self.audio_ins.len()]))) )); } pub fn finish_recording (&mut self) -> Option>> { diff --git a/src/sampler/sample_list.rs b/src/sampler/sample_list.rs index 56b4ac0f..e6c49c66 100644 --- a/src/sampler/sample_list.rs +++ b/src/sampler/sample_list.rs @@ -23,22 +23,23 @@ render!(Tui: (self: SampleList<'a>) => { let mut bg = if note == note_pt { TuiTheme::g(64) } else { Color::Reset }; let mut fg = TuiTheme::g(160); + if sampler.mapped[note].is_some() { + fg = TuiTheme::g(224); + bg = Color::Rgb(0, if note == note_pt { 96 } else { 64 }, 0); + } if let Some((index, _)) = sampler.recording { if note == index { - bg = Color::Rgb(64,16,0); + bg = if note == note_pt { Color::Rgb(96,24,0) } else { Color::Rgb(64,16,0) }; fg = Color::Rgb(224,64,32) } - } else if sampler.mapped[note].is_some() { - fg = TuiTheme::g(224); } offset(Tui::fg_bg(fg, bg, format!("{note:3} {}", if *compact { - "" + String::default() } else if let Some(sample) = &sampler.mapped[note] { - "??????" + sample.read().unwrap().name.clone() } else { - "(none)" + String::from("(none)") }))) - })) }); diff --git a/src/sampler/sample_viewer.rs b/src/sampler/sample_viewer.rs index 44cc4d0f..f555a37d 100644 --- a/src/sampler/sample_viewer.rs +++ b/src/sampler/sample_viewer.rs @@ -19,7 +19,7 @@ render!(Tui: |self: SampleViewer, to|{ let end = sample.end as f64; let length = end - start; let step = length / width as f64; - let mut t = start; + let mut t = start; let mut lines = vec![]; while t < end { let chunk = &sample.channels[0][t as usize..((t + step) as usize).min(sample.end)]; diff --git a/src/sequencer.rs b/src/sequencer.rs index 3816bfa2..e5aca001 100644 --- a/src/sequencer.rs +++ b/src/sequencer.rs @@ -24,7 +24,7 @@ pub struct SequencerTui { from_jack!(|jack|SequencerTui { let clock = Clock::from(jack); let phrase = Arc::new(RwLock::new(MidiClip::new( - "New", true, 4 * clock.timebase.ppq.get() as usize, + "Clip", true, 4 * clock.timebase.ppq.get() as usize, None, Some(ItemColor::random().into()) ))); Self {