10.Note-FastLED-ColorMapper
This example demonstrates the use of addressable LEDs that respond to incoming MIDI note events. This example uses a custom color mapper to get a rainbow effect across the LED strip.
- Boards: 🛈
- AVR, AVR USB, Nano 33 IoT, 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>
Array<CRGB, 8> leds {};
constexpr uint8_t ledpin = 2;
struct RainbowColorMapper {
CHSV operator()(uint8_t velocity, uint8_t index) const {
return CHSV(255 * index / leds.length, 255, 255u * velocity / 127u);
}
};
leds,
};
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.
void begin()
Initialize the Control_Surface.
void loop()
Update all MIDI elements, send MIDI events and read MIDI input.
Generic base class for classes that listen for MIDI Note, Control Change and Key Pressure events on a...
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.