Control Surface master
MIDI Control Surface library for Arduino


This is the first example used in the 'Getting Started' guide:

AVR, AVR USB, Nano Every, Due, Nano 33 IoT, Nano 33 BLE, Teensy 3.x, ESP32

Written by PieterP, 2018-08-29

// Include the library
// Instantiate a MIDI Interface to use
// Instantiate an analog multiplexer
A0, // Analog input pin
{3, 4, 5} // Address pins S0, S1, S2
// Create an array of potentiometers that send out
// MIDI Control Change messages when you turn the
// potentiometers connected to the eight input pins of
// the multiplexer
CCPotentiometer volumePotentiometers[] {
// Initialize the Control Surface
void setup() {
// Update the Control Surface
void loop() {
constexpr Channel CHANNEL_2
Definition: Channel.hpp:119
constexpr Channel CHANNEL_1
Definition: Channel.hpp:118
constexpr Channel CHANNEL_6
Definition: Channel.hpp:123
constexpr Channel CHANNEL_3
Definition: Channel.hpp:120
constexpr Channel CHANNEL_4
Definition: Channel.hpp:121
constexpr Channel CHANNEL_5
Definition: Channel.hpp:122
constexpr Channel CHANNEL_7
Definition: Channel.hpp:124
constexpr Channel CHANNEL_8
Definition: Channel.hpp:125
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.
A class of MIDIOutputElements that read the analog input from a potentiometer or fader,...
void begin()
Initialize the Control_Surface.
void loop()
Update all MIDI elements, send MIDI events and read MIDI input.
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.
AnalogMultiplex< 3 > CD74HC4051
An alias for AnalogMultiplex<3> to use with CD74HC4051 analog multiplexers.
constexpr uint8_t Channel_Volume