Control Surface pin-t-adl
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 IoT, Nano 33 BLE, Pi Pico, Teensy 3.x, ESP32, ESP8266

Connections

None.

Behavior

Mapping

None.

See also
MIDI-Input-Fine-Grained.ino
MIDI-Input-Fine-Grained-All-Callbacks.ino

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.cable.getOneBased() << endl;
}
// Callback for system exclusive messages
// Print the message
Serial << F("System Exclusive message: [") << se.length << "] " //
<< AH::HexDump(se.data, se.length) //
<< F(" on cable ") << se.cable.getOneBased() << endl;
}
// Callback for real-time messages
// Print the message
Serial << F("Real-time message: ") //
<< hex << rt.message << dec //
<< F(" on cable ") << rt.cable.getOneBased() << endl;
}
} callback;
void setup() {
Serial.begin(115200); // For printing the messages
midi.begin(); // Initialize the MIDI interface
midi.setCallbacks(callback); // Attach the custom callback
}
void loop() {
midi.update(); // Continuously handle MIDI input
}
The main header file that includes all Control-Surface header files.
constexpr uint8_t getOneBased() const
Get the cable as an integer.
Definition: Cable.hpp:36
void update() override
Read the MIDI interface and call the callback if a message was received.
void begin() override
Initialize the MIDI Interface.
A class for callbacks from MIDI input.
virtual void onChannelMessage(MIDI_Interface &, ChannelMessage)
Callback for incoming MIDI Channel Messages (notes, control change, pitch bend, etc....
virtual void onSysExMessage(MIDI_Interface &, SysExMessage)
Callback for incoming MIDI System Exclusive Messages.
virtual void onRealTimeMessage(MIDI_Interface &, RealTimeMessage)
Callback for incoming MIDI Real-Time Messages.
An abstract class for MIDI interfaces.
void setCallbacks(MIDI_Callbacks *cb)
Set the callbacks that will be called when a MIDI message is received.
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.
Print & hex(Print &printer)
Definition: PrintStream.cpp:62
Print & endl(Print &printer)
Definition: PrintStream.cpp:27
Print & dec(Print &printer)
Definition: PrintStream.cpp:77
uint8_t data2
First MIDI data byte.
uint8_t header
MIDI status byte (message type and channel).
uint8_t data1
First MIDI data byte.
Cable cable
USB MIDI cable number;.
const uint8_t * data