Created
December 23, 2023 18:20
-
-
Save kindohm/c080b52af6957ed57ffd3a0b76115b38 to your computer and use it in GitHub Desktop.
Arduino MIDI input
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# original code is from | |
# https://www.notesandvolts.com/2015/02/midi-for-arduino-input-test.html | |
#include <MIDI.h> // Add Midi Library | |
#define LED 13 // Arduino Board LED is on Pin 13 | |
//Create an instance of the library with default name, serial port and settings | |
MIDI_CREATE_DEFAULT_INSTANCE(); | |
void setup() { | |
Serial.begin(19200); | |
pinMode (LED, OUTPUT); // Set Arduino board pin 13 to output | |
MIDI.begin(MIDI_CHANNEL_OMNI); // Initialize the Midi Library. | |
// OMNI sets it to listen to all channels.. MIDI.begin(2) would set it | |
// to respond to notes on channel 2 only. | |
MIDI.setHandleNoteOn(MyHandleNoteOn); // This is important!! This command | |
// tells the Midi Library which function you want to call when a NOTE ON command | |
// is received. In this case it's "MyHandleNoteOn". | |
MIDI.setHandleNoteOff(MyHandleNoteOff); // This command tells the Midi Library | |
// to call "MyHandleNoteOff" when a NOTE OFF command is received. | |
} | |
void loop() { // Main loop | |
MIDI.read(); // Continuously check if Midi data has been received. | |
} | |
// MyHandleNoteON is the function that will be called by the Midi Library | |
// when a MIDI NOTE ON message is received. | |
// It will be passed bytes for Channel, Pitch, and Velocity | |
void MyHandleNoteOn(byte channel, byte pitch, byte velocity) { | |
Serial.println(channel); | |
Serial.println(pitch); | |
Serial.println(velocity); | |
digitalWrite(LED,HIGH); //Turn LED on | |
} | |
// MyHandleNoteOFF is the function that will be called by the Midi Library | |
// when a MIDI NOTE OFF message is received. | |
// * A NOTE ON message with Velocity = 0 will be treated as a NOTE OFF message * | |
// It will be passed bytes for Channel, Pitch, and Velocity | |
void MyHandleNoteOff(byte channel, byte pitch, byte velocity) { | |
digitalWrite(LED,LOW); //Turn LED off | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment