| @@ -0,0 +1,56 @@ | |||
| #ifndef MIDIUSB_h | |||
| #define MIDIUSB_h | |||
| // For compatibility with Arduino's MIDIUSB library | |||
| #include "usb_midi.h" | |||
| #ifdef __cplusplus | |||
| #if !defined(USB_MIDI) && !defined(USB_MIDI4) && !defined(USB_MIDI16) && !defined(USB_MIDI_SERIAL) && !defined(USB_MIDI4_SERIAL) && !defined(USB_MIDI16_SERIAL) && !defined(USB_MIDI_AUDIO_SERIAL) && !defined(USB_MIDI16_AUDIO_SERIAL) && !defined(USB_EVERYTHING) | |||
| #error "Please select MIDI in Tools > USB Type to use MIDIUSB.h" | |||
| #endif | |||
| typedef struct { | |||
| union { | |||
| struct { | |||
| uint8_t header; | |||
| uint8_t byte1; | |||
| uint8_t byte2; | |||
| uint8_t byte3; | |||
| }; | |||
| uint32_t word; | |||
| }; | |||
| } midiEventPacket_t; | |||
| class MIDI_ | |||
| { | |||
| public: | |||
| constexpr MIDI_(void) { } | |||
| uint32_t available(void) { | |||
| return usb_midi_available(); | |||
| } | |||
| midiEventPacket_t read(void) { | |||
| midiEventPacket_t event; | |||
| event.word = usb_midi_read_message(); | |||
| return event; | |||
| } | |||
| void flush(void) { | |||
| usb_midi_flush_output(); | |||
| } | |||
| void sendMIDI(midiEventPacket_t event) { | |||
| usb_midi_write_packed(event.word); | |||
| } | |||
| size_t write(const uint8_t *buffer, size_t size) { | |||
| // TODO - is this really needed? | |||
| return 0; | |||
| } | |||
| operator bool() { | |||
| // TODO - is this really needed? | |||
| return true; | |||
| } | |||
| }; | |||
| extern MIDI_ MidiUSB; | |||
| #endif // __cplusplus | |||
| #endif // MIDIUSB_h | |||