45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
#include <MIDI.h>
|
|
|
|
// This function will be automatically called when a NoteOn is received.
|
|
// It must be a void-returning function with the correct parameters,
|
|
// see documentation here:
|
|
// http://arduinomidilib.sourceforge.net/class_m_i_d_i___class.html
|
|
|
|
void HandleNoteOn(byte channel, byte pitch, byte velocity)
|
|
{
|
|
// Do whatever you want when you receive a Note On.
|
|
|
|
if (velocity == 0)
|
|
{
|
|
// This acts like a NoteOff.
|
|
}
|
|
|
|
// Try to keep your callbacks short (no delays ect)
|
|
// otherwise it would slow down the loop() and have a bad impact
|
|
// on real-time performance.
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void setup()
|
|
{
|
|
// Initiate MIDI communications, listen to all channels
|
|
MIDI.begin(MIDI_CHANNEL_OMNI);
|
|
|
|
// Connect the HandleNoteOn function to the library,
|
|
// so it is called upon reception of a NoteOn.
|
|
MIDI.setHandleNoteOn(HandleNoteOn); // Put only the name of the function
|
|
}
|
|
|
|
|
|
void loop()
|
|
{
|
|
// Call MIDI.read the fastest you can for real-time performance.
|
|
MIDI.read();
|
|
|
|
// There is no need to check if there are messages incoming
|
|
// if they are bound to a Callback function.
|
|
// The attached method will be called automatically
|
|
// when the corresponding message has been received.
|
|
}
|