Arduino MIDI Library  Version 4.3
midi_Defs.h
Go to the documentation of this file.
1 
29 #pragma once
30 
31 #include "midi_Namespace.h"
32 
33 #if ARDUINO
34 #include <Arduino.h>
35 #else
36 #include <inttypes.h>
37 typedef uint8_t byte;
38 #endif
39 
41 
42 #define MIDI_LIBRARY_VERSION 0x040300
43 #define MIDI_LIBRARY_VERSION_MAJOR 4
44 #define MIDI_LIBRARY_VERSION_MINOR 3
45 #define MIDI_LIBRARY_VERSION_PATCH 0
46 
47 // -----------------------------------------------------------------------------
48 
49 #define MIDI_CHANNEL_OMNI 0
50 #define MIDI_CHANNEL_OFF 17 // and over
51 
52 #define MIDI_PITCHBEND_MIN -8192
53 #define MIDI_PITCHBEND_MAX 8191
54 
55 // -----------------------------------------------------------------------------
56 // Type definitions
57 
58 typedef byte StatusByte;
59 typedef byte DataByte;
60 typedef byte Channel;
61 typedef byte FilterMode;
62 
63 // -----------------------------------------------------------------------------
64 
67 {
68  InvalidType = 0x00,
69  NoteOff = 0x80,
70  NoteOn = 0x90,
71  AfterTouchPoly = 0xA0,
72  ControlChange = 0xB0,
73  ProgramChange = 0xC0,
75  PitchBend = 0xE0,
76  SystemExclusive = 0xF0,
78  SongPosition = 0xF2,
79  SongSelect = 0xF3,
80  TuneRequest = 0xF6,
81  Clock = 0xF8,
82  Start = 0xFA,
83  Continue = 0xFB,
84  Stop = 0xFC,
85  ActiveSensing = 0xFE,
86  SystemReset = 0xFF,
87 };
88 
89 // -----------------------------------------------------------------------------
90 
92 struct Thru
93 {
94  enum Mode
95  {
96  Off = 0,
97  Full = 1,
100  };
101 };
102 
106 enum __attribute__ ((deprecated)) MidiFilterMode
107 {
108  Off = Thru::Off,
109  Full = Thru::Full,
112 };
113 
114 // -----------------------------------------------------------------------------
115 
121 {
122  // High resolution Continuous Controllers MSB (+32 for LSB) ----------------
126  // CC3 undefined
131  Balance = 8,
132  // CC9 undefined
133  Pan = 10,
137  // CC14 undefined
138  // CC15 undefined
143 
145 
146  // Switches ----------------------------------------------------------------
147  Sustain = 64,
149  Sostenuto = 66,
150  SoftPedal = 67,
151  Legato = 68,
152  Hold = 69,
153 
154  // Low resolution continuous controllers -----------------------------------
170  // CC85 to CC90 undefined
171  Effects1 = 91,
172  Effects2 = 92,
173  Effects3 = 93,
174  Effects4 = 94,
175  Effects5 = 95,
178  NRPNLSB = 98,
179  NRPNMSB = 99,
180  RPNLSB = 100,
181  RPNMSB = 101,
182 
183  // Channel Mode messages ---------------------------------------------------
184  AllSoundOff = 120,
187  AllNotesOff = 123,
188  OmniModeOff = 124,
189  OmniModeOn = 125,
190  MonoModeOn = 126,
192 };
193 
194 struct RPN
195 {
197  {
198  PitchBendSensitivity = 0x0000,
199  ChannelFineTuning = 0x0001,
200  ChannelCoarseTuning = 0x0002,
201  SelectTuningProgram = 0x0003,
202  SelectTuningBank = 0x0004,
203  ModulationDepthRange = 0x0005,
204  NullFunction = (0x7f << 7) + 0x7f,
205  };
206 };
207 
208 // -----------------------------------------------------------------------------
209 
215 #define MIDI_CREATE_INSTANCE(Type, SerialPort, Name) \
216  midi::MidiInterface<Type> Name((Type&)SerialPort);
217 
218 #if defined(ARDUINO_SAM_DUE) || defined(USBCON)
219  // Leonardo, Due and other USB boards use Serial1 by default.
220  #define MIDI_CREATE_DEFAULT_INSTANCE() \
221  MIDI_CREATE_INSTANCE(HardwareSerial, Serial1, MIDI);
222 #else
223 
227  #define MIDI_CREATE_DEFAULT_INSTANCE() \
228  MIDI_CREATE_INSTANCE(HardwareSerial, Serial, MIDI);
229 #endif
230 
236 #define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, Settings) \
237  midi::MidiInterface<Type, Settings> Name((Type&)SerialPort);
238 
#define END_MIDI_NAMESPACE
Mode
Definition: midi_Defs.h:94
MidiControlChangeNumber
Enumeration of Control Change command numbers. See the detailed controllers numbers & description her...
Definition: midi_Defs.h:120
Synth: Brightness FX: Expander On/Off.
Definition: midi_Defs.h:159
Synth: Attack Time FX: EQ On/Off.
Definition: midi_Defs.h:158
System Real Time - System Reset.
Definition: midi_Defs.h:86
#define BEGIN_MIDI_NAMESPACE
Pitch Bend.
Definition: midi_Defs.h:75
Synth: Undefined FX: Special Effects On/Off.
Definition: midi_Defs.h:164
uint8_t byte
Definition: midi_Defs.h:37
Synth: Sound Variation FX: Exciter On/Off.
Definition: midi_Defs.h:155
Synth: Release Time FX: Distortion On/Off.
Definition: midi_Defs.h:157
MidiType
Definition: midi_Defs.h:66
Polyphonic AfterTouch.
Definition: midi_Defs.h:71
Synth: Vibrato Delay FX: Flange/Chorus On/Off.
Definition: midi_Defs.h:163
Celeste depth.
Definition: midi_Defs.h:174
Note Off.
Definition: midi_Defs.h:69
System Real Time - Timing Clock.
Definition: midi_Defs.h:81
Phaser depth.
Definition: midi_Defs.h:175
byte FilterMode
Definition: midi_Defs.h:61
Control Change / Channel Mode.
Definition: midi_Defs.h:72
System Common - MIDI Time Code Quarter Frame.
Definition: midi_Defs.h:77
System Real Time - Active Sensing.
Definition: midi_Defs.h:85
Tremolo depth.
Definition: midi_Defs.h:172
MIDI Library for the Arduino - Namespace declaration.
byte StatusByte
Definition: midi_Defs.h:58
Channel (monophonic) AfterTouch.
Definition: midi_Defs.h:74
Thru disabled (nothing passes through).
Definition: midi_Defs.h:96
Synth: Vibrato Rate FX: Delay On/Off.
Definition: midi_Defs.h:161
System Exclusive.
Definition: midi_Defs.h:76
For notifying errors.
Definition: midi_Defs.h:68
Definition: midi_Defs.h:92
Synth: Decay Time FX: Reverb On/Off.
Definition: midi_Defs.h:160
Registered Parameter Number (MSB)
Definition: midi_Defs.h:181
System Common - Song Position Pointer.
Definition: midi_Defs.h:78
enum __attribute__((deprecated)) MidiFilterMode
Definition: midi_Defs.h:106
Only the messages on the Input Channel will be sent back.
Definition: midi_Defs.h:98
Registered Parameter Number (LSB)
Definition: midi_Defs.h:180
byte Channel
Definition: midi_Defs.h:60
Non-Registered Parameter Number (MSB)
Definition: midi_Defs.h:179
Reverb send level.
Definition: midi_Defs.h:171
Definition: midi_Defs.h:133
System Real Time - Stop.
Definition: midi_Defs.h:84
System Real Time - Continue.
Definition: midi_Defs.h:83
Synth: Vibrato Depth FX: Pitch Transpose On/Off.
Definition: midi_Defs.h:162
Note On.
Definition: midi_Defs.h:70
System Real Time - Start.
Definition: midi_Defs.h:82
All the messages but the ones on the Input Channel will be sent back.
Definition: midi_Defs.h:99
System Common - Song Select.
Definition: midi_Defs.h:79
RegisteredParameterNumbers
Definition: midi_Defs.h:196
Synth: Harmonic Content FX: Compressor On/Off.
Definition: midi_Defs.h:156
System Common - Tune Request.
Definition: midi_Defs.h:80
Program Change.
Definition: midi_Defs.h:73
Non-Registered Parameter Number (LSB)
Definition: midi_Defs.h:178
Chorus send level.
Definition: midi_Defs.h:173
Fully enabled Thru (every incoming message is sent back).
Definition: midi_Defs.h:97
Definition: midi_Defs.h:194
byte DataByte
Definition: midi_Defs.h:59