mod seq_audio; pub use self::seq_audio::*; mod seq_clip; pub use self::seq_clip::*; mod seq_launch; pub use self::seq_launch::*; mod seq_model; pub use self::seq_model::*; mod seq_view; pub use self::seq_view::*; #[cfg(test)] #[test] pub fn test_midi_clip () { use crate::*; let clip = MidiClip::stop_all(); println!("{clip:?}"); let clip = MidiClip::default(); let mut clip = MidiClip::new("clip", true, 1, None, None); clip.set_length(96); clip.toggle_loop(); clip.record_event(12, MidiMessage::NoteOn { key: 36.into(), vel: 100.into() }); assert!(clip.contains_note_on(36.into(), 6, 18)); assert_eq!(&clip.notes, &clip.duplicate().notes); let clip = std::sync::Arc::new(clip); assert_eq!(clip.clone(), clip); } #[cfg(test)] #[test] fn test_midi_play () { use crate::*; let sequencer = Sequencer::default(); println!("{sequencer:?}"); }