|
|
|
@ -28,13 +28,23 @@ |
|
|
|
|
|
|
|
|
|
extern config_t configuration; |
|
|
|
|
|
|
|
|
|
#ifdef MIDI_DEVICE_USB_HOST |
|
|
|
|
#if defined(MIDI_DEVICE_USB_HOST) || defined(MIDI_DEVICE_USB_HOST_SERIAL) |
|
|
|
|
#include <USBHost_t36.h> |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
// override default sysex size settings
|
|
|
|
|
struct MicroDexedSettings : public midi::DefaultSettings { |
|
|
|
|
static const unsigned SysExMaxSize = 4104; // Accept SysEx messages up to 1024 bytes long.
|
|
|
|
|
static const bool UseRunningStatus = false; |
|
|
|
|
static const bool HandleNullVelocityNoteOnAsNoteOff = true; |
|
|
|
|
static const bool Use1ByteParsing = true; |
|
|
|
|
static const unsigned SysExMaxSize = 4104; |
|
|
|
|
static const bool UseSenderActiveSensing = false; |
|
|
|
|
static const bool UseReceiverActiveSensing = false; |
|
|
|
|
static const uint16_t SenderActiveSensingPeriodicity = 0; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
struct CustomBaudRateSettings : public MIDI_NAMESPACE::DefaultSerialSettings { |
|
|
|
|
static const long BaudRate = 38400; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#ifdef MIDI_DEVICE_DIN |
|
|
|
@ -44,8 +54,17 @@ MIDI_CREATE_CUSTOM_INSTANCE(HardwareSerial, MIDI_DEVICE_DIN, midi_serial, MicroD |
|
|
|
|
#ifdef MIDI_DEVICE_USB_HOST |
|
|
|
|
USBHost usb_host; |
|
|
|
|
MIDIDevice midi_usb(usb_host); |
|
|
|
|
USBSerial userial(usb_host); |
|
|
|
|
MIDI_CREATE_CUSTOM_INSTANCE(USBSerial, userial, usbhost_midi_serial, MicroDexedSettings); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef MIDI_DEVICE_USB_HOST_SERIAL |
|
|
|
|
USBHost usb_host; |
|
|
|
|
USBHub hub1(usb_host); |
|
|
|
|
USBHub hub2(usb_host); |
|
|
|
|
USBHub hub3(usb_host); |
|
|
|
|
USBHub hub4(usb_host); |
|
|
|
|
USBSerial_BigBuffer userial(usb_host,1); |
|
|
|
|
MIDI_NAMESPACE::SerialMIDI<USBSerial_BigBuffer, CustomBaudRateSettings> serialMIDI(userial); |
|
|
|
|
MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<USBSerial_BigBuffer, CustomBaudRateSettings>> usbhost_midi_serial((MIDI_NAMESPACE::SerialMIDI<USBSerial_BigBuffer, CustomBaudRateSettings>&)serialMIDI); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
void handleNoteOn(byte inChannel, byte inNumber, byte inVelocity); |
|
|
|
@ -685,11 +704,9 @@ void handleSystemReset_MIDI_DEVICE_USB_HOST(void) { |
|
|
|
|
handleRealTimeSystem_generic(inRealTime, MIDI_USB_HOST); |
|
|
|
|
} */ |
|
|
|
|
|
|
|
|
|
#endif // MIDI_DEVICE_USB_HOST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef MIDI_DEVICE_USB_HOST_SERIAL |
|
|
|
|
void handleNoteOn_MIDI_DEVICE_USB_HOST_SERIAL(byte inChannel, byte inNoteNumber, byte inVelocity) { |
|
|
|
|
handle_generic(inChannel, inNoteNumber, inVelocity, MIDI_BY_USB_HOST, midi::NoteOn); |
|
|
|
|
} |
|
|
|
@ -788,7 +805,7 @@ void handleSystemReset_MIDI_DEVICE_USB_HOST_SERIAL(void) { |
|
|
|
|
{ |
|
|
|
|
handleRealTimeSystem_generic(inRealTime, MIDI_USB_HOST); |
|
|
|
|
} */ |
|
|
|
|
#endif // MIDI_DEVICE_USB_HOST
|
|
|
|
|
#endif // MIDI_DEVICE_USB_HOST_SERIAL
|
|
|
|
|
|
|
|
|
|
/*****************************************
|
|
|
|
|
MIDI_DEVICE_USB |
|
|
|
@ -979,8 +996,14 @@ FLASHMEM void setup_midi_devices(void) { |
|
|
|
|
midi_usb.setHandleActiveSensing(handleActiveSensing_MIDI_DEVICE_USB_HOST); |
|
|
|
|
midi_usb.setHandleSystemReset(handleSystemReset_MIDI_DEVICE_USB_HOST); |
|
|
|
|
//midi_usb.setHandleRealTimeSystem(handleRealTimeSystem_MIDI_DEVICE_USB_HOST);
|
|
|
|
|
|
|
|
|
|
userial.begin(USB_HOST_SERIAL_BAUD,USB_HOST_SERIAL_FORMAT); |
|
|
|
|
#ifdef DEBUG |
|
|
|
|
Serial.println(F("MIDI_DEVICE_USB_HOST enabled.")); |
|
|
|
|
#endif |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef MIDI_DEVICE_USB_HOST_SERIAL |
|
|
|
|
usb_host.begin(); |
|
|
|
|
userial.begin(USB_HOST_SERIAL_BAUD, USB_HOST_SERIAL_FORMAT); |
|
|
|
|
usbhost_midi_serial.setHandleNoteOn(handleNoteOn_MIDI_DEVICE_USB_HOST_SERIAL); |
|
|
|
|
usbhost_midi_serial.setHandleNoteOff(handleNoteOff_MIDI_DEVICE_USB_HOST_SERIAL); |
|
|
|
|
usbhost_midi_serial.setHandleControlChange(handleControlChange_MIDI_DEVICE_USB_HOST_SERIAL); |
|
|
|
@ -999,10 +1022,12 @@ FLASHMEM void setup_midi_devices(void) { |
|
|
|
|
usbhost_midi_serial.setHandleStop(handleStop_MIDI_DEVICE_USB_HOST_SERIAL); |
|
|
|
|
usbhost_midi_serial.setHandleActiveSensing(handleActiveSensing_MIDI_DEVICE_USB_HOST_SERIAL); |
|
|
|
|
usbhost_midi_serial.setHandleSystemReset(handleSystemReset_MIDI_DEVICE_USB_HOST_SERIAL); |
|
|
|
|
//usbhost_midi_serial.setHandleRealTimeSystem(handleRealTimeSystem_MIDI_DEVICE_USB_HOST_SERIAL);
|
|
|
|
|
//usbhost_midi_serial.setHandleRealTimeSystem(handleRealTimeSystem_MIDI_DEVICE_USB_HOST_SERIAL);
|
|
|
|
|
|
|
|
|
|
usbhost_midi_serial.begin(MIDI_CHANNEL_OMNI); |
|
|
|
|
|
|
|
|
|
#ifdef DEBUG |
|
|
|
|
Serial.println(F("MIDI_DEVICE_USB_HOST enabled.")); |
|
|
|
|
Serial.println(F("MIDI_DEVICE_USB_HOST_SERIAL enabled.")); |
|
|
|
|
#endif |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -1044,6 +1069,9 @@ FLASHMEM void check_midi_devices(void) { |
|
|
|
|
#ifdef MIDI_DEVICE_USB_HOST |
|
|
|
|
usb_host.Task(); |
|
|
|
|
midi_usb.read(); |
|
|
|
|
#endif |
|
|
|
|
#ifdef MIDI_DEVICE_USB_HOST_SERIAL |
|
|
|
|
usb_host.Task(); |
|
|
|
|
usbhost_midi_serial.read(); |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|