#[cfg(feature = "vst")]
pub mod vst;
pub trait MidiMessageLike {
fn is_midi(&self) -> bool;
fn bytes(&self) -> Option<&[u8]>;
}
pub trait MidiEventHandler {
fn process_midi_events<Message: MidiMessageLike>(&mut self, midi_messages: &[Message]);
}
pub struct NoopMidiEventHandler {}
impl Default for NoopMidiEventHandler {
fn default() -> Self {
Self::new()
}
}
impl NoopMidiEventHandler {
pub fn new() -> Self {
Self {}
}
}
impl MidiEventHandler for NoopMidiEventHandler {
fn process_midi_events<Message: MidiMessageLike>(&mut self, _midi_messages: &[Message]) {}
}
#[cfg(test)]
mod test {
use super::*;
struct Message {}
impl MidiMessageLike for Message {
fn is_midi(&self) -> bool {
false
}
fn bytes(&self) -> Option<&[u8]> {
None
}
}
#[test]
fn test_sanity_message() {
let message = Message {};
assert_eq!(message.is_midi(), false);
assert_eq!(message.bytes(), None);
}
#[test]
fn test_noop_midi_event_handler() {
let mut handler = super::NoopMidiEventHandler::default();
handler.process_midi_events::<Message>(&[]);
}
}