mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
MidiPlayer -> Sequencer; connect sequencer to sampler in groovebox mode
This commit is contained in:
parent
c5586c3a35
commit
5fab1af138
10 changed files with 120 additions and 81 deletions
|
|
@ -102,7 +102,7 @@ impl App {
|
|||
let mut track = Track {
|
||||
width: (name.len() + 2).max(12),
|
||||
color: color.unwrap_or_else(ItemTheme::random),
|
||||
player: MidiPlayer::new(
|
||||
sequencer: Sequencer::new(
|
||||
&format!("{name}"),
|
||||
self.jack(),
|
||||
Some(self.clock()),
|
||||
|
|
@ -141,7 +141,7 @@ impl App {
|
|||
let exists = self.tracks().get(index).is_some();
|
||||
if exists {
|
||||
let track = self.tracks_mut().remove(index);
|
||||
let Track { player: MidiPlayer { midi_ins, midi_outs, .. }, .. } = track;
|
||||
let Track { sequencer: Sequencer { midi_ins, midi_outs, .. }, .. } = track;
|
||||
for port in midi_ins.into_iter() {
|
||||
port.close()?;
|
||||
}
|
||||
|
|
@ -196,7 +196,7 @@ impl App {
|
|||
/// Enqueue clips from a scene across all tracks
|
||||
pub fn scene_enqueue (&mut self, scene: usize) {
|
||||
for track in 0..self.tracks.len() {
|
||||
self.tracks[track].player.enqueue_next(self.scenes[scene].clips[track].as_ref());
|
||||
self.tracks[track].sequencer.enqueue_next(self.scenes[scene].clips[track].as_ref());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -315,7 +315,7 @@ impl App {
|
|||
/// Stop all playing clips
|
||||
pub(crate) fn stop_all (&mut self) {
|
||||
for track in 0..self.tracks.len() {
|
||||
self.tracks[track].player.enqueue_next(None);
|
||||
self.tracks[track].sequencer.enqueue_next(None);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -324,14 +324,14 @@ impl App {
|
|||
use Selection::*;
|
||||
match self.selected {
|
||||
Track(t) => {
|
||||
self.tracks[t].player.enqueue_next(None)
|
||||
self.tracks[t].sequencer.enqueue_next(None)
|
||||
},
|
||||
TrackClip { track, scene } => {
|
||||
self.tracks[track].player.enqueue_next(self.scenes[scene].clips[track].as_ref())
|
||||
self.tracks[track].sequencer.enqueue_next(self.scenes[scene].clips[track].as_ref())
|
||||
},
|
||||
Scene(s) => {
|
||||
for t in 0..self.tracks.len() {
|
||||
self.tracks[t].player.enqueue_next(self.scenes[s].clips[t].as_ref())
|
||||
self.tracks[t].sequencer.enqueue_next(self.scenes[s].clips[t].as_ref())
|
||||
}
|
||||
},
|
||||
_ => {}
|
||||
|
|
@ -417,7 +417,7 @@ impl App {
|
|||
|
||||
fn device_add_sampler (&mut self) -> Usually<()> {
|
||||
let name = self.jack.with_client(|c|c.name().to_string());
|
||||
let midi = self.track().expect("no active track").player.midi_outs[0].name();
|
||||
let midi = self.track().expect("no active track").sequencer.midi_outs[0].name();
|
||||
let sampler = if let Ok(sampler) = Sampler::new(
|
||||
&self.jack,
|
||||
&format!("{}/Sampler", &self.track().expect("no active track").name),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue