Control Surface  1.2.0
MIDI Control Surface library for Arduino
RotaryEncoder.ino

RotaryEncoder

This example demonstrates the use of relative MIDI CC rotary encoders that can be used for changing effect parameters, volumes, pan and balance controls, etc.

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

Connections

Connect the common terminal of the encoder to ground. The built-in pullup resistors will be enabled.

Behavior

Mapping

Select the Arduino as a custom MIDI controller in your DAW, and use the relative CC mode.
There are three main modes for sending relative messages, make sure you use the same one in this sketch as in your DAW.

See also
relativeCCmode

Written by PieterP, 2019-12-18
https://github.com/tttapa/Control-Surface

#include <Encoder.h> // Include the Encoder library.
// This must be done before the Control Surface library.
#include <Control_Surface.h> // Include the Control Surface library
// Instantiate a MIDI over USB interface.
// Instantiate a CCRotaryEncoder object
{2, 3}, // pins
MCU::V_POT_1, // MIDI address (CC number + optional channel)
1, // optional multiplier if the control isn't fast enough
};
void setup() {
// Select the correct relative MIDI CC mode.
// Options:
// - TWOS_COMPLEMENT (default)
// - BINARY_OFFSET
// - SIGN_MAGNITUDE
// - NEXT_ADDRESS
// Aliases:
// - REAPER_RELATIVE_1
// - REAPER_RELATIVE_2
// - REAPER_RELATIVE_3
// - TRACKTION_RELATIVE
// - MACKIE_CONTROL_RELATIVE
// - KORG_KONTROL_INC_DEC_1
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
MACKIE_CONTROL_RELATIVE
@ MACKIE_CONTROL_RELATIVE
Relative mode used by the Mackie Control Universal protocol.
Definition: RelativeCCSender.hpp:72
RelativeCCSender::setMode
static void setMode(relativeCCmode mode)
Set the relative CC mode that's used.
Definition: RelativeCCSender.hpp:134
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
MCU::V_POT_1
constexpr uint8_t V_POT_1
Definition: MCU.hpp:159
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
CCRotaryEncoder
A class of MIDIOutputElements that read the input of a quadrature (rotary) encoder and send out relat...
Definition: CCRotaryEncoder.hpp:21
Control_Surface_::begin
void begin()
Initialize the Control_Surface.
Definition: Control_Surface_Class.cpp:25