mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
more sensible port creation
This commit is contained in:
parent
4028b3bb29
commit
bbe49ad463
7 changed files with 133 additions and 125 deletions
|
|
@ -62,20 +62,28 @@ impl Default for MidiPlayer {
|
|||
}
|
||||
impl MidiPlayer {
|
||||
pub fn new (
|
||||
jack: &Jack,
|
||||
name: impl AsRef<str>,
|
||||
clip: Option<&Arc<RwLock<MidiClip>>>,
|
||||
name: impl AsRef<str>,
|
||||
jack: &Jack,
|
||||
clock: Option<&Clock>,
|
||||
clip: Option<&Arc<RwLock<MidiClip>>>,
|
||||
midi_from: &[PortConnect],
|
||||
midi_to: &[PortConnect],
|
||||
) -> Usually<Self> {
|
||||
let name = name.as_ref();
|
||||
let clock = Clock::from(jack);
|
||||
let clock = clock.cloned().unwrap_or_default();
|
||||
Ok(Self {
|
||||
midi_ins: vec![JackMidiIn::new(jack, format!("M/{name}"), midi_from)?,],
|
||||
midi_outs: vec![JackMidiOut::new(jack, format!("{name}/M"), midi_to)?, ],
|
||||
play_clip: Some((Moment::zero(&clock.timebase), clip.cloned())),
|
||||
midi_ins: vec![JackMidiIn::new(jack, format!("M/{name}"), midi_from)?,],
|
||||
midi_outs: vec![JackMidiOut::new(jack, format!("{name}/M"), midi_to)?, ],
|
||||
play_clip: clip.map(|clip|(Moment::zero(&clock.timebase), Some(clip.clone()))),
|
||||
clock,
|
||||
..Default::default()
|
||||
note_buf: vec![0;8],
|
||||
reset: true,
|
||||
recording: false,
|
||||
monitoring: false,
|
||||
overdub: false,
|
||||
next_clip: None,
|
||||
notes_in: RwLock::new([false;128]).into(),
|
||||
notes_out: RwLock::new([false;128]).into(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -88,26 +96,6 @@ impl std::fmt::Debug for MidiPlayer {
|
|||
.finish()
|
||||
}
|
||||
}
|
||||
from!(|clock: &Clock| MidiPlayer = Self {
|
||||
clock: clock.clone(),
|
||||
midi_ins: vec![],
|
||||
midi_outs: vec![],
|
||||
note_buf: vec![0;8],
|
||||
reset: true,
|
||||
recording: false,
|
||||
monitoring: false,
|
||||
overdub: false,
|
||||
play_clip: None,
|
||||
next_clip: None,
|
||||
notes_in: RwLock::new([false;128]).into(),
|
||||
notes_out: RwLock::new([false;128]).into(),
|
||||
});
|
||||
from!(|state: (&Clock, &Arc<RwLock<MidiClip>>)|MidiPlayer = {
|
||||
let (clock, clip) = state;
|
||||
let mut model = Self::from(clock);
|
||||
model.play_clip = Some((Moment::zero(&clock.timebase), Some(clip.clone())));
|
||||
model
|
||||
});
|
||||
has_clock!(|self: MidiPlayer|self.clock);
|
||||
impl HasMidiIns for MidiPlayer {
|
||||
fn midi_ins (&self) -> &Vec<JackMidiIn> { &self.midi_ins }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue