Skip to content

Commit 28b98cc

Browse files
committed
CUSTOM serial and MIDI creation MACRO's
1 parent 2d64cc3 commit 28b98cc

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

examples/CustomBaudRate/CustomBaudRate.ino

+2-4
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@ struct CustomBaudRateSettings : public MIDI_NAMESPACE::DefaultSerialSettings {
88

99
#if defined(ARDUINO_SAM_DUE) || defined(USBCON) || defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MKL26Z64__)
1010
// Leonardo, Due and other USB boards use Serial1 by default.
11-
MIDI_NAMESPACE::SerialMIDI<HardwareSerial, CustomBaudRateSettings> serialMIDI(Serial1);
12-
MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<HardwareSerial, CustomBaudRateSettings>> MIDI((MIDI_NAMESPACE::SerialMIDI<HardwareSerial, CustomBaudRateSettings>&)serialMIDI);
11+
MIDI_CREATE_CUSTOMSERIAL_INSTANCE(HardwareSerial, Serial1, MIDI, CustomBaudRateSettings)
1312
#else
14-
MIDI_NAMESPACE::SerialMIDI<HardwareSerial, CustomBaudRateSettings> serialMIDI(Serial);
15-
MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<HardwareSerial, CustomBaudRateSettings>> MIDI((MIDI_NAMESPACE::SerialMIDI<HardwareSerial, CustomBaudRateSettings>&)serialMIDI);
13+
MIDI_CREATE_CUSTOMSERIAL_INSTANCE(HardwareSerial, Serial, MIDI, CustomBaudRateSettings)
1614
#endif
1715

1816
void setup() {

src/serialMIDI.h

+16-2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,20 @@ class SerialMIDI
9898

9999
END_MIDI_NAMESPACE
100100

101+
/*! \brief Create an instance of the library attached to a serial port
102+
with overwritten MIDI & Serial Settings
103+
*/
104+
#define MIDI_CREATE_SPECIAL_INSTANCE(Type, SerialPort, Name, CustomMIDISettings, CustomSerialSettings) \
105+
MIDI_NAMESPACE::SerialMIDI<Type, CustomSerialSettings> serial##Name(SerialPort); \
106+
MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<Type, CustomSerialSettings>, CustomMIDISettings> Name((MIDI_NAMESPACE::SerialMIDI<Type, CustomSerialSettings>&)serial##Name);
107+
108+
/*! \brief Create an instance of the library attached to a serial port
109+
with overwritten Serial Settings
110+
*/
111+
#define MIDI_CREATE_CUSTOMSERIAL_INSTANCE(Type, SerialPort, Name, CustomSerialSettings) \
112+
MIDI_NAMESPACE::SerialMIDI<Type, CustomSerialSettings> serial##Name(SerialPort); \
113+
MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<Type, CustomSerialSettings>> Name((MIDI_NAMESPACE::SerialMIDI<Type, CustomSerialSettings>&)serial##Name);
114+
101115
/*! \brief Create an instance of the library attached to a serial port.
102116
You can use HardwareSerial or SoftwareSerial for the serial port.
103117
Example: MIDI_CREATE_INSTANCE(HardwareSerial, Serial2, midi2);
@@ -125,6 +139,6 @@ END_MIDI_NAMESPACE
125139
@see DefaultSettings
126140
@see MIDI_CREATE_INSTANCE
127141
*/
128-
#define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, Settings) \
142+
#define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, CustomMIDISettings) \
129143
MIDI_NAMESPACE::SerialMIDI<Type> serial##Name(SerialPort);\
130-
MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<Type>, Settings> Name((MIDI_NAMESPACE::SerialMIDI<Type>&)serial##Name);
144+
MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<Type>, CustomMIDISettings> Name((MIDI_NAMESPACE::SerialMIDI<Type>&)serial##Name);

0 commit comments

Comments
 (0)