VCV Rack as a hardware instrument in Bitwig on Windows

This took me a while to figure out, so this is as much documentation for myself when all is lost, as hopefully a way to help someone else.

This will get Bitwig and VCV to talk both ways through control voltage. It will use JACK as the mediator.

Getting JACKed:

First thing is to download and install JACK: Downloads | JACK Audio Connection Kit

During the installation, you’ll be asked what components to install. Make sure “JACK-Router ASIO Driver” is selected:

01 JACK Setup

Keep “QjackCtl application” selected as well and complete the installation.
(Not sure if a reboot is required, but i’m always in favour of “better safe than sorry”)

To make sure nothing goes haywire, i’d advise you to start VCV Rack, initialize a new patch, and point your Audio-8 module (or -16, you’ll learn to love it) to:
Driver: ASIO
Device: (No Device)
And close VCV. It tends to get mad otherwise…

Configuring JACK.

You should now have QjackCtl in your startmenu. Run it and bask in the glory of fresh and modern UI design!
Press the “Setup” button on the right.
In the “Settings/Parameters” section, select the appropriate interface, samplerate and frames/buffer (buffersize):

02 JACK ASIO Settings

If have not messed with the “Settings/Advanced”, “Options” and “Display” sections.
Some changes in the “Misc” section for ease of use:

03 JACK Misc Settings

Press “OK” and you’re done here (fingers crossed)

(cont.)

4 Likes

Make sure there are no applications running that use the ASIO driver you’ve just set and press the “Start” button on the left.
If all goes well it should look something like this:

04 Server started

The yellow letters show the server status (it should say started). The green letters show the transport status, so don’t worry about the “stopped” there. I’ve not found a use for the transport here, but your mileage may vary.

Connecting the dots.

We’re going to use the JACK-Router ASIO driver in VCV. And that will work though the Audio-8 or Audio-16 VCV modules. These have 8 or 16 input and output ports respectively. And it would be cool if we could use all of them, but since the JACK-Router initially only has 4 in/out ports we shall have to remedy that.

The files we have to change for that are located in the JACK installation directory under “Program Files”, so we need to start our text editor in administator mode (right-click → Run as administator):

Open “C:\Program Files\JACK2\jack-router\win64\JackRouter.ini” and change it to read like this:

[IO]
input=16
output=16
float-sample=1

[AUTO_CONNECT]
input=0
output=0
alias=1

Which, surprisingly, results in 16 input and output channels later on.
The float-sample setting is there for (in our case, hopefully non-existant) compatibility issues.
I’ve turned AUTO_CONNECT for the inputs and outputs off. If not, the default system input and output (mic and speakers) will always get connected to VCV Rack when it starts (which I don’t want. We’ll see later where that applies).
I’m not sure what the alias setting is for, so i left it alone :slight_smile:

Save the file, close the editor. There is an identical file in "C:\Program Files\JACK2\jack-router\win32" so i copied the modified one from the win64 directory to win32 to be safe.

I’m not totally sure if it’s necessary, but it doesn’t hurt to go to QjackCtl and press “Stop” and then “Start”.

And here we go. Run VCV. Plop in an Audio-16 module and set it as follows:
Driver: ASIO
Device: JackRouter (1-16 in, 1-16 out)

You should see the Rate and Blocksize at the values you set in QjackCtl setup and all ports light up green.

Now switch back to QjackCtl and press the Graph button. You should see something like this:

06 Graph

Remember that AUTO_CONNECT thing when we were editting that file? If we had left input and output on 1, capture 1 and 2 would be connected to the in1 and in2 of Rack and out1 and ou2 of Rack would be connected to playback 1 and 2.
If you just want to wing it in VCV, without Bitwig, you can still draw a connection from out1 and out2 of Rack to playback 1 and 2 to directly output sound, but for now leave it as is.

That “Rack” with the 16 ins and outs directly corresponds with the Audio-16 module. The Rack’s in1 to in16 in the graph in QjackCtl are the port under “From device” in the Audio-16, and the out1 to out16 are the ports under “To device”.

And now we get to the beauty of JACK support in Bitwig.

Fire up Bitwig, go to your audio settings and set driver model to “JACK”.

Under input busses, click “Add stero”, name it “Rack out 1/2” and select “Rack / out1” on the left dropdown and “Rack / out2” on the right dropdown. There you go, Bitwig will now receive sound from port 1 and 2 under “To device” in that Audio-16 module.

Should you want to recieve other sounds to other tracks (or control voltage, triggers, etc for use in the grid for instance), add another mono or stereo input and map it to the ports you use in the Audio-16 module.

07 input busses

Under output busses, add two mono busses and map them to “Rack / in1” and Rack / in2", resp., like so:

08 output busses

We’re going to use these to send V/Oct and Gates to VCV. They correspond with ports 1 and 2 under “From device” in the Audio-16 module.

We’re all done with the settings in Bitwig. Time to play.

Add an instrument track and add the “HW CV Instrument”.
Set “Pitch CV Out” to “Rack in 1”
Set “Gate Out” to “Rack in 2”
Set “Audio In” to “Rack out 1/2”

I’ve attached a small VCV patch you can use to test this setup. It uses some Bogaudio modules, so be sure to be subscribed to them.
Load it and set your audio device in the Audio-16 module to JackRouter.

Your Bitwig device should look like this:

09 Device untuned

If you have the patch loaded in VCV, you can try playing a scale on your keyboard and will wrinkle your nose in disgust. You get sounds, but well out of tune. No fear, we can fix that with one press of a button.

But first remove your headphones or lower the volume, because it gets nasty for a second.

Now, press that “Tune” button.
And now you can play VCV from inside bitwig.

You can add more input and output busses to send voltages back and forth, etc.

You can also go back to QjackCtl and see all the connections we’ve just made in that Graph window, if you’re interested:

10 Connections

Hope that helps

Things to keep in mind:
Make sure QjackCtl is up and the server is started before starting VCV and Bitwig.
If you want to use either stand-alone, you have the option to not have JACK running and selecting your regular old ASIO device.
If you want to use VCV stand-alone, but still through JACK, make sure that, in the Graph screen in QjackCtl, you have Rack’s out1 and out2 connecting to the system/outputs you’re using

Sorry for breaking it up. New user resctrictions applied…

EDIT: Couldn’t attach the patch, so here’s a URL: Demo for HW CV Instrument in Bitwig | Patchstorage

EDIT 2: The HW Clock device now sends nice pulses as CV from Bitwig to VCV as well, which might come in handy

EDIT 3: This also means you can use the “HW CV Input” modulator with VCV being the source. Or the “HW In/output” “CV in/output” and “CV Pitch output” modules in the grid with VCV.

Just make new busses and throw those volts back and forth :slight_smile:

Firstly, this looks very interesting. Will try it out for sure though sometimes getting these systems to play nice when syncing up can be an issue.

You said

so is there a way to use volt per octave note and gate data sent from VCV Rack to translate to MIDI inside Bitwig to send to a VST or even a Bitwig hosted external MIDI instrument?

1 Like

Haven’t tried it yet, but i see no reason why you couldn’t use the “HW CV Input” modulator on any device you want. Just make a mono input bus in bitwig and map it to “Rack / out3” for instance and connect the voltage source in VCV to port 3 under “To device”

This is completely volts focussed. You can always send midi data through loopMIDI

1 Like

Using this Bitwig device with these settings (note the rate and rate unit on the left side) sends a rock-solid 24 pulses per quarter note (ppqn).

clock

Takes at max 2 bars (or 1, if you set the rate on the right side to 1) to get a fully stable readout of bitwig’s bpm on the vcv clock if you change it in bitwig. No fluctuation in BPM on the vcv side (as opposed to using midi signals)

I’m starting to think VCV might like volt inputs a lot more than midi inputs [/slight sarcasm]

1 Like

You can do nearly the same if would change Jack on ASIO link pro. Here is the overview for Ableton but I think it’s also situable on Bitwig. But I’ve seen ASIO4all on your screens then don’t sure if you get a proper stable work with this driver, native asio driver for dedicated sound card would be much better.

1 Like

Interesting. Will look into it this afternoon. Looks like i can at the very least least upgrade my 16 channels to 64 (thanks to Stoermelder’s Audio-64 module). Just need to edit the jackrouter.ini file i mentioned. I think i prefer my method, once it’s setup, because of Bitwig’s JACK support though. Still going to try to get it working though :smiley:

Thanks!

I tried Jack with ableton too but it was not quite stable. And also a cpu thing, probably Jack will add some cycles too but I don’t sure

Has anyone compared this to that approach?