-
Notifications
You must be signed in to change notification settings - Fork 1
/
MidiBLEProtocol.h
executable file
·410 lines (401 loc) · 15.8 KB
/
MidiBLEProtocol.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
#pragma once
#include <BLEPeripheral.h>
#include <Arduino.h>
#ifndef DMIDIBLEUTIL_H
#define DMIDIBLEUTIL_H
// MIDI Channels
#define MIDI_CHANNEL_1 1
#define MIDI_CHANNEL_2 2
#define MIDI_CHANNEL_3 3
#define MIDI_CHANNEL_4 4
#define MIDI_CHANNEL_5 5
#define MIDI_CHANNEL_6 6
#define MIDI_CHANNEL_7 7
#define MIDI_CHANNEL_8 8
#define MIDI_CHANNEL_9 9
#define MIDI_CHANNEL_10 10
#define MIDI_CHANNEL_11 11
#define MIDI_CHANNEL_12 12
#define MIDI_CHANNEL_13 13
#define MIDI_CHANNEL_14 14
#define MIDI_CHANNEL_15 15
#define MIDI_CHANNEL_16 16
// MIDI Control Change (CC) Numbers
#define MIDI_CC_CONTROL_0 0
#define MIDI_CC_CONTROL_1 1
#define MIDI_CC_CONTROL_2 2
#define MIDI_CC_CONTROL_3 3
#define MIDI_CC_CONTROL_4 4
#define MIDI_CC_CONTROL_5 5
#define MIDI_CC_CONTROL_6 6
#define MIDI_CC_CONTROL_7 7
#define MIDI_CC_CONTROL_8 8
#define MIDI_CC_CONTROL_9 9
#define MIDI_CC_CONTROL_10 10
#define MIDI_CC_CONTROL_11 11
#define MIDI_CC_CONTROL_12 12
#define MIDI_CC_CONTROL_13 13
#define MIDI_CC_CONTROL_14 14
#define MIDI_CC_CONTROL_15 15
#define MIDI_CC_CONTROL_16 16
#define MIDI_CC_CONTROL_17 17
#define MIDI_CC_CONTROL_18 18
#define MIDI_CC_CONTROL_19 19
#define MIDI_CC_CONTROL_20 20
#define MIDI_CC_CONTROL_21 21
#define MIDI_CC_CONTROL_22 22
#define MIDI_CC_CONTROL_23 23
#define MIDI_CC_CONTROL_24 24
#define MIDI_CC_CONTROL_25 25
#define MIDI_CC_CONTROL_26 26
#define MIDI_CC_CONTROL_27 27
#define MIDI_CC_CONTROL_28 28
#define MIDI_CC_CONTROL_29 29
#define MIDI_CC_CONTROL_30 30
#define MIDI_CC_CONTROL_31 31
#define MIDI_CC_CONTROL_32 32
#define MIDI_CC_CONTROL_33 33
#define MIDI_CC_CONTROL_34 34
#define MIDI_CC_CONTROL_35 35
#define MIDI_CC_CONTROL_36 36
#define MIDI_CC_CONTROL_37 37
#define MIDI_CC_CONTROL_38 38
#define MIDI_CC_CONTROL_39 39
#define MIDI_CC_CONTROL_40 40
#define MIDI_CC_CONTROL_41 41
#define MIDI_CC_CONTROL_42 42
#define MIDI_CC_CONTROL_43 43
#define MIDI_CC_CONTROL_44 44
#define MIDI_CC_CONTROL_45 45
#define MIDI_CC_CONTROL_46 46
#define MIDI_CC_CONTROL_47 47
#define MIDI_CC_CONTROL_48 48
#define MIDI_CC_CONTROL_49 49
#define MIDI_CC_CONTROL_50 50
#define MIDI_CC_CONTROL_51 51
#define MIDI_CC_CONTROL_52 52
#define MIDI_CC_CONTROL_53 53
#define MIDI_CC_CONTROL_54 54
#define MIDI_CC_CONTROL_55 55
#define MIDI_CC_CONTROL_56 56
#define MIDI_CC_CONTROL_57 57
#define MIDI_CC_CONTROL_58 58
#define MIDI_CC_CONTROL_59 59
#define MIDI_CC_CONTROL_60 60
#define MIDI_CC_CONTROL_61 61
#define MIDI_CC_CONTROL_62 62
#define MIDI_CC_CONTROL_63 63
#define MIDI_CC_CONTROL_64 64
#define MIDI_CC_CONTROL_65 65
#define MIDI_CC_CONTROL_66 66
#define MIDI_CC_CONTROL_67 67
#define MIDI_CC_CONTROL_68 68
#define MIDI_CC_CONTROL_69 69
#define MIDI_CC_CONTROL_70 70
#define MIDI_CC_CONTROL_71 71
#define MIDI_CC_CONTROL_72 72
#define MIDI_CC_CONTROL_73 73
#define MIDI_CC_CONTROL_74 74
#define MIDI_CC_CONTROL_75 75
#define MIDI_CC_CONTROL_76 76
#define MIDI_CC_CONTROL_77 77
#define MIDI_CC_CONTROL_78 78
#define MIDI_CC_CONTROL_79 79
#define MIDI_CC_CONTROL_80 80
#define MIDI_CC_CONTROL_81 81
#define MIDI_CC_CONTROL_82 82
#define MIDI_CC_CONTROL_83 83
#define MIDI_CC_CONTROL_84 84
#define MIDI_CC_CONTROL_85 85
#define MIDI_CC_CONTROL_86 86
#define MIDI_CC_CONTROL_87 87
#define MIDI_CC_CONTROL_88 88
#define MIDI_CC_CONTROL_89 89
#define MIDI_CC_CONTROL_90 90
#define MIDI_CC_CONTROL_91 91
#define MIDI_CC_CONTROL_92 92
#define MIDI_CC_CONTROL_93 93
#define MIDI_CC_CONTROL_94 94
#define MIDI_CC_CONTROL_95 95
#define MIDI_CC_CONTROL_96 96
#define MIDI_CC_CONTROL_97 97
#define MIDI_CC_CONTROL_98 98
#define MIDI_CC_CONTROL_99 99
#define MIDI_CC_CONTROL_100 100
#define MIDI_CC_CONTROL_101 101
#define MIDI_CC_CONTROL_102 102
#define MIDI_CC_CONTROL_103 103
#define MIDI_CC_CONTROL_104 104
#define MIDI_CC_CONTROL_105 105
#define MIDI_CC_CONTROL_106 106
#define MIDI_CC_CONTROL_107 107
#define MIDI_CC_CONTROL_108 108
#define MIDI_CC_CONTROL_109 109
#define MIDI_CC_CONTROL_110 110
#define MIDI_CC_CONTROL_111 111
#define MIDI_CC_CONTROL_112 112
#define MIDI_CC_CONTROL_113 113
#define MIDI_CC_CONTROL_114 114
#define MIDI_CC_CONTROL_115 115
#define MIDI_CC_CONTROL_116 116
#define MIDI_CC_CONTROL_117 117
#define MIDI_CC_CONTROL_118 118
#define MIDI_CC_CONTROL_119 119
#define MIDI_CC_CONTROL_120 120
#define MIDI_CC_CONTROL_121 121
#define MIDI_CC_CONTROL_122 122
#define MIDI_CC_CONTROL_123 123
#define MIDI_CC_CONTROL_124 124
#define MIDI_CC_CONTROL_125 125
#define MIDI_CC_CONTROL_126 126
#define MIDI_CC_CONTROL_127 127
// MIDI Control Change (CC) Types - https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2
#define MIDI_CC_CONTROL_BANK_SELECT MIDI_CC_CONTROL_0
#define MIDI_CC_CONTROL_MODULATION_WHEEL MIDI_CC_CONTROL_1
#define MIDI_CC_CONTROL_BREATH_CONTROLLER MIDI_CC_CONTROL_2
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_3
#define MIDI_CC_CONTROL_FOOT_PEDAL MIDI_CC_CONTROL_4
#define MIDI_CC_CONTROL_PORTAMENTO_TIME MIDI_CC_CONTROL_5
#define MIDI_CC_CONTROL_DATA_ENTRY MIDI_CC_CONTROL_6
#define MIDI_CC_CONTROL_VOLUME MIDI_CC_CONTROL_7
#define MIDI_CC_CONTROL_BALANCE MIDI_CC_CONTROL_8
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_9
#define MIDI_CC_CONTROL_PAN_POSITION MIDI_CC_CONTROL_10
#define MIDI_CC_CONTROL_EXPRESSION MIDI_CC_CONTROL_11
#define MIDI_CC_CONTROL_EFFECT_CONTROL_1 MIDI_CC_CONTROL_12
#define MIDI_CC_CONTROL_EFFECT_CONTROL_2 MIDI_CC_CONTROL_13
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_14
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_15
#define MIDI_CC_CONTROL_GENERAL_PURPOSE_CONTROLLER_1 MIDI_CC_CONTROL_16
#define MIDI_CC_CONTROL_GENERAL_PURPOSE_CONTROLLER_2 MIDI_CC_CONTROL_17
#define MIDI_CC_CONTROL_GENERAL_PURPOSE_CONTROLLER_3 MIDI_CC_CONTROL_18
#define MIDI_CC_CONTROL_GENERAL_PURPOSE_CONTROLLER_4 MIDI_CC_CONTROL_19
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_20
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_21
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_22
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_23
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_24
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_25
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_26
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_27
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_28
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_29
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_30
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_31
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_0 MIDI_CC_CONTROL_32
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_1 MIDI_CC_CONTROL_33
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_2 MIDI_CC_CONTROL_34
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_3 MIDI_CC_CONTROL_35
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_4 MIDI_CC_CONTROL_36
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_5 MIDI_CC_CONTROL_37
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_6 MIDI_CC_CONTROL_38
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_7 MIDI_CC_CONTROL_39
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_8 MIDI_CC_CONTROL_40
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_9 MIDI_CC_CONTROL_41
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_10 MIDI_CC_CONTROL_42
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_11 MIDI_CC_CONTROL_43
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_12 MIDI_CC_CONTROL_44
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_13 MIDI_CC_CONTROL_45
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_14 MIDI_CC_CONTROL_46
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_15 MIDI_CC_CONTROL_47
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_16 MIDI_CC_CONTROL_48
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_17 MIDI_CC_CONTROL_49
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_18 MIDI_CC_CONTROL_50
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_19 MIDI_CC_CONTROL_51
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_20 MIDI_CC_CONTROL_52
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_21 MIDI_CC_CONTROL_53
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_22 MIDI_CC_CONTROL_54
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_23 MIDI_CC_CONTROL_55
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_24 MIDI_CC_CONTROL_56
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_25 MIDI_CC_CONTROL_57
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_26 MIDI_CC_CONTROL_58
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_27 MIDI_CC_CONTROL_59
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_28 MIDI_CC_CONTROL_60
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_29 MIDI_CC_CONTROL_61
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_30 MIDI_CC_CONTROL_62
#define MIDI_CC_CONTROL_LSB_FOR_CONTROL_31 MIDI_CC_CONTROL_63
#define MIDI_CC_CONTROL_DAMPER_PEDAL_ON_OFF MIDI_CC_CONTROL_64
#define MIDI_CC_CONTROL_PORTAMENTO_ON_OFF MIDI_CC_CONTROL_65
#define MIDI_CC_CONTROL_SOSTENUTO_ON_OFF MIDI_CC_CONTROL_66
#define MIDI_CC_CONTROL_SOFT_PEDAL_ON_OFF MIDI_CC_CONTROL_67
#define MIDI_CC_CONTROL_LEGATO_FOOTSWITCH MIDI_CC_CONTROL_68
#define MIDI_CC_CONTROL_HOLD_2 MIDI_CC_CONTROL_69
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_1 MIDI_CC_CONTROL_70
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_2 MIDI_CC_CONTROL_71
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_3 MIDI_CC_CONTROL_72
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_4 MIDI_CC_CONTROL_73
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_5 MIDI_CC_CONTROL_74
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_6 MIDI_CC_CONTROL_75
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_7 MIDI_CC_CONTROL_76
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_8 MIDI_CC_CONTROL_77
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_9 MIDI_CC_CONTROL_78
#define MIDI_CC_CONTROL_SOUND_CONTROLLER_10 MIDI_CC_CONTROL_79
#define MIDI_CC_CONTROL_GENERAL_PURPOSE_CONTROLLER_5 MIDI_CC_CONTROL_80
#define MIDI_CC_CONTROL_GENERAL_PURPOSE_CONTROLLER_6 MIDI_CC_CONTROL_81
#define MIDI_CC_CONTROL_GENERAL_PURPOSE_CONTROLLER_7 MIDI_CC_CONTROL_82
#define MIDI_CC_CONTROL_GENERAL_PURPOSE_CONTROLLER_8 MIDI_CC_CONTROL_83
#define MIDI_CC_CONTROL_PORTAMENTO_CONTROL MIDI_CC_CONTROL_84
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_85
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_86
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_87
#define MIDI_CC_CONTROL_HIGH_RESOLUTION_VELOCITY_PREFIX MIDI_CC_CONTROL_88
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_89
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_90
#define MIDI_CC_CONTROL_EFFECT_1_DEPTH MIDI_CC_CONTROL_91
#define MIDI_CC_CONTROL_EFFECT_2_DEPTH MIDI_CC_CONTROL_92
#define MIDI_CC_CONTROL_EFFECT_3_DEPTH MIDI_CC_CONTROL_93
#define MIDI_CC_CONTROL_EFFECT_4_DEPTH MIDI_CC_CONTROL_94
#define MIDI_CC_CONTROL_EFFECT_5_DEPTH MIDI_CC_CONTROL_95
#define MIDI_CC_CONTROL_DATA_INCREMENT MIDI_CC_CONTROL_96
#define MIDI_CC_CONTROL_DATA_DECREMENT MIDI_CC_CONTROL_97
#define MIDI_CC_CONTROL_NON_REGISTERED_PARAM_LSB MIDI_CC_CONTROL_98
#define MIDI_CC_CONTROL_NON_REGISTERED_PARAM_MSB MIDI_CC_CONTROL_99
#define MIDI_CC_CONTROL_REGISTERED_PARAM_LSB MIDI_CC_CONTROL_100
#define MIDI_CC_CONTROL_REGISTERED_PARAM_MSB MIDI_CC_CONTROL_101
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_102
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_103
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_104
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_105
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_106
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_107
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_108
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_109
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_110
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_111
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_102
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_113
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_114
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_115
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_116
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_117
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_118
//#define MIDI_CC_CONTROL_UNDEFINED MIDI_CC_CONTROL_119
#define MIDI_CC_CONTROL_CHANNEL_SOUND_OFF MIDI_CC_CONTROL_120
#define MIDI_CC_CONTROL_CHANNEL_RESET_CONTROLLERS MIDI_CC_CONTROL_121
#define MIDI_CC_CONTROL_CHANNEL_LOCAL_CONTROL_ON_OFF MIDI_CC_CONTROL_122
#define MIDI_CC_CONTROL_ALL_NOTES_OFF MIDI_CC_CONTROL_123
#define MIDI_CC_CONTROL_OMNI_MODE_OFF MIDI_CC_CONTROL_124
#define MIDI_CC_CONTROL_OMNI_MODE_ON MIDI_CC_CONTROL_125
#define MIDI_CC_CONTROL_MONO_MODE_ON MIDI_CC_CONTROL_126
#define MIDI_CC_CONTROL_POLY_MODE_ON MIDI_CC_CONTROL_127
// MIDI Notes
#define MIDI_NOTE_A0 21
#define MIDI_NOTE_Bb0 22
#define MIDI_NOTE_B0 23
#define MIDI_NOTE_C1 24
#define MIDI_NOTE_Db1 25
#define MIDI_NOTE_D1 26
#define MIDI_NOTE_Eb1 27
#define MIDI_NOTE_E1 28
#define MIDI_NOTE_F1 29
#define MIDI_NOTE_Gb1 30
#define MIDI_NOTE_G1 31
#define MIDI_NOTE_Ab1 32
#define MIDI_NOTE_A1 33
#define MIDI_NOTE_Bb1 34
#define MIDI_NOTE_B1 35
#define MIDI_NOTE_C2 36
#define MIDI_NOTE_Db2 37
#define MIDI_NOTE_D2 38
#define MIDI_NOTE_Eb2 39
#define MIDI_NOTE_E2 40
#define MIDI_NOTE_F2 41
#define MIDI_NOTE_Gb2 42
#define MIDI_NOTE_G2 43
#define MIDI_NOTE_Ab2 44
#define MIDI_NOTE_A2 45
#define MIDI_NOTE_Bb2 46
#define MIDI_NOTE_B2 47
#define MIDI_NOTE_C3 48
#define MIDI_NOTE_Db3 49
#define MIDI_NOTE_D3 50
#define MIDI_NOTE_Eb3 51
#define MIDI_NOTE_E3 52
#define MIDI_NOTE_F3 53
#define MIDI_NOTE_Gb3 54
#define MIDI_NOTE_G3 55
#define MIDI_NOTE_Ab3 56
#define MIDI_NOTE_A3 57
#define MIDI_NOTE_Bb3 58
#define MIDI_NOTE_B3 59
#define MIDI_NOTE_C4 60
#define MIDI_NOTE_Db4 61
#define MIDI_NOTE_D4 62
#define MIDI_NOTE_Eb4 63
#define MIDI_NOTE_E4 64
#define MIDI_NOTE_F4 65
#define MIDI_NOTE_Gb4 66
#define MIDI_NOTE_G4 67
#define MIDI_NOTE_Ab4 68
#define MIDI_NOTE_A4 69
#define MIDI_NOTE_Bb4 70
#define MIDI_NOTE_B4 71
#define MIDI_NOTE_C5 72
#define MIDI_NOTE_Db5 73
#define MIDI_NOTE_D5 74
#define MIDI_NOTE_Eb5 75
#define MIDI_NOTE_E5 76
#define MIDI_NOTE_F5 77
#define MIDI_NOTE_Gb5 78
#define MIDI_NOTE_G5 79
#define MIDI_NOTE_Ab5 80
#define MIDI_NOTE_A5 81
#define MIDI_NOTE_Bb5 82
#define MIDI_NOTE_B5 83
#define MIDI_NOTE_C6 84
#define MIDI_NOTE_Db6 85
#define MIDI_NOTE_D6 86
#define MIDI_NOTE_Eb6 87
#define MIDI_NOTE_E6 88
#define MIDI_NOTE_F6 89
#define MIDI_NOTE_Gb6 90
#define MIDI_NOTE_G6 91
#define MIDI_NOTE_Ab6 92
#define MIDI_NOTE_A6 93
#define MIDI_NOTE_Bb6 94
#define MIDI_NOTE_B6 95
#define MIDI_NOTE_C7 96
#define MIDI_NOTE_Db7 97
#define MIDI_NOTE_D7 98
#define MIDI_NOTE_Eb7 99
#define MIDI_NOTE_E7 100
#define MIDI_NOTE_F7 101
#define MIDI_NOTE_Gb7 102
#define MIDI_NOTE_G7 103
#define MIDI_NOTE_Ab7 104
#define MIDI_NOTE_A7 105
#define MIDI_NOTE_Bb7 106
#define MIDI_NOTE_B7 107
#define MIDI_NOTE_C8 108
#define MIDI_NOTE_Db8 109
#define MIDI_NOTE_D8 110
#define MIDI_NOTE_Eb8 111
#define MIDI_NOTE_E8 112
#define MIDI_NOTE_F8 113
#define MIDI_NOTE_Gb8 114
#define MIDI_NOTE_G8 115
#define MIDI_NOTE_Ab8 116
#define MIDI_NOTE_A8 117
#define MIDI_NOTE_Bb8 118
#define MIDI_NOTE_B8 119
#define MIDI_NOTE_C9 120
#define MIDI_NOTE_Db9 121
#define MIDI_NOTE_D9 122
#define MIDI_NOTE_Eb9 123
#define MIDI_NOTE_E9 124
#define MIDI_NOTE_F9 125
#define MIDI_NOTE_Gb9 126
#define MIDI_NOTE_G9 127
struct MidiBlePacket {
byte *data;
int size;
};
class MidiBLEProtocol {
private:
static byte *generateHeaderBytes();
public:
static MidiBlePacket *generateNoteOnOffPacket(int channelNumber, int noteNumber, bool onOff);
static MidiBlePacket *generateControlChangePacket(int channelNumber, int controlNumber, int controlPosition);
static void logMidiPacket(MidiBlePacket * packet);
};
#endif