Control Surface main
MIDI Control Surface library for Arduino
No Matches


This example demonstrates the use of MIDI Pitch Bend potentiometers that can be used for changing effect parameters, volumes, pan and balance controls, etc. It can control almost any knob in your DAW software.

Boards: 🛈
AVR, AVR USB, Nano Every, Due, Nano 33 IoT, Nano 33 BLE, UNO R4, Pi Pico, Teensy 3.x, ESP32, ESP8266


Connect the left terminal of the potentiometer to ground, and the right one to VCC.



Select the Arduino as a custom MIDI controller in your DAW, and use the MIDI learn option to assign the potentiometer to a function.

Written by PieterP, 2019-08-23

#include <Control_Surface.h> // Include the Control Surface library
// Instantiate a MIDI over USB interface.
// Instantiate a PBPotentiometer object
PBPotentiometer potentiometer {
A0, // Analog pin connected to potentiometer
Channel_1, // MIDI Channel 1
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 analog input from a potentiometer or fader,...
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.