use crate::*; /// Running JACK [AsyncClient] with maximum type erasure. /// /// One [Box] contains function that handles [JackEvent]s. /// /// Another [Box] containing a function that handles realtime IO. /// /// That's all it knows about them. pub type DynamicAsyncClient<'j> = AsyncClient, DynamicAudioHandler<'j>>; /// Notification handler wrapper for [BoxedAudioHandler]. pub type DynamicAudioHandler<'j> = ClosureProcessHandler<(), BoxedAudioHandler<'j>>; /// Boxed realtime callback. pub type BoxedAudioHandler<'j> = Box Control + Send + Sync + 'j>; /// Notification handler wrapper for [BoxedJackEventHandler]. pub type DynamicNotifications<'j> = JackNotify>; /// Boxed [JackEvent] callback. pub type BoxedJackEventHandler<'j> = Box; pub type MidiData = Vec>; pub type ClipPool = Vec>>; pub type CollectedMidiInput<'a> = Vec, MidiError>)>>; pub type SceneWith<'a, T> = (usize, &'a Scene, usize, usize, T); pub type MidiSample = (Option, Arc>); /// Collection of interaction modes. pub type Modes = Arc, Arc>>>>>; /// Collection of input bindings. pub type Binds = Arc, Bind>>>>; /// Collection of view definitions. pub type Views = Arc, Arc>>>;