Control Surface  1.1.1
MIDI Control Surface library for Arduino
5.Note-LED-PWM.ino

5.Note-LED-PWM

This example demonstrates the use of LEDs that respond to incoming MIDI note events by changing the brightness of an LED using PWM.

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

Connections

Connect an LED (+ current limiting resistor) to any PWM pin. Then change the pin number in the ledPin constant to match the pin with your LED connected.

Behavior

If a MIDI Note On event for note 0x3C (C4 or middle C) is sent, the LED will light up, with the brightness depending on the velocity.
If a Note Off event for that note is sent, the LED will turn off.
(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-01-03
https://github.com/tttapa/Control-Surface

#include <Control_Surface.h> // Include the Control Surface library
// Instantiate a MIDI over USB interface.
const pin_t ledPin = LED_BUILTIN; // Change this to your PWM pin <------
using namespace MIDI_Notes;
// Instantiate the LED that will light up when middle C is playing
ledPin, // Pin of the LED, must be PWM pin
{note(C, 4), CHANNEL_1}, // Note C4 on MIDI channel 1
};
void setup() {
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:35
AH::pin_t
uint16_t pin_t
The type for Arduino pins (and ExtendedIOElement pins).
Definition: Hardware-Types.hpp:17
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:48
Control_Surface
Control_Surface_ & Control_Surface
A predefined instance of the Control Surface to use in the Arduino sketches.
Definition: Control_Surface_Class.cpp:176
MIDI_Notes::note
constexpr int8_t note(int8_t note, int8_t numOctave)
Get the MIDI note in the given octave.
Definition: Notes.hpp:35
MIDI_Notes
MIDI note names.
Definition: Notes.hpp:16
NoteValueLEDPWM
MIDI Input Element that listens for MIDI Note messages for the given note, and displays its velocity ...
Definition: NoteCCRangeLEDs.hpp:306
CHANNEL_1
constexpr Channel CHANNEL_1
Definition: Channel.hpp:111
MIDI_Notes::C
constexpr int8_t C
Definition: Notes.hpp:18
Control_Surface_::begin
void begin()
Initialize the Control_Surface.
Definition: Control_Surface_Class.cpp:25