chore: Add example
This commit is contained in:
parent
6bdb70727f
commit
2fec41ecfe
|
|
@ -0,0 +1,52 @@
|
|||
#include <MIDI.h>
|
||||
|
||||
using Message = midi::Message<midi::DefaultSettings::SysExMaxSize>;
|
||||
|
||||
MIDI_CREATE_DEFAULT_INSTANCE();
|
||||
|
||||
/**
|
||||
* This example shows how to make MIDI processors.
|
||||
*
|
||||
* The `filter` function defines whether to forward an incoming
|
||||
* MIDI message to the output.
|
||||
*
|
||||
* The `map` function transforms the forwarded message before
|
||||
* it is sent, allowing to change things.
|
||||
*
|
||||
* Here we will transform NoteOn messages into Program Change,
|
||||
* allowing to use a keyboard to change patches on a MIDI device.
|
||||
*/
|
||||
|
||||
bool filter(const Message& message)
|
||||
{
|
||||
if (message.type == midi::NoteOn)
|
||||
{
|
||||
// Only forward NoteOn messages
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Message map(const Message& message)
|
||||
{
|
||||
// Make a copy of the message
|
||||
Message output(message);
|
||||
if (message.type == midi::NoteOn)
|
||||
{
|
||||
output.type = midi::ProgramChange;
|
||||
output.data2 = 0; // Not needed in ProgramChange
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
MIDI.begin();
|
||||
MIDI.setThruFilter(filter);
|
||||
MIDI.setThruMap(map);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
MIDI.read();
|
||||
}
|
||||
Loading…
Reference in New Issue