I like to perform VCV Rack with a graphics tablet display, and a master MIDI Keyboard. Because of this esoteric setup, scrolling around the rack was a pain point for me.
After using @Frank Buss’ Shaker, I realized you can scroll the rack from a module! So I peeked at his code, and decided to make a module that would satisfy my own needs. I hope you will find it useful too.
UnDuLaR adjusts to the size of your rack without any setup.
While you can bind every control to your MIDI gear, I recommend using only one movement input. Build a rack that is no wider (or no taller) than your screen at your preferred zoom level, bind to MIDI either a trig input pair or a scroll input, then lock the unused axis with its button. You do not want the mental overhead of navigating two dimensions while performing.
The four directional inputs take trigs and wrap around, while the X and Y input take 0~10V.
By pressing the dangerous Lock buttons, UnDuLaR fully takes over scrolling on that axis, preventing scrolling from the scrollbars, scrollwheels, arrow keys, middle click, or from dragging cables at the edges of the screen.
You can also automate cable tension, opacity, and zoom. But be warned, zooming in and out in VCV Rack is neither fast nor reliable enough to ever attempt during live performance.
If you find yourself unable to scroll back to UnDuLaR, use this menu option temporarily to re-enable scrolling:
Engine > Sample Rate > Pause.
Make sure you triple check the module works to your expectations every single time you’re about to take it on the stage, especially after a Rack update! I’ll hear no complaints about botched performances, the module is provided as-is, with zero guarantee it will work with your setup, and zero guarantee that it will continue to work in the future.
However, if it doesn’t work for your live setup, please let me know, no matter how weird your setup might be, we might be able to figure out a way to make it useful for you.
UnDuLaR is available from the Library.
It’s rather self-explanatory, but you should read the unabridged documentation on Github for details.