VCV Rack offers loads of choices of modules. But what if you want to build your own? Then there’s Prototype – and now it works with the free graphical patching environment Pure Data, so you can create without coding.
Pd is graphical, capable of all kinds of sound tricks, well documented online, and free. So it’s a great way to for instance build a weird oscillator or delay quickly.
Here’s how to use it. Prototype is an official VCV Rack module, but not installed by default, so first head to the Library to install it:
Once you’ve restarted, you can instantiate Prototype as a module. You’ll need to point your copy of Rack at the location where your latest version of Pd is stored. Click the top of the Prototype display and choose Set Pure Data Application, then navigate to the appropriate directory.
The easiest way to understand how to use the two together is to browse through the basic examples included in this build. Right-click on the module and select Plugin > Open plugin folder. Then inside /examples, you’ll find templates and examples for multiple environments, including Pd.
So, for instance, choose vco.pd and try connecting an output (to route signal from the oscillator), then an input (to experiment with frequency modulation). You can also turn knob k1 and change the frequency.
Prototype is actually a very capable environment – true to its name. So there’s a fair set of functions accessible from inside Pd in Rack:
- Audio input (via adc~) from the 8 ins (and obviously audio-rate signal can also be used as control – this is a modular environment)
- Audio output (via dac~) to the 8 outs
- Control input from 6 knobs on the module panel
- Control input from 6 switches (buttons) on the module panel (essentially a toggle in Pd parlance)
- Set color of 6 lights (feedback only) and 6 switches
- Write text to display
Pd support is based on libpd, the open source embeddable implementation. The work was done by CHAIR (Clemens Wegener and Max Neupert) and – this is cool – was supported entirely by community fundraising.
Developer Peter Brinkmann just celebrated the 10-year anniversary of the libpd library’s first launch, together with me and Hans-Christoph Steiner. (I can take credit for… well, hatching some of the idea and then basically encouraging the other Peter to do most of the work.) Now Dan Wilcox has done a great deal of the work bringing libpd into its present state.
The only thing that’s missing from libpd in Prototype is the ability to change labels on the panel, which would be nice. I suppose one could go create a dedicated Pd-based module; libpd also supports array access and readback, which could have some powerful applications – but that’s getting ahead of this project. (And it’s open source, so you could fork this.)
There is one major limitation, and it’s the fault of Pure Data, not VCV Rack or Prototype – for now, Pd (and by extension libpd) can support only one instance at a time. That is, you can’t have two Pd engines each running their own Pd patch at the same time. In VCV Rack, you’ll see this:
Multiple instancing is on the roadmap for libpd, though, and I have heard encouraging signs that may happen soon.
In the meantime, you can make your patch as complex as you like – you just have to have only one module in which it runs. That means also limited knobs and switches, but you could still do a lot.
Check out announcements and more resources on the VCV Rack Community:
The Vult language also looks really cool – maybe a nice way to graduate to writing to actual DSP code and not only relying on scripting languages or patching as your interface.
Guess I need to do some learning, and some prototyping, and some coding, and some tutorial writing, and some music making. Stay tuned.
And yeah, a free patching environment with a free patching environment. Now let me reference something that isn’t Pimp My Ride.