diff --git a/examples/CustomBaudRate/CustomBaudRate.ino b/examples/CustomBaudRate/CustomBaudRate.ino index d554871..6196fdd 100644 --- a/examples/CustomBaudRate/CustomBaudRate.ino +++ b/examples/CustomBaudRate/CustomBaudRate.ino @@ -8,11 +8,9 @@ struct CustomBaudRateSettings : public MIDI_NAMESPACE::DefaultSerialSettings { #if defined(ARDUINO_SAM_DUE) || defined(USBCON) || defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MKL26Z64__) // Leonardo, Due and other USB boards use Serial1 by default. - MIDI_NAMESPACE::SerialMIDI serialMIDI(Serial1); - MIDI_NAMESPACE::MidiInterface> MIDI((MIDI_NAMESPACE::SerialMIDI&)serialMIDI); + MIDI_CREATE_CUSTOM_INSTANCE(HardwareSerial, Serial1, MIDI, CustomBaudRateSettings) #else - MIDI_NAMESPACE::SerialMIDI serialMIDI(Serial); - MIDI_NAMESPACE::MidiInterface> MIDI((MIDI_NAMESPACE::SerialMIDI&)serialMIDI); + MIDI_CREATE_CUSTOM_INSTANCE(HardwareSerial, Serial, MIDI, CustomBaudRateSettings) #endif void setup() { diff --git a/src/serialMIDI.h b/src/serialMIDI.h index e69e9b2..89715d4 100644 --- a/src/serialMIDI.h +++ b/src/serialMIDI.h @@ -98,14 +98,19 @@ private: END_MIDI_NAMESPACE +/*! \brief Create an instance of the library attached to a serial port with overwritten Settings. + */ +#define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, CustomSettings) \ + MIDI_NAMESPACE::SerialMIDI serial##Name(SerialPort); \ + MIDI_NAMESPACE::MidiInterface> Name((MIDI_NAMESPACE::SerialMIDI&)serial##Name); + /*! \brief Create an instance of the library attached to a serial port. You can use HardwareSerial or SoftwareSerial for the serial port. Example: MIDI_CREATE_INSTANCE(HardwareSerial, Serial2, midi2); Then call midi2.begin(), midi2.read() etc.. */ #define MIDI_CREATE_INSTANCE(Type, SerialPort, Name) \ - MIDI_NAMESPACE::SerialMIDI serial##Name(SerialPort);\ - MIDI_NAMESPACE::MidiInterface> Name((MIDI_NAMESPACE::SerialMIDI&)serial##Name); + MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, MIDI_NAMESPACE::DefaultSettings) #if defined(ARDUINO_SAM_DUE) || defined(USBCON) || defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MKL26Z64__) // Leonardo, Due and other USB boards use Serial1 by default.