9.Note-FastLED
This example demonstrates the use of addressable LEDs that respond to incoming MIDI note events.
- Boards: 🛈
- AVR, AVR USB, Teensy 3.x, ESP32
- Note
- You might lose incoming MIDI data while the LED strip is being updated. To avoid this, don't use an Arduino UNO.
See https://github.com/FastLED/FastLED/wiki/Interrupt-problems
Connections
- 2: Data pin of NeoPixel LED strip with at least 8 pixels.
Behavior
If a MIDI Note On event for note 0x3C (C4 or middle C) is sent, the first LED will light up, if a Note Off event for that note is sent, the LED will turn off.
If a MIDI Note On event for note 0x3D (C#4) is sent, the second LED will light up, etc.
(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 and some notes above it on the keyboard.
Written by PieterP, 2019-10-15
https://github.com/tttapa/Control-Surface
#include <FastLED.h>
constexpr uint8_t ledpin = 2;
void setup() {
FastLED.addLeds<NEOPIXEL, ledpin>(leds.
data, leds.
length);
FastLED.setCorrection(TypicalPixelString);
midiled.setBrightness(128);
}
void loop() {
if (midiled.getDirty()) {
FastLED.show();
midiled.clearDirty();
}
}
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.
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.
An array wrapper for easy copying, comparing, and iterating.
static constexpr size_t length