mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
transport compact mode
This commit is contained in:
parent
6776e2ec55
commit
92459b5f82
6 changed files with 134 additions and 83 deletions
|
|
@ -108,11 +108,16 @@ render!(Tui: (self: Groovebox) => {
|
|||
let color = self.player.play_phrase().as_ref()
|
||||
.and_then(|(_,p)|p.as_ref().map(|p|p.read().unwrap().color))
|
||||
.clone();
|
||||
let sampler = Align::w(Fill::y(SampleList::new(&self.sampler, &self.editor)));
|
||||
let selector = Bsp::e(PhraseSelector::play_phrase(&self.player), PhraseSelector::next_phrase(&self.player));
|
||||
self.size.of(Bsp::s(
|
||||
Fill::x(Fixed::y(3, lay!(
|
||||
Fill::x(Fixed::y(if self.pool.visible { 3 } else { 1 }, lay!(
|
||||
Align::w(Meter("L/", self.sampler.input_meter[0])),
|
||||
Align::x(TransportView(&self.player.clock)),
|
||||
Align::e(Meter("R/", self.sampler.input_meter[1])),
|
||||
Align::x(Tui::bg(TuiTheme::g(32), TransportView::new(
|
||||
!self.pool.visible,
|
||||
&self.player.clock
|
||||
))),
|
||||
))),
|
||||
Bsp::n(
|
||||
Bsp::s(
|
||||
|
|
@ -135,12 +140,9 @@ render!(Tui: (self: Groovebox) => {
|
|||
Bsp::w(
|
||||
Fixed::x(pool_w, Align::e(Fill::y(PoolView(&self.pool)))),
|
||||
Fill::xy(Bsp::e(
|
||||
Fixed::x(sampler_w, Align::w(Fill::y(GrooveboxSamples(self)))),
|
||||
Fixed::x(sampler_w, sampler),
|
||||
Bsp::s(
|
||||
Fill::x(Align::c(Bsp::e(
|
||||
PhraseSelector::play_phrase(&self.player),
|
||||
PhraseSelector::next_phrase(&self.player),
|
||||
))),
|
||||
selector,
|
||||
Bsp::n(
|
||||
MidiEditStatus(&self.editor),
|
||||
&self.editor,
|
||||
|
|
@ -152,32 +154,6 @@ render!(Tui: (self: Groovebox) => {
|
|||
))
|
||||
});
|
||||
|
||||
// TODO move this to sampler
|
||||
struct GrooveboxSamples<'a>(&'a Groovebox);
|
||||
render!(Tui: (self: GrooveboxSamples<'a>) => {
|
||||
let note_lo = self.0.editor.note_lo().load(Relaxed);
|
||||
let note_pt = self.0.editor.note_point();
|
||||
let note_hi = self.0.editor.note_hi();
|
||||
Fill::xy(Tui::map(move||(note_lo..=note_hi).rev(), move|note, i| {
|
||||
let mut bg = if note == note_pt { TuiTheme::g(64) } else { Color::Reset };
|
||||
let mut fg = TuiTheme::g(160);
|
||||
if let Some((index, _)) = self.0.sampler.recording {
|
||||
if note == index {
|
||||
bg = Color::Rgb(64,16,0);
|
||||
fg = Color::Rgb(224,64,32)
|
||||
}
|
||||
} else if self.0.sampler.mapped[note].is_some() {
|
||||
fg = TuiTheme::g(224);
|
||||
}
|
||||
let offset = |a|Push::y(i as u16, Align::n(Fixed::y(1, Fill::x(a))));
|
||||
offset(Tui::bg(bg, if let Some(sample) = &self.0.sampler.mapped[note] {
|
||||
Tui::fg(fg, format!("{note:3} ?????? "))
|
||||
} else {
|
||||
Tui::fg(fg, format!("{note:3} (none) "))
|
||||
}))
|
||||
}))
|
||||
});
|
||||
|
||||
pub enum GrooveboxCommand {
|
||||
History(isize),
|
||||
Clock(ClockCommand),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue