MostlyHarmless 0.0.1
Loading...
Searching...
No Matches
mostlyharmless_MidiEvent.h
Go to the documentation of this file.
1#ifndef MOSTLY_HARMLESS_MIDI_EVENT
2#define MOSTLY_HARMLESS_MIDI_EVENT
3#include <variant>
4#include <optional>
8 struct NoteOn final {
9 std::uint8_t channel;
10 std::uint8_t note;
11 double velocity;
12 };
13
15 struct NoteOff final {
16 std::uint8_t channel;
17 std::uint8_t note;
18 double velocity;
19 };
20
22 struct PolyAftertouch final {
23 std::uint8_t channel;
24 std::uint8_t note;
25 std::uint8_t pressure;
26 };
27
29 struct ControlChange final {
30 std::uint8_t channel;
31 std::uint8_t controllerNumber;
32 std::uint8_t data;
33 };
34
36 struct ProgramChange final {
37 std::uint8_t channel;
38 std::uint8_t programNumber;
39 };
40
42 struct ChannelAftertouch final {
43 std::uint8_t channel;
44 std::uint8_t pressure;
45 };
46
48 struct PitchWheel final {
49 std::uint8_t channel;
50 double value;
51 };
52
54 using MidiEvent = std::variant<NoteOn, NoteOff, PolyAftertouch, ControlChange, ProgramChange, ChannelAftertouch, PitchWheel>;
55
57 auto parse(std::uint8_t b0, std::uint8_t b1, std::uint8_t b2) -> std::optional<MidiEvent>;
58} // namespace mostly_harmless::events::midi
59
60#endif
Definition mostlyharmless_MidiEvent.h:6
auto parse(std::uint8_t b0, std::uint8_t b1, std::uint8_t b2) -> std::optional< MidiEvent >
std::variant< NoteOn, NoteOff, PolyAftertouch, ControlChange, ProgramChange, ChannelAftertouch, PitchWheel > MidiEvent
Definition mostlyharmless_MidiEvent.h:54
Definition mostlyharmless_MidiEvent.h:42
std::uint8_t pressure
Definition mostlyharmless_MidiEvent.h:44
std::uint8_t channel
Definition mostlyharmless_MidiEvent.h:43
Definition mostlyharmless_MidiEvent.h:29
std::uint8_t data
Definition mostlyharmless_MidiEvent.h:32
std::uint8_t controllerNumber
Definition mostlyharmless_MidiEvent.h:31
std::uint8_t channel
Definition mostlyharmless_MidiEvent.h:30
Definition mostlyharmless_MidiEvent.h:15
std::uint8_t channel
Definition mostlyharmless_MidiEvent.h:16
std::uint8_t note
Definition mostlyharmless_MidiEvent.h:17
double velocity
Definition mostlyharmless_MidiEvent.h:18
Definition mostlyharmless_MidiEvent.h:8
std::uint8_t channel
Definition mostlyharmless_MidiEvent.h:9
double velocity
Definition mostlyharmless_MidiEvent.h:11
std::uint8_t note
Definition mostlyharmless_MidiEvent.h:10
Definition mostlyharmless_MidiEvent.h:48
std::uint8_t channel
Definition mostlyharmless_MidiEvent.h:49
double value
Definition mostlyharmless_MidiEvent.h:50
Definition mostlyharmless_MidiEvent.h:22
std::uint8_t pressure
Definition mostlyharmless_MidiEvent.h:25
std::uint8_t note
Definition mostlyharmless_MidiEvent.h:24
std::uint8_t channel
Definition mostlyharmless_MidiEvent.h:23
Definition mostlyharmless_MidiEvent.h:36
std::uint8_t programNumber
Definition mostlyharmless_MidiEvent.h:38
std::uint8_t channel
Definition mostlyharmless_MidiEvent.h:37