Control Surface master
MIDI Control Surface library for Arduino


Bank<4> bank {6}; // 4 banks, 6 addresse per banks
IncrementDecrementSelector<4> selector {bank, {A0, A1}, Wrap::Wrap};
{0, 1, 2},
{3, 4, 5},
bank, //
{2, 3}, // row pins (outputs, driven low-Z low !)
{4, 5, 6}, // column pins (inputs, hi-Z)
notes, //
{bank, 7, {notes[0][0], CHANNEL_1}}, //
{bank, 8, {notes[0][1], CHANNEL_1}}, //
{bank, 9, {notes[0][2], CHANNEL_1}}, //
{bank, 10, {notes[1][0], CHANNEL_1}}, //
{bank, 11, {notes[1][1], CHANNEL_1}}, //
{bank, 12, {notes[1][2], CHANNEL_1}}, //
void setup() {
void loop() {
constexpr Channel CHANNEL_1
Definition: Channel.hpp:118
The main header file that includes all Control-Surface header files.
Control_Surface_ & Control_Surface
A predefined instance of the Control Surface to use in the Arduino sketches.
Array2D< uint8_t, NumRows, NumCols > AddressMatrix
Definition: Def.hpp:28
@ Wrap
When the maximum (minimum) setting is reached, wrap around to the minimum (maximum) setting.
A class that groups Bankable MIDI Output Elements and Bankable MIDI Input Elements,...
Definition: Bank.hpp:91
A class of MIDIOutputElements that read the input from a matrix of momentary push buttons or switches...
Generic base class for classes that listen for MIDI Note, Control Change and Key Pressure events on a...
Definition: NoteCCKPLED.hpp:92
void begin()
Initialize the Control_Surface.
void loop()
Update all MIDI elements, send MIDI events and read MIDI input.
Selector with two buttons (one to increment, one to decrement).
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.