Controlling patch-cables connections through MIDI

Hello, The MIDI mapping functionality is a game changer, but I was wondering if there is an option for full control of the VCV Rack through the MIDI protocol. Is it possible to use MIDI commands (SysEx or NRPN?) to select which INs and OUTs from the modules are connected? It would be amazing to have a MIDI controller that has only knobs and real patch-cables that only send MIDI data to control the VCV Rack without the need of a mouse and a screen. Would feel like an actual modular system. If it is not yet possible I have some ideas of how that MIDI protocol could be structured. Anyone know if it is a hard thing to implement?

The Korg MS20ic controller worked that like for the very specific mapping to a virtual MS20 software.

It seems like a great idea on paper but I’d rather have a a “real” MS20 to use. … or a virtual modular system like VCV Rack that is not bound to the mortal coil of physical hardware.

Actually, I think a better way to create a performance interface would be a matrix controller like a monome. There would need to be a vcv rack module that would be the software counterpart, a software routing matrix. I could then in realtime be able to send signals to various parts of the matrix and control modulation as well. Then have a smaller MIDI controller to handle more global performance settings.

I created my INTERMIX module for that. Feel free to try it out and let me know what you think :smiley:

Yes, good reference! It would be amazing to be able to create a custom MIDI interface like what the MidiLar guys are doing https://midilar-controller.webnode.sk/ but with the possibility to control knobs and switches but also how the VCV Rack modules are patched. The Korg MS20ic interface does that in a nice way, but creating such a tangible interface for VCV Rack is much more challenging since there are so many modules… It would need a more generic protocol to map MIDI information to patch connections.

I agree the “real” MS20 would be indeed better than a computer with the virtual version of it plus a physical MIDI controller as big as the original synth. But I disagree a virtual system like VCV Rack is better than a real modular setup. The mouse and screen interface is not the ideal one for playing modular synths. It is better than the hardware modular because it is lighter, easier to transport not to mention how much cheaper it is… But the tangibility of knobs, patch chords and switches are much better for making music…

With a physical MIDI interface for VCV rack we can have lighter systems to carry around, cheaper than the original modules and with a much better interaction experience.

The MIDI controller with real cables to patch the modules was just one exemple of what could be done if there was a protocol to control the patch connections through MIDI. There could be a physical routing matrix with a monome-like controller or many other possibilities of research on new interfaces for modular synths. What I want to know is if this protocol already exists or how hard it would be to implement it. How does the software handle how each “CV” connection is made through the modules?

I don’t know enough to answer your questions, but have you looked through the development tutorial or the Rack API docs?

https://vcvrack.com/manual/PluginDevelopmentTutorial

This topic has been discussed multiple times before.

Thank you Ben for the references. I started this topic because I couldn’t find any posts about this issue. I will read them as soon as I can

These solutions are really good and is already good enough for my first prototypes, but I was thinking how hard would it be to implement a more structural solution similar to hardware MIDI synths that can control any parameters through MIDI. It would be amazing if the VCV Rack could have a SysEx Id where the data could be organised with specific values for each manufacturer and for each module and each knob, button or patch connection could be controlled through a unique SysEx message that could be directed in both ways. It could open new possibilities for hardware products that could be made specifically for each module.

I believe each manufacturer and product already have IDs that could be used for that, and I know each knob and button is already ordered by the system so it would be easy to implement such a protocol, wouldn’t it?

This could lead to the invention of many completely new interfaces for Modular synths that could then be appropriated back to the hardware modular synth World. Interfaces like the Reactable for example could be programmed to control VCV Rack, wouldn’t that be amazing?

I don’t think designing some sort of MIDI protocol should be too hard. The main challenge will be how to address specific input and output ports of modules that can change any minute. Even if you could answer this question from the technical side, how would an user know which port on his hardware device is mapped onto which port in Rack? This is already a challenge right now with parameter mapping and would be even more hard to handle if ports and cables are involved.

1 Like

You may want to look at these two projects:

1 Like

Nice! I will check these out

The idea would be to develop specific hardware MIDI interfaces for each (or a group of) specific modules. The idea of SysEx messages for controlling parameters is to have a specific set of controls that are Exclusive to each functionality of each system.

This wouldn’t be a solution for a general purpose MIDI controller to control the parameters of a module in VCV Rack.

If you want to use generic MIDI controllers as a VCV interface you would have to pre-program each setup as you usually do with the Midi Mapping module and the matrix switches.

The SysEx implementation would be to stimulate hardware interface developers to create specific modules for each (or a group of) VCV Modules, which is a lot!!

hey @tragtenberg, did you get any further with this? I think it’s an interesting concept.