Rack v1 development blog

Big YAY!


Yes, afaik all DAWS run elevated. I would prefer not to have to make a multi-threaded version of Thread Booster, but I will if VCV doesn’t do it.

You might not find this valid, but when I was making Thread Booster I make a plugin called “CPU Hog” that spun up a bunch of thread at normal priority. Seemed like a reasonable bad case to me - like if you had a bunch of tabs open in a browser and they were all doing thing. Or if windows spun up some background process.

Of course using this “load test” raising the thread priority made an enormous difference.

Ardour will fail to run if it doesn’t have permission to get real-time thread priority. I don’t know of any other DAW that does (presumably REAPER and FL either were allowed by default on Windows, or they handle denial more gracefully.)

[Ignorance ahead] Doesn’t the elevation have more to do with the code directly dealing with the interface? Code I’ve seen so far wants RT to shuttle audio to the device, but otherwise doesn’t care how it gets generated.

What OS for Ardor? Squinky Labs thread booster requires that you give it one time permissions on linux, documented in the manual. On mac and win we use the highest priority that doesn’t require special permissions.

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).