I’m trying to figure out a specific situation where I have two identical midi controllers with the same channel and midi CCs but would like to merge them together into one port on one channel with remapped CCs.
The long story is I purchased two of these cheap 15 knob midi controllers from Aliexpress as part of a larger project I am building. Basically I’m building a synthesizer with an integrated PC in the case and multiple generic midi controllers connected to the PC and mapped using midi learn in Arturia or Ableton. However, these cheap midi controllers do not allow reassignment of the Midi Channel or the Midi CCs used, so when trying to map the two controllers to arturia MiniV, the one controller will override the messages from the other. So I would like to remap one controller to use different midi CCs so for instance, translate Channel 2 CC1 to Channel 2 CC 16. I’m not sure how to do this but this software seems like the best choice.
Any help is appreciated!
You can learn more about aliases from this tutorial.
I then created 4 presets. Each preset only receives to and sends to the given target MIDI port.
For instances translators within the “Controller1 to Application” preset will only accept messages from the controller assigned to the alias “Controller1” and only send to the alias assigned to “Application”
For more information about device selection, see this tutorial.
In each preset, I have a single translator that converts any 3 byte MIDI messages to the MIDI Channel of your choice.
The below is for preset 2 and will convert any 3 byte incoming message on MIDI CH 1 to the same message on MIDI CH 2. I use rules to determine the accepted incoming MIDI channel and outgoint MIDI channel.
Here are the rules of translator 2.0
// Set desired output MIDI channel 0 is MIDI CH 1 in this case
tt=0
// Get incmoing Commmand byte and mask it
rr=oo&240
// now make it MIDI CH above
oo=rr|tt
So essentially:
Translator 1.0 receives from MIDI CH1 on Controller1 and sends to MIDI CH1 to the application.
Translator 2.0 receives from MIDI CH1 on Controller2 and sends to MIDI CH2 to the application
Translator 3.0 receives from MIDI CH1 from the application and also sends on MIDI CH1 to Controller1
Translator 4.0 receives from MIDI CH2 from the application and sends to MIDI CH1 to Controller2
If you need to pass 2 byte messages, you could just model the existing translators for that. Three byte messages will handle notes and CCs. If you use PC you will need 2 byte messages. If you need MIDI clock, you will need 1 byte messages but there is no channel information on single byte MIDI messages.