MIDI Output Elements
Original: MIDI output elements
Output elements read physical controls and send MIDI messages. They register with Control_Surface on construction and update automatically in the loop() cycle.
Buttons
| Class |
Description |
Constructor |
NoteButton |
Note On/Off on press/release |
{pin, address} |
CCButton |
CC 127/0 on press/release |
{pin, address} |
PCButton |
Program Change on press |
{pin, address} |
NoteButtonLatched |
Toggle Note each press |
{pin, address} |
NoteButtonLatching |
Note while held, toggles |
{pin, address} |
CCButtonLatched |
Toggle CC each press |
{pin, address} |
CCButtonLatching |
CC while held, toggles |
{pin, address} |
NoteChordButton |
Multiple notes on press |
{pin, address, chord} |
Button arrays and matrices
| Class |
Description |
NoteButtons<N> |
Array of N sequential note buttons |
CCButtons<N> |
Array of N sequential CC buttons |
NoteButtonMatrix<R,C> |
Row/column scanned note grid |
CCButtonMatrix<R,C> |
Row/column scanned CC grid |
Potentiometers
| Class |
Description |
CCPotentiometer |
Analog input → CC 0-127 |
PBPotentiometer |
Analog input → 14-bit Pitch Bend |
CCPotentiometer with map() |
Custom mapping to calibrate or apply curves |
CCPotentiometer pot {26, {MIDI_CC::Channel_Volume, Channel_1}};
pot.map(myMappingFunction);
Encoders
| Class |
Description |
CCRotaryEncoder |
Relative CC from quadrature encoder |
CCAbsoluteEncoder |
Absolute CC position from encoder |
PBAbsoluteEncoder |
14-bit Pitch Bend from encoder |
BorrowedCCRotaryEncoder |
Shared encoder reference |
CCIncrementDecrementButtons |
Two buttons for CC inc/dec |
CCRotaryEncoder enc {{0, 1}, {MIDI_CC::Pan, Channel_1}, 1, 4};
Constructor: {pin_pair, address, speed_multiplier, pulses_per_click}.
Program changers
| Class |
Description |
ProgramChanger<N> |
Selectable list of N program changes |
ProgramChanger<4> pc {{
{MIDI_PC::Harpsichord, Channel_1},
{MIDI_PC::Organ, Channel_1},
{MIDI_PC::Guitar, Channel_1},
{MIDI_PC::Piano, Channel_1},
}};