mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
rewrite jack init
This commit is contained in:
parent
6c8f85ab84
commit
b2c9bfc0e2
19 changed files with 448 additions and 679 deletions
|
|
@ -30,7 +30,7 @@ pub trait HasSampler {
|
|||
}
|
||||
/// The sampler device plays sounds in response to MIDI notes.
|
||||
#[derive(Debug)] pub struct Sampler {
|
||||
pub jack: JackClient,
|
||||
pub jack: Jack,
|
||||
pub name: String,
|
||||
pub mapped: [Option<Arc<RwLock<Sample>>>;128],
|
||||
pub recording: Option<(usize, Arc<RwLock<Sample>>)>,
|
||||
|
|
@ -89,11 +89,11 @@ impl Default for Sampler {
|
|||
}
|
||||
impl Sampler {
|
||||
pub fn new (
|
||||
jack: &JackClient,
|
||||
jack: &Jack,
|
||||
name: impl AsRef<str>,
|
||||
midi_from: &[PortConnection],
|
||||
audio_from: &[&[PortConnection];2],
|
||||
audio_to: &[&[PortConnection];2],
|
||||
midi_from: &[PortConnect],
|
||||
audio_from: &[&[PortConnect];2],
|
||||
audio_to: &[&[PortConnect];2],
|
||||
) -> Usually<Self> {
|
||||
let name = name.as_ref();
|
||||
Ok(Self {
|
||||
|
|
@ -271,7 +271,7 @@ impl Sampler {
|
|||
let iterator = audio_ins.iter().zip(input_meter).zip(sample.channels.iter_mut());
|
||||
let mut length = 0;
|
||||
for ((input, meter), channel) in iterator {
|
||||
let slice = input.port.as_slice(scope);
|
||||
let slice = input.port().as_slice(scope);
|
||||
length = length.max(slice.len());
|
||||
let total: f32 = slice.iter().map(|x|x.abs()).sum();
|
||||
let count = slice.len() as f32;
|
||||
|
|
@ -281,7 +281,7 @@ impl Sampler {
|
|||
sample.end += length;
|
||||
} else {
|
||||
for (input, meter) in audio_ins.iter().zip(input_meter) {
|
||||
let slice = input.port.as_slice(scope);
|
||||
let slice = input.port().as_slice(scope);
|
||||
let total: f32 = slice.iter().map(|x|x.abs()).sum();
|
||||
let count = slice.len() as f32;
|
||||
*meter = 10. * (total / count).log10();
|
||||
|
|
@ -292,7 +292,7 @@ impl Sampler {
|
|||
pub fn process_midi_in (&mut self, scope: &ProcessScope) {
|
||||
let Sampler { midi_in, mapped, voices, .. } = self;
|
||||
if let Some(ref midi_in) = midi_in {
|
||||
for RawMidi { time, bytes } in midi_in.port.iter(scope) {
|
||||
for RawMidi { time, bytes } in midi_in.port().iter(scope) {
|
||||
if let LiveEvent::Midi { message, .. } = LiveEvent::parse(bytes).unwrap() {
|
||||
match message {
|
||||
MidiMessage::NoteOn { ref key, ref vel } => {
|
||||
|
|
@ -341,7 +341,7 @@ impl Sampler {
|
|||
let Sampler { ref mut audio_outs, buffer, .. } = self;
|
||||
for (i, port) in audio_outs.iter_mut().enumerate() {
|
||||
let buffer = &buffer[i];
|
||||
for (i, value) in port.port.as_mut_slice(scope).iter_mut().enumerate() {
|
||||
for (i, value) in port.port_mut().as_mut_slice(scope).iter_mut().enumerate() {
|
||||
*value = *buffer.get(i).unwrap_or(&0.0);
|
||||
}
|
||||
}
|
||||
|
|
@ -349,7 +349,7 @@ impl Sampler {
|
|||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
type MidiSample = (Option<u7>, Arc<RwLock<crate::Sample>>);
|
||||
//from_atom!("sampler" => |jack: &JackClient, args| -> crate::Sampler {
|
||||
//from_atom!("sampler" => |jack: &Jack, args| -> crate::Sampler {
|
||||
//let mut name = String::new();
|
||||
//let mut dir = String::new();
|
||||
//let mut samples = BTreeMap::new();
|
||||
|
|
@ -377,7 +377,7 @@ type MidiSample = (Option<u7>, Arc<RwLock<crate::Sample>>);
|
|||
//});
|
||||
//Self::new(jack, &name)
|
||||
//});
|
||||
//from_atom!("sample" => |(_jack, dir): (&JackClient, &str), args| -> MidiSample {
|
||||
//from_atom!("sample" => |(_jack, dir): (&Jack, &str), args| -> MidiSample {
|
||||
//let mut name = String::new();
|
||||
//let mut file = String::new();
|
||||
//let mut midi = None;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue