midi_codec/
message.rs

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}