Control Surface  1.2.0
MIDI Control Surface library for Arduino
MIDI-Input.ino

MIDI-Input

This is an example on how to attach your own callbacks for receiving MIDI input.

Boards:
AVR, AVR USB, Nano Every, Due, Nano 33, Teensy 3.x, ESP32

Connections

None.

Behavior

Mapping

None.

Written by PieterP, 2020-06-11
https://github.com/tttapa/Control-Surface

#include <Control_Surface.h> // Include the Control Surface library
// The MIDI over USB interface to use
// Custom MIDI callback that prints incoming messages.
struct MyMIDI_Callbacks : MIDI_Callbacks {
// Callback for channel messages (notes, control change, pitch bend, etc.).
// Print the message
Serial << F("Channel message: ") << hex << cm.header << ' ' << cm.data1
<< ' ' << cm.data2 << dec << F(" on cable ") << cm.CN << endl;
}
// Callback for system exclusive messages
void onSysExMessage(Parsing_MIDI_Interface &midi) override {
// Print the message
Serial << F("System Exclusive message: ") << hex;
for (size_t i = 0; i < se.length; ++i)
Serial << se.data[i] << ' ';
Serial << dec << F("on cable ") << se.CN << endl;
}
// Callback for real-time messages
// Print the message
Serial << F("Real-time message: ") << hex << rt.message << dec
<< F(" on cable ") << rt.CN << endl;
}
} callbacks;
void setup() {
Serial.begin(115200); // For printing the messages
midi.begin(); // Initialize the MIDI interface
midi.setCallbacks(callbacks); // Attach the custom callback
}
void loop() {
midi.update(); // Continuously handle MIDI input
}
USBMIDI_Interface
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.
Definition: USBMIDI_Interface.hpp:41
SysExMessage
Definition: MIDI_MessageTypes.hpp:138
SysExMessage::data
const uint8_t * data
Definition: MIDI_MessageTypes.hpp:156
Parsing_MIDI_Interface::getSysExMessage
SysExMessage getSysExMessage() const
Return the received system exclusive message.
Definition: MIDI_Interface.hpp:261
Parsing_MIDI_Interface
An abstract class for MIDI interfaces.
Definition: MIDI_Interface.hpp:232
MIDI_Callbacks::onRealTimeMessage
virtual void onRealTimeMessage(Parsing_MIDI_Interface &midi)
Callback for incoming MIDI Real-Time Messages.
Definition: MIDI_Interface.hpp:303
ChannelMessage::CN
uint8_t CN
USB MIDI cable number;.
Definition: MIDI_MessageTypes.hpp:87
AH::dec
Print & dec(Print &printer)
Definition: PrintStream.cpp:77
ChannelMessage::header
uint8_t header
MIDI status byte (message type and channel).
Definition: MIDI_MessageTypes.hpp:83
ChannelMessage::data2
uint8_t data2
First MIDI data byte.
Definition: MIDI_MessageTypes.hpp:85
MIDI_Callbacks::onSysExMessage
virtual void onSysExMessage(Parsing_MIDI_Interface &midi)
Callback for incoming MIDI System Exclusive Messages.
Definition: MIDI_Interface.hpp:301
Control_Surface.h
The main header file that includes all Control-Surface header files.
Parsing_MIDI_Interface::update
void update() override
Read the MIDI interface and call the callback if a message is received.
Definition: MIDI_Interface.cpp:34
MIDI_Callbacks::onChannelMessage
virtual void onChannelMessage(Parsing_MIDI_Interface &midi)
Callback for incoming MIDI Channel Messages (notes, control change, pitch bend, etc....
Definition: MIDI_Interface.hpp:299
RealTimeMessage
Definition: MIDI_MessageTypes.hpp:173
MIDI_Interface::begin
void begin() override
Initialize the MIDI Interface.
Definition: MIDI_Interface.hpp:152
AH::hex
Print & hex(Print &printer)
Definition: PrintStream.cpp:62
ChannelMessage::data1
uint8_t data1
First MIDI data byte.
Definition: MIDI_MessageTypes.hpp:84
SysExMessage::CN
uint8_t CN
Definition: MIDI_MessageTypes.hpp:158
MIDI_Notes::F
constexpr int8_t F
Definition: Notes.hpp:23
ChannelMessage
Definition: MIDI_MessageTypes.hpp:72
RealTimeMessage::CN
uint8_t CN
Definition: MIDI_MessageTypes.hpp:190
MIDI_Callbacks
A class for callbacks from MIDI input.
Definition: MIDI_Interface.hpp:295
SysExMessage::length
uint8_t length
Definition: MIDI_MessageTypes.hpp:157
Parsing_MIDI_Interface::setCallbacks
void setCallbacks(MIDI_Callbacks *cb) override
Set the callbacks that will be called when a MIDI message is received.
Definition: MIDI_Interface.hpp:267
RealTimeMessage::message
uint8_t message
Definition: MIDI_MessageTypes.hpp:189
Parsing_MIDI_Interface::getChannelMessage
ChannelMessage getChannelMessage() const
Return the received channel message.
Definition: MIDI_Interface.hpp:251
AH::endl
Print & endl(Print &printer)
Definition: PrintStream.cpp:27
Parsing_MIDI_Interface::getRealTimeMessage
RealTimeMessage getRealTimeMessage() const
Return the received real-time message.
Definition: MIDI_Interface.hpp:256