wip: fixing refactor errors pt.1

This commit is contained in:
🪞👃🪞 2024-11-09 22:30:55 +01:00
parent 84aacfea82
commit a6d6f5f06d
3 changed files with 28 additions and 16 deletions

View file

@ -22,8 +22,11 @@ impl Scene {
}, },
_ => panic!("unexpected in scene '{name:?}': {edn:?}") _ => panic!("unexpected in scene '{name:?}': {edn:?}")
}); });
let scene = Self::new(name.unwrap_or(""), clips); Ok(Scene {
Ok(scene) name: Arc::new(name.unwrap_or("").to_string().into()),
color: ItemColor::random(),
clips,
})
} }
} }
@ -35,9 +38,13 @@ impl MixerTrack {
const SYM_LV2: &'static str = "lv2"; const SYM_LV2: &'static str = "lv2";
pub fn from_edn <'a, 'e> (jack: &Arc<RwLock<JackClient>>, args: &[Edn<'e>]) -> Usually<Self> { pub fn from_edn <'a, 'e> (jack: &Arc<RwLock<JackClient>>, args: &[Edn<'e>]) -> Usually<Self> {
let mut _gain = 0.0f64; let mut _gain = 0.0f64;
let mut track = Self::new("")?; let mut track = MixerTrack {
name: String::new(),
ports: JackPorts::default(),
devices: vec![],
};
#[allow(unused_mut)] #[allow(unused_mut)]
let mut devices: Vec<JackDevice> = vec![]; let mut devices: Vec<JackClient> = vec![];
edn!(edn in args { edn!(edn in args {
Edn::Map(map) => { Edn::Map(map) => {
if let Some(Edn::Str(n)) = map.get(&Edn::Key(Self::SYM_NAME)) { if let Some(Edn::Str(n)) = map.get(&Edn::Key(Self::SYM_NAME)) {
@ -81,7 +88,7 @@ impl MixerTrack {
} }
impl LV2Plugin { impl LV2Plugin {
pub fn from_edn <'e> (jack: &Arc<RwLock<JackClient>>, args: &[Edn<'e>]) -> Usually<JackDevice> { pub fn from_edn <'e> (jack: &Arc<RwLock<JackClient>>, args: &[Edn<'e>]) -> Usually<JackClient> {
let mut name = String::new(); let mut name = String::new();
let mut path = String::new(); let mut path = String::new();
edn!(edn in args { edn!(edn in args {
@ -100,7 +107,7 @@ impl LV2Plugin {
} }
impl Sampler { impl Sampler {
pub fn from_edn <'e> (jack: &Arc<RwLock<JackClient>>, args: &[Edn<'e>]) -> Usually<JackDevice> { pub fn from_edn <'e> (jack: &Arc<RwLock<JackClient>>, args: &[Edn<'e>]) -> Usually<Sampler> {
let mut name = String::new(); let mut name = String::new();
let mut dir = String::new(); let mut dir = String::new();
let mut samples = BTreeMap::new(); let mut samples = BTreeMap::new();
@ -126,7 +133,16 @@ impl Sampler {
}, },
_ => panic!("unexpected in sampler {name}: {edn:?}") _ => panic!("unexpected in sampler {name}: {edn:?}")
}); });
Self::new(jack, &name, Some(samples)) Ok(Sampler {
jack: jack.clone(),
name: name.into(),
mapped: samples,
unmapped: Default::default(),
voices: Default::default(),
ports: Default::default(),
buffer: Default::default(),
output_gain: 0.
})
} }
} }

View file

@ -148,7 +148,7 @@ pub struct Phrase {
/// MIDI message structural /// MIDI message structural
pub type PhraseData = Vec<Vec<MidiMessage>>; pub type PhraseData = Vec<Vec<MidiMessage>>;
#[derive(Default, Debug, Clone)] #[derive(Debug)]
pub struct Mixer { pub struct Mixer {
/// JACK client handle (needs to not be dropped for standalone mode to work). /// JACK client handle (needs to not be dropped for standalone mode to work).
pub jack: Arc<RwLock<JackClient>>, pub jack: Arc<RwLock<JackClient>>,
@ -159,30 +159,25 @@ pub struct Mixer {
} }
/// A mixer track. /// A mixer track.
#[derive(Default, Debug, Clone)] #[derive(Debug)]
pub struct MixerTrack { pub struct MixerTrack {
pub name: String, pub name: String,
/// Inputs and outputs of 1st and last device /// Inputs and outputs of 1st and last device
pub ports: JackPorts, pub ports: JackPorts,
/// Device chain /// Device chain
pub devices: Vec<JackDevice>, pub devices: Vec<JackClient>,
/// Device selector
pub device: usize,
} }
/// The sampler plugin plays sounds. /// The sampler plugin plays sounds.
#[derive(Default, Debug, Clone)] #[derive(Debug)]
pub struct Sampler { pub struct Sampler {
pub jack: Arc<RwLock<JackClient>>, pub jack: Arc<RwLock<JackClient>>,
pub name: String, pub name: String,
pub cursor: (usize, usize),
pub editing: Option<Arc<RwLock<Sample>>>,
pub mapped: BTreeMap<u7, Arc<RwLock<Sample>>>, pub mapped: BTreeMap<u7, Arc<RwLock<Sample>>>,
pub unmapped: Vec<Arc<RwLock<Sample>>>, pub unmapped: Vec<Arc<RwLock<Sample>>>,
pub voices: Arc<RwLock<Vec<Voice>>>, pub voices: Arc<RwLock<Vec<Voice>>>,
pub ports: JackPorts, pub ports: JackPorts,
pub buffer: Vec<Vec<f32>>, pub buffer: Vec<Vec<f32>>,
pub modal: Arc<Mutex<Option<Box<dyn Exit + Send>>>>,
pub output_gain: f32 pub output_gain: f32
} }

View file

@ -36,6 +36,7 @@ pub trait AudioEngine {
} }
} }
/// Wraps [Client] or [DynamicAsyncClient] in place. /// Wraps [Client] or [DynamicAsyncClient] in place.
#[derive(Debug)]
pub enum JackClient { pub enum JackClient {
/// Before activation. /// Before activation.
Inactive(Client), Inactive(Client),