Rack v1 development blog

Okay, untested since I don’t have all my computers with me. Tell me if this is stupid: https://github.com/VCVRack/Rack/blob/v1/src/system.cpp#L100-L111

That does not look stupid at all. It look like a more coherently written version of what ThreadBooster does. The caveat on linux from my manual will (I think) apply here:

"You can always set the real time priority of Rack if run as root, but we do not recommend that. Instead you may use setcap to give VCV Rack permission to use real-time priority.

sudo setcap cap_sys_nice=ep <path to Rack>

After giving Rack this ability, it will stay set until the Rack executable file is changed, either by downloading a new one, or building a new one on top of it."

(of course if you feel like being extra cautious, this could be some settable option. I think Reaper takes that approach, although that program gives one too many choices!)

Didn’t build on Mac: #1190

I notice that the Undo and Redo menu items don’t tell you what they will undo or redo. Many applications will say undo insert module or undo remove wires. Any though of putting that into 1.0? (I realize it’s a pretty minor feature, it’s just that I’m doing some undo stuff now and want to do it correctly).


That would be trivial, good idea.


I’m not really up on what goes on with prioritising threads but it seems to have squeezed a little more performance in my tests.

As noted in that thread what I am listening for is clean audio without clicks caused by CPU spikes due to other processes on my iMac. This is a fairly marginal business and the error here is probably -1/-2 VCO-1s.

The iMac has had as much cruft stopped on it as I can so it probably doesn’t represent real world usage of most people’s computers.

Forgive my ignorance but is thread boosting/prioritising more likely to have a greater effect when Rack is competing against other processes that are using significant CPU as opposed to when it is competing with daeamons or other process with <1% CPU ?

My 2 cents, I would never look at the undo/redo item call I would just hit the ctrl+z or ctrl+y shortcuts.

^ Same, but it’s low-hanging fruit.

Added history action names.


Polyphony modes are now available in MIDI-CV: Rotate, Reuse, Reset—except Reassign. I forgot what that does so unless someone needs it (and can explain what it does), I’ll remove it.

Currently it’s a bit difficult to test because there are no polyphonic VCOs, VCFs, VCAs, and EGs yet, but I’ll eventually make all of Fundamental polyphonic.


Added MPE poly mode to MIDI-CV.


Theoretically this should work, but I don’t have an MPE controller to test. :frowning: Anyone want to try?


You can now Ctrl-click an input port to clone the existing cable.



Yeah, I agree with Coirt that most people don’t look at the labels, but it will be nice as everyone eases into V1 to have them. And it will help modules that do support their own history events advertise that they do so.

“Panic” - that sounds… interesting :thinking:

Panic buttons usually issue an “all notes off” message and/or immediately cut audio leaving the DAW.

@Nik What I’ve found with

Thanks for these performance-related features Andrew.
Happy to test MPE functionality but you’ll need to provide me with a built version of the v1 prototype as I don’t use my studio workstation for development (beyond simple Max stuff or similarly simple stuff I can build via the terminal on my Linux partition).

Sure, I’ll start posting dev builds occassionally. What’s your OS?


I just built succesfully VCVRack and VCV-Poly plugins on Win10 64bit.
Poly cables seems to work…obviously we’ll wait for Fundamental poly versions (and on my side btw i have some bug in Audio Core module that freezes Rack v1.

1 Like

Win 10.

I wonder if for “safety” reasons is better to delete the Bridge folder when building v1…

The plugin tag list has been “finalized” at https://github.com/VCVRack/Rack/blob/v1/src/plugin.cpp#L521-L601. Although, they don’t need to ever be finalized because tags can now be added to Rack at any time without breaking ABI, and tag aliases allow maintaining backward-compatibility with renamed tags. Here’s an example of how you can add tags to your plugin.json file. Tags are case-insensitive, so "function generator" and "Function Generator" are both valid.

	"modules": {
		"Unity": {
			"name": "Unity",
			"tags": ["Mixer", "Utility", "Dual"],
			"description": "Adds or averages multiple signals"