use std::sync::Arc;
use crate::soundfont::SoundfontBase;
#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum KeyNoteEvent {
On(u8),
Off,
AllOff,
AllKilled,
}
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum ChannelConfigEvent {
#[cfg_attr(feature = "serde", serde(skip))]
SetSoundfonts(Vec<Arc<dyn SoundfontBase>>),
SetLayerCount(Option<usize>),
SetPercussionMode(bool),
}
#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum ChannelAudioEvent {
NoteOn { key: u8, vel: u8 },
NoteOff { key: u8 },
AllNotesOff,
AllNotesKilled,
ResetControl,
Control(ControlEvent),
ProgramChange(u8),
SystemReset,
}
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum ChannelEvent {
Audio(ChannelAudioEvent),
Config(ChannelConfigEvent),
}
#[derive(Clone, Copy, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum ControlEvent {
Raw(u8, u8),
PitchBendSensitivity(f32),
PitchBendValue(f32),
PitchBend(f32),
FineTune(f32),
CoarseTune(f32),
}