1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2pub enum Message {
3 ChannelVoice {
4 channel: u8,
5 message: ChannelVoiceMessage,
6 },
7 SystemCommon(SystemCommonMessage),
8 RealTime(RealTimeMessage),
9 SystemExclusive,
10}
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq)]
13pub enum ChannelVoiceMessage {
14 NoteOff { note: u8, velocity: u8 },
15 NoteOn { note: u8, velocity: u8 },
16 PolyphonicPressure { note: u8, pressure: u8 },
17 ControlChange { control: u8, value: u8 },
18 ProgramChange { program: u8 },
19 ChannelPressure { pressure: u8 },
20 PitchBend { pitch_bend: u16 },
21}
22
23#[derive(Debug, Clone, Copy, PartialEq, Eq)]
24pub enum SystemCommonMessage {
25 MTCQuarterFrame { data: u8 },
26 SongPositionPointer { low: u8, high: u8 },
27 SongSelect { song: u8 },
28 Undefined1,
29 Undefined2,
30 TuneRequest,
31 EOX,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq)]
35pub enum RealTimeMessage {
36 TimingClock,
37 Undefined1,
38 Start,
39 Continue,
40 Stop,
41 Undefined2,
42 ActiveSensing,
43 SystemReset,
44}