Live remapping midi CC assignments

Hi,

I’m looking to control parameters of my octatrack with a Midi Fighter Twister - but I don’t know which ones. When I find an interesting parameter while twiddling on them octatrack, I want to be able to quickly assign an MFT knob to it. Problem is, updating MFT’s CC assignments requires using its editor software with a mouse and monitor, not to mention it doesn’t even have a Linux version.

Instead of changing MFT’s configuration, I figured I could make a setup where a midi processor running on RPi remaps midi data coming from MFT. It could also implement a midi learn mode:

  • Press key combo on MFT to enter midi learn mode (maybe top two side buttons)
  • Turn the MFT knob to be reassigned
  • Turn the octatrack knob to assign it to (I think octatrack can be configured to send out the corresponding CCs on knob movement)
  • Extra fancy version: use the lights on MFT to indicate channel and CC number of the assignment
  • Extra extra fancy: allow user to dial in a channel and CC number on the MFT.
  • Press side button to confirm remapping.

The ability to remap controls in a totally standalone way would be a powerful tool for MFT. I think some faderfox models allow this.

This should be possible in theory, but I’m not familiar with the software in this area. How could I implement something like this?

  • Could the whole thing be a puredata patch?
  • Should I look for a general midi processing library and try to write a wrapper around it?

Thanks for your help!

It can be done in C, C++, Python, PD, etc… You should pick the tool & language you are most comfortable with. :slight_smile:

You can use aconnectgui to see how the MIDI devices appear to the OS - each hardware port appears as a port in the ALSA MIDI system that may be interconnected together according to users needs. The software programs can have their own software-only ALSA MIDI ports that they use for reading and writing MIDI data.

You’d have your program that you write create 2 software MIDI ports, one for communicating with MFT, the other with Octatrack. The MFT and Octatrack would not be talking with each other directly, your program would forward and modify the MIDI data as necessary.