diff --git a/crates/edn/src/lib.rs b/crates/edn/src/lib.rs index 28b2d67b..a764bfbc 100644 --- a/crates/edn/src/lib.rs +++ b/crates/edn/src/lib.rs @@ -1,4 +1,4 @@ -use tek::{*, jack::*}; +use tek::{*, jack::*, plugin::*, audio::*}; use std::sync::{Arc, RwLock}; use std::collections::BTreeMap; diff --git a/crates/tek/src/audio.rs b/crates/tek/src/audio.rs index 24900710..650bb769 100644 --- a/crates/tek/src/audio.rs +++ b/crates/tek/src/audio.rs @@ -5,5 +5,9 @@ mod audio_in; mod audio_out; mod sampler; -pub(crate) use sampler::*; +pub(crate) use self::sampler::*; pub use self::sampler::{Sampler, Sample, Voice}; + +mod mixer; +pub(crate) use self::mixer::*; +pub use self::mixer::{Mixer, MixerTrack, MixerTrackDevice}; diff --git a/crates/tek/src/audio/channel.rs b/crates/tek/src/audio/channel.rs deleted file mode 100644 index b850147a..00000000 --- a/crates/tek/src/audio/channel.rs +++ /dev/null @@ -1,27 +0,0 @@ -use crate::*; - -pub enum MixerTrackCommand {} - -/// A mixer track. -#[derive(Debug)] -pub struct MixerTrack { - pub name: String, - /// Inputs of 1st device - pub audio_ins: Vec>, - /// Outputs of last device - pub audio_outs: Vec>, - /// Device chain - pub devices: Vec>, -} - -//impl MixerTrackDevice for LV2Plugin {} - -pub trait MixerTrackDevice: Debug + Send + Sync { - fn boxed (self) -> Box where Self: Sized + 'static { - Box::new(self) - } -} - -impl MixerTrackDevice for Sampler {} - -impl MixerTrackDevice for Plugin {} diff --git a/crates/tek/src/audio/mixer.rs b/crates/tek/src/audio/mixer.rs index a0ac9366..0ec986c9 100644 --- a/crates/tek/src/audio/mixer.rs +++ b/crates/tek/src/audio/mixer.rs @@ -8,8 +8,30 @@ pub struct Mixer { pub selected_track: usize, pub selected_column: usize, } -pub struct MixerAudio { - model: Arc> +audio!(|self: Mixer, _client, _scope|Control::Continue); + +pub enum MixerTrackCommand {} + +/// A mixer track. +#[derive(Debug)] +pub struct MixerTrack { + pub name: String, + /// Inputs of 1st device + pub audio_ins: Vec>, + /// Outputs of last device + pub audio_outs: Vec>, + /// Device chain + pub devices: Vec>, } -from!(|mode: &Arc>| MixerAudio = Self { model: model.clone() }); -audio!(|self: MixerAudio, _, _|Control::Continue); + +//impl MixerTrackDevice for LV2Plugin {} + +pub trait MixerTrackDevice: Debug + Send + Sync { + fn boxed (self) -> Box where Self: Sized + 'static { + Box::new(self) + } +} + +impl MixerTrackDevice for Sampler {} + +impl MixerTrackDevice for Plugin {} diff --git a/crates/tek/src/lib.rs b/crates/tek/src/lib.rs index d25ba66c..34c1f2cb 100644 --- a/crates/tek/src/lib.rs +++ b/crates/tek/src/lib.rs @@ -2,30 +2,27 @@ #![allow(clippy::unit_arg)] pub mod core; pub use self::core::*; + pub mod time; pub(crate) use self::time::*; + pub mod space; pub(crate) use self::space::*; -pub mod tui; pub(crate) use self::tui::*; -pub use tui::{Tui, TransportTui, SequencerTui, SamplerTui, GrooveboxTui, ArrangerTui}; +pub mod tui; pub(crate) use self::tui::*; pub use tui::*; -pub mod jack; pub(crate) use self::jack::*; -pub use jack::JackClient; +pub mod jack; pub(crate) use self::jack::*; pub use self::jack::*; -pub mod midi; pub(crate) use self::midi::*; +pub mod midi; pub(crate) use self::midi::*; -pub mod audio; pub(crate) use self::audio::*; -pub use audio::{Sampler, Sample, Voice}; +pub mod audio; pub(crate) use self::audio::*; pub use self::audio::*; -//pub mod plugin; pub(crate) use self::plugin::*; +pub mod plugin; pub(crate) use self::plugin::*; pub use self::plugin::*; -pub use ::better_panic; -pub(crate) use better_panic::{Settings, Verbosity}; +pub use ::better_panic; pub(crate) use better_panic::{Settings, Verbosity}; -pub use ::atomic_float; -pub(crate) use atomic_float::*; +pub use ::atomic_float; pub(crate) use atomic_float::*; pub(crate) use std::sync::{Arc, Mutex, RwLock}; -#[allow(unused)] pub(crate) use std::sync::atomic::Ordering; +pub(crate) use std::sync::atomic::Ordering; pub(crate) use std::sync::atomic::{AtomicBool, AtomicUsize}; pub(crate) use std::collections::BTreeMap; pub(crate) use std::marker::PhantomData; @@ -36,30 +33,27 @@ pub(crate) use std::time::Duration; pub(crate) use std::io::{Stdout, stdout}; pub(crate) use std::ops::{Add, Sub, Mul, Div, Rem}; pub(crate) use std::cmp::{Ord, Eq, PartialEq}; -pub(crate) use std::fmt::{Debug, Display}; +pub(crate) use std::fmt::{Debug, Display, Formatter}; pub use ::crossterm; pub(crate) use crossterm::{ExecutableCommand}; pub(crate) use crossterm::terminal::{EnterAlternateScreen, LeaveAlternateScreen, enable_raw_mode, disable_raw_mode}; pub(crate) use crossterm::event::{KeyCode, KeyModifiers, KeyEvent, KeyEventKind, KeyEventState}; -pub use ::ratatui; -pub(crate) use ratatui::{ +pub use ::ratatui; pub(crate) use ratatui::{ prelude::{Style, Color, Buffer}, style::{Stylize, Modifier}, backend::{Backend, CrosstermBackend, ClearType} }; -pub use ::midly::{self, num::u7}; -pub(crate) use ::midly::{ +pub use ::midly::{self, num::u7}; pub(crate) use ::midly::{ Smf, MidiMessage, TrackEventKind, live::LiveEvent, }; -pub use ::palette; -pub(crate) use ::palette::{ +pub use ::palette; pub(crate) use ::palette::{ *, convert::*, okhsl::* diff --git a/crates/tek/src/plugin.rs b/crates/tek/src/plugin.rs index efbe4cd0..9f347709 100644 --- a/crates/tek/src/plugin.rs +++ b/crates/tek/src/plugin.rs @@ -1,6 +1,8 @@ -pub(crate) mod lv2; pub(crate) use lv2::*; use crate::*; +pub mod lv2; pub(crate) use lv2::*; +pub use self::lv2::LV2Plugin; + /// A plugin device. #[derive(Debug)] pub struct Plugin { @@ -22,12 +24,12 @@ pub struct Plugin { pub enum PluginKind { #[default] None, LV2(LV2Plugin), - VST2 { instance: ::vst::host::PluginInstance }, + VST2 { instance: () /*::vst::host::PluginInstance*/ }, VST3, } impl Debug for PluginKind { - fn fmt (&self, f: &mut Formatter<'_>) -> std::result::Result<(), Error> { + fn fmt (&self, f: &mut Formatter<'_>) -> std::result::Result<(), std::fmt::Error> { write!(f, "{}", match self { Self::None => "(none)", Self::LV2(_) => "LV2", @@ -77,7 +79,7 @@ impl Plugin { pub struct PluginAudio(Arc>); from!(|model: &Arc>| PluginAudio = Self(model.clone())); -audio!(|self: PluginAudio, client_, _scope|{ +audio!(|self: PluginAudio, client, scope|{ let state = &mut*self.0.write().unwrap(); match state.plugin.as_mut() { Some(PluginKind::LV2(LV2Plugin {