Fairly sure this is covered somewhere on here, would be grateful for a link if so as my searches aren't pulling it up...
I'd like to use an Arduino Micro to work as a MIDI Message translator, specifically to take a small group of incoming CC values I'm not otherwise using and translate them into Program Change messages.
So, the general logic would be:
See any incoming message value on CC100 > Convert to Program Change 1
See any incoming message value on CC101 > Convert to Program Change 2
And so on. Reason for this is I have some MIDI controllers that don't natively send program change messages but I've nearly always got unmapped CC numbers that could be put to that use.
Grateful for any pointers to how-to's or patches that might show the basics.
So:-
See any incoming message value on CC100 then send a Program Change 1 message.
That is all you need to do.
The exact detail of this depends on how you are reading your MIDI inputs and splitting them into different messages.
No Arduino code at this stage but I there are two ways I can set the MIDI controller pads to send a CC message, either toggle or momentary.
Momentary starts at 0, sends a message of 127 on push and back to 0 on release or toggle starts at 0 and latches at 127 until I push it again to return to 0. The actual on / off numerical values in both settings can be edited.
This is a Korg nanoKontrol but it's the same operation on a couple of other controllers that don't have Program Change functionality.
The idea ultimately is to make the Arduino pass any other MIDI messages through from the controller to the MIDI output unaltered but react to whichever CC value I specify in the code and change that to a Program Change message
You might have difficulty with that sort of thing. I have one of these, a Korg Nano Key. It is designed to send MIDI via a USB connector into a computer.
USB has two sorts on connections a Host, normally the computer and a Device, sometimes called a Client. The Korg Nano Key is a Device. To get an Arduino to read a Korg Nano Key you need either a Host shield on your Arduino, or an Arduino capable of acting like a Host. So reading the MIDI into your Arduino is a big, big problem.
Is there a computer in your system?
That means that somewhere along the line a computer will be involved.
If that is the case then you can write a program in the language called Processing to read the input from your MIDI keyboard and do the conversion in that.
I just plugged in my Korg Nano Key and found it has a CC mode that will send CC messages on each key, or just send the note on note off messages. It will be a simple matter to receive these with Processing and send out the appropriate Program Change message, providing that Processing can talk to the device you want the message to go to. This could be from either it being plugged into the computer or through a USB / MIDI cable.
Thanks, there isn't a computer in this particular set up so the connection chain would be:
Korg > Arduino Micro > Synth
But as you say, that would require a shield and some rather intricate finagling to get that to work, probably easier just to use a different midi controller that can do Program Changes natively