implement ConnectPort

This commit is contained in:
🪞👃🪞 2025-01-09 18:48:39 +01:00
parent 0cca06e054
commit 9e4406c66a
4 changed files with 77 additions and 64 deletions

View file

@ -49,15 +49,19 @@ impl MidiPlayer {
pub fn new (
jack: &Arc<RwLock<JackConnection>>,
name: impl AsRef<str>,
clip: Option<&Arc<RwLock<MidiClip>>>,
midi_from: &[impl AsRef<str>],
midi_to: &[impl AsRef<str>],
) -> Usually<Self> {
let name = name.as_ref();
let midi_in = jack.midi_in(&format!("M/{name}"), midi_from)?;
jack.connect_midi_from(&midi_in, midi_from)?;
let midi_out = jack.midi_out(&format!("{name}/M"), midi_to)?;
jack.connect_midi_to(&midi_out, midi_to)?;
let clock = Clock::from(jack);
Ok(Self {
clock: Clock::from(jack),
play_phrase: None,
play_phrase: Some((Moment::zero(&clock.timebase), clip.cloned())),
next_phrase: None,
recording: false,
monitoring: false,
@ -67,9 +71,10 @@ impl MidiPlayer {
midi_ins: vec![midi_in],
midi_outs: vec![midi_out],
notes_out: RwLock::new([false;128]).into(),
note_buf: vec![0;8],
reset: true,
note_buf: vec![0;8],
clock,
})
}
pub fn play_status (&self) -> impl Content<TuiOut> {