Control Surface
main
MIDI Control Surface library for Arduino
Loading...
Searching...
No Matches
src
MIDI_Interfaces
USBMIDI
USBMIDI.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <
AH/Containers/Array.hpp
>
4
#include <AH/STL/cstdint>
5
#include <Settings/NamespaceSettings.hpp>
6
7
#ifdef ARDUINO_ARCH_ESP32
8
#include <esp_arduino_version.h>
9
#include <sdkconfig.h>
10
#endif
11
12
BEGIN_CS_NAMESPACE
13
14
inline
AH::Array<uint8_t, 4>
u32_to_bytes
(uint32_t u) {
15
return
{{
16
uint8_t((u >> 0) & 0xFF),
17
uint8_t((u >> 8) & 0xFF),
18
uint8_t((u >> 16) & 0xFF),
19
uint8_t((u >> 24) & 0xFF),
20
}};
21
}
22
23
inline
uint32_t
bytes_to_u32
(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3) {
24
return
(uint32_t(b0) << 0) |
//
25
(uint32_t(b1) << 8) |
//
26
(uint32_t(b2) << 16) |
//
27
(uint32_t(b3) << 24);
//
28
}
29
30
inline
uint32_t
bytes_to_u32
(
AH::Array<uint8_t, 4>
b) {
31
return
(uint32_t(b.
data
[0]) << 0) |
//
32
(uint32_t(b.
data
[1]) << 8) |
//
33
(uint32_t(b.
data
[2]) << 16) |
//
34
(uint32_t(b.
data
[3]) << 24);
//
35
}
36
37
END_CS_NAMESPACE
38
39
#ifdef ARDUINO
40
41
#if defined(TEENSYDUINO)
42
43
#if defined(__AVR__)
/* Teensy 2.x */
44
#include "
USBMIDI_Teensy2.hpp
"
45
BEGIN_CS_NAMESPACE
46
using
USBDeviceMIDIBackend
=
Teensy2_USBDeviceMIDIBackend
;
47
END_CS_NAMESPACE
48
49
#elif defined(__MK20DX128__)
/* Teensy 3.0 */
\
50
|| defined(__MK20DX256__)
/* Teensy 3.1/3.2 */
\
51
|| defined(__MK64FX512__)
/* Teensy 3.5 */
\
52
|| defined(__MK66FX1M0__)
/* Teensy 3.6 */
53
#include "
USBMIDI_Teensy3.hpp
"
54
BEGIN_CS_NAMESPACE
55
using
USBDeviceMIDIBackend
=
Teensy3_USBDeviceMIDIBackend
;
56
END_CS_NAMESPACE
57
58
#elif defined(__IMXRT1062__) || defined(__IMXRT1052__)
/* Teensy 4.0 */
59
#include "
USBMIDI_Teensy4.hpp
"
60
BEGIN_CS_NAMESPACE
61
using
USBDeviceMIDIBackend
=
Teensy4_USBDeviceMIDIBackend
;
62
END_CS_NAMESPACE
63
64
#elif defined(__MKL26Z64__)
/* Teensy LC */
65
#include "
USBMIDI_TeensyLC.hpp
"
66
BEGIN_CS_NAMESPACE
67
using
USBDeviceMIDIBackend
=
TeensyLC_USBDeviceMIDIBackend
;
68
END_CS_NAMESPACE
69
70
#else
71
#warning "Unknown Teensy board, please open an issue on GitHub" \
72
"https://github.com/tttapa/Arduino-Helpers"
73
// Fall back to the MIDIUSB library and hope for the best
74
#include "
USBMIDI_MIDIUSB.hpp
"
75
BEGIN_CS_NAMESPACE
76
using
USBDeviceMIDIBackend
=
MIDIUSB_USBDeviceMIDIBackend
;
77
END_CS_NAMESPACE
78
#endif
79
80
#elif defined(ARDUINO_ARCH_ESP32) && (ESP_ARDUINO_VERSION_MAJOR >= 3) && \
81
CONFIG_IDF_TARGET_ESP32S3
82
83
#ifndef ARDUINO_USB_MODE
84
#error "ESP32S3 expects ARDUINO_USB_MODE to be set"
85
#endif
86
#if ARDUINO_USB_MODE != 1
87
#include "
USBMIDI_ESP32.hpp
"
88
BEGIN_CS_NAMESPACE
89
using
USBDeviceMIDIBackend
=
ESP32_USBDeviceMIDIBackend
;
90
END_CS_NAMESPACE
91
#else
92
#define CS_USB_MIDI_NOT_SUPPORTED
93
#pragma message( \
94
"ESP32S3: USB MIDI not enabled. Set the Tools > USB Type setting to \"USB-OTG\" to enable it.")
95
#endif
96
97
#elif defined(ARDUINO_ARCH_MBED)
98
99
#include "
USBMIDI_Arduino_mbed.hpp
"
100
BEGIN_CS_NAMESPACE
101
using
USBDeviceMIDIBackend
=
Arduino_mbed_USBDeviceMIDIBackend
;
102
END_CS_NAMESPACE
103
104
#elif defined(ARDUINO_ARCH_RP2040) && defined(USE_TINYUSB)
105
106
#include "
USBMIDI_Adafruit_TinyUSB.hpp
"
107
BEGIN_CS_NAMESPACE
108
using
USBDeviceMIDIBackend
=
Adafruit_TinyUSB_USBDeviceMIDIBackend
;
109
END_CS_NAMESPACE
110
111
#else
112
113
#include <
AH/Arduino-Wrapper.h
>
114
#ifdef USBCON
115
#include "
USBMIDI_MIDIUSB.hpp
"
116
BEGIN_CS_NAMESPACE
117
using
USBDeviceMIDIBackend
=
MIDIUSB_USBDeviceMIDIBackend
;
118
END_CS_NAMESPACE
119
#else
120
#define CS_USB_MIDI_NOT_SUPPORTED
121
#endif
122
123
#endif
124
125
#else
126
127
#include "
USBMIDI_Mock.hpp
"
128
129
#endif
Arduino-Wrapper.h
Array.hpp
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:14
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:11
u32_to_bytes
AH::Array< uint8_t, 4 > u32_to_bytes(uint32_t u)
Definition
USBMIDI.hpp:14
bytes_to_u32
uint32_t bytes_to_u32(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3)
Definition
USBMIDI.hpp:23
USBMIDI_Adafruit_TinyUSB.hpp
USBMIDI_Arduino_mbed.hpp
USBMIDI_ESP32.hpp
USBMIDI_MIDIUSB.hpp
USBMIDI_Mock.hpp
USBMIDI_Teensy2.hpp
USBMIDI_Teensy3.hpp
USBMIDI_Teensy4.hpp
Teensy4_USBDeviceMIDIBackend
Teensy3_USBDeviceMIDIBackend Teensy4_USBDeviceMIDIBackend
Definition
USBMIDI_Teensy4.hpp:3
USBMIDI_TeensyLC.hpp
TeensyLC_USBDeviceMIDIBackend
Teensy3_USBDeviceMIDIBackend TeensyLC_USBDeviceMIDIBackend
Definition
USBMIDI_TeensyLC.hpp:3
AH::Array
An array wrapper for easy copying, comparing, and iterating.
Definition
Array.hpp:32
AH::Array::data
T data[N]
Definition
Array.hpp:33
Adafruit_TinyUSB_USBDeviceMIDIBackend
Definition
USBMIDI_Adafruit_TinyUSB.hpp:8
Arduino_mbed_USBDeviceMIDIBackend
Definition
USBMIDI_Arduino_mbed.hpp:8
ESP32_USBDeviceMIDIBackend
Definition
USBMIDI_ESP32.hpp:9
MIDIUSB_USBDeviceMIDIBackend
Definition
USBMIDI_MIDIUSB.hpp:8
Teensy2_USBDeviceMIDIBackend
Definition
USBMIDI_Teensy2.hpp:8
Teensy3_USBDeviceMIDIBackend
Definition
USBMIDI_Teensy3.hpp:7
USBDeviceMIDIBackend
Definition
USBMIDI_Mock.hpp:8
Generated by
1.10.0