mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
move all port connections to constructors (port: impl AsRef<str>)
This commit is contained in:
parent
e8b97bed37
commit
6607491f16
9 changed files with 215 additions and 129 deletions
|
|
@ -20,30 +20,50 @@ pub struct GrooveboxTui {
|
|||
pub midi_buf: Vec<Vec<Vec<u8>>>,
|
||||
pub perf: PerfModel,
|
||||
}
|
||||
impl GrooveboxTui {
|
||||
pub fn new (
|
||||
jack: &Arc<RwLock<JackConnection>>,
|
||||
midi_from: &[impl AsRef<str>],
|
||||
midi_to: &[impl AsRef<str>],
|
||||
audio_from: &[&[impl AsRef<str>];2],
|
||||
audio_to: &[&[impl AsRef<str>];2],
|
||||
) -> Usually<Self> {
|
||||
let sampler = crate::sampler::Sampler::new(
|
||||
jack, &"sampler", midi_from, audio_from, audio_to
|
||||
)?;
|
||||
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)?;
|
||||
//jack.connect_midi_from(&player.midi_ins[0], &midi_from)?;
|
||||
//jack.connect_midi_from(&sampler.midi_in, &midi_from)?;
|
||||
//jack.connect_midi_to(&player.midi_outs[0], &midi_to)?;
|
||||
//jack.connect_audio_from(&sampler.audio_ins[0], &audio_from[0])?;
|
||||
//jack.connect_audio_from(&sampler.audio_ins[1], &audio_from[1])?;
|
||||
//jack.connect_audio_to(&sampler.audio_outs[0], &audio_to[0])?;
|
||||
//jack.connect_audio_to(&sampler.audio_outs[1], &audio_to[1])?;
|
||||
|
||||
from_jack!(|jack|GrooveboxTui {
|
||||
let mut player = MidiPlayer::new(jack, "sequencer")?;
|
||||
let phrase = Arc::new(RwLock::new(MidiClip::new(
|
||||
"New", 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())));
|
||||
let pool = crate::pool::PoolModel::from(&phrase);
|
||||
let editor = crate::midi::MidiEditorModel::from(&phrase);
|
||||
let sampler = crate::sampler::Sampler::new(jack, "sampler")?;
|
||||
Self {
|
||||
_jack: jack.clone(),
|
||||
player,
|
||||
pool,
|
||||
editor,
|
||||
sampler,
|
||||
size: Measure::new(),
|
||||
midi_buf: vec![vec![];65536],
|
||||
note_buf: vec![],
|
||||
perf: PerfModel::default(),
|
||||
status: true,
|
||||
let phrase = Arc::new(RwLock::new(MidiClip::new(
|
||||
"New", 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())));
|
||||
let pool = crate::pool::PoolModel::from(&phrase);
|
||||
let editor = crate::midi::MidiEditorModel::from(&phrase);
|
||||
Ok(Self {
|
||||
_jack: jack.clone(),
|
||||
player,
|
||||
pool,
|
||||
editor,
|
||||
sampler,
|
||||
size: Measure::new(),
|
||||
midi_buf: vec![vec![];65536],
|
||||
note_buf: vec![],
|
||||
perf: PerfModel::default(),
|
||||
status: true,
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
has_clock!(|self: GrooveboxTui|self.player.clock());
|
||||
audio!(|self: GrooveboxTui, client, scope|{
|
||||
let t0 = self.perf.get_t0();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue