Control Surface main
MIDI Control Surface library for Arduino


This is an example that demonstrates the use of MIDI Program Change buttons.

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


The internal pull-up resistor for the button will be enabled automatically.


Written by PieterP, 2019-08-07

#include <Control_Surface.h> // Include the Control Surface library
// Instantiate a MIDI over USB interface
// Instantiate a PCButton that reads the input from a push button and sends out
// a MIDI Program Change message when it's pressed.
PCButton pcBtn {
2, // pin
void setup() {
Control_Surface.begin(); // Initialize Control Surface
void loop() {
Control_Surface.loop(); // Update the Control Surface
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.
void begin()
Initialize the Control_Surface.
void loop()
Update all MIDI elements, send MIDI events and read MIDI input.
A class of MIDIOutputElements that read the input of a momentary push button or switch,...
Definition: PCButton.hpp:19
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.
constexpr uint8_t Steel_Drums