Control Surface  1.2.0
MIDI Control Surface library for Arduino
Program-Changer.ino

Program-Changer

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

Boards:
AVR, AVR USB, Nano Every, Due, Nano 33, Teensy 3.x, ESP32

Connections

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

Behavior

Written by PieterP, 2019-08-07
https://github.com/tttapa/Control-Surface

#include <Control_Surface.h> // Include the Control Surface library
// Instantiate a MIDI over USB interface
// Instantiate a program changer with 3 programs
ProgramChanger<3> programChanger = {
{
MIDI_PC::Acoustic_Grand_Piano, // list of programs
},
CHANNEL_1, // MIDI channel to use
};
// Instantiate a selector that reads three buttons and controls the program
// changer
ManyButtonsSelector<3> programSelector = {
programChanger,
{{2, 3, 4}},
};
// The library comes with many different Selectors, like rotary encoders,
// push buttons that increment or decrement the setting, versions with LEDs
// to display the current setting, etc.
// https://tttapa.github.io/Control-Surface-doc/Doxygen/d0/d0c/group__Selectors.html
void setup() {
Control_Surface.begin(); // Initialize Control Surface
}
void loop() {
Control_Surface.loop(); // Update the Control Surface
}
USBMIDI_Interface
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.
Definition: USBMIDI_Interface.hpp:41
MIDI_PC::Electric_Bass_Pick
constexpr uint8_t Electric_Bass_Pick
Definition: Program_Change.hpp:50
MIDI_PC::Rock_Organ
constexpr uint8_t Rock_Organ
Definition: Program_Change.hpp:34
ProgramChanger
TODO: move to different folder?
Definition: ProgramChanger.hpp:11
Control_Surface.h
The main header file that includes all Control-Surface header files.
Control_Surface_::loop
void loop()
Update all MIDI elements, send MIDI events and read MIDI input.
Definition: Control_Surface_Class.cpp:68
Control_Surface
Control_Surface_ & Control_Surface
A predefined instance of the Control Surface to use in the Arduino sketches.
Definition: Control_Surface_Class.cpp:203
ManyButtonsSelector
Selector that reads from buttons.
Definition: ManyButtonsSelector.hpp:59
CHANNEL_1
constexpr Channel CHANNEL_1
Definition: Channel.hpp:111
Control_Surface_::begin
void begin()
Initialize the Control_Surface.
Definition: Control_Surface_Class.cpp:25
MIDI_PC::Acoustic_Grand_Piano
constexpr uint8_t Acoustic_Grand_Piano
Definition: Program_Change.hpp:16