Custom-Note-LED-Input-Element-Callback
This example demonstrates how to attach custom actions to incoming Note or Control Change MIDI events.
- Boards: 🛈
- AVR, AVR USB, Due, Nano 33 IoT, Nano 33 BLE, UNO R4, Pi Pico, Teensy 3.x
Connections
- Pin 3 (PWM pin): An LED (with current-limiting resistor) to ground.
Behavior
If a MIDI Note On event for note 0x3C (C4 or middle C) is sent, the LED will light up at full brightness, if a Note Off event for that note is sent, the LED will light dimly.
(A Note On event with a velocity of zero also counts as a Note Off event.)
Mapping
Route the MIDI output of a MIDI keyboard to the Arduino's MIDI input. Then play a middle C on the keyboard.
Written by PieterP, 2020-03-10
https://github.com/tttapa/Control-Surface
class CustomNoteLED
TwoByteMIDIMatcher> {
public:
CustomNoteLED(pin_t ledPin,
MIDIAddress address, uint8_t lowBrightness)
lowBrightness(lowBrightness) {}
ExtIO::pinMode(ledPin,
OUTPUT);
ExtIO::analogWrite(ledPin, lowBrightness);
}
if (match.
value >= threshold)
ExtIO::digitalWrite(ledPin,
HIGH);
else
ExtIO::analogWrite(ledPin, lowBrightness);
}
void reset()
override { ExtIO::analogWrite(ledPin, lowBrightness); }
private:
pin_t ledPin;
uint8_t lowBrightness;
const static uint8_t threshold = 0x01;
};
CustomNoteLED led {
3,
10,
};
void setup() {
}
void loop() {
}
constexpr PinStatus_t HIGH
constexpr PinMode_t OUTPUT
constexpr Channel Channel_1
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 type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.