Skip to content
This repository has been archived by the owner on Mar 27, 2020. It is now read-only.
/ skjack-vcv Public archive

First-class JACK support for VCV Rack

License

Notifications You must be signed in to change notification settings

Skrylar/skjack-vcv

Repository files navigation

This plugin aims to bring first class support for the JACK Audio Connection Kit to VCV Rack.

It has not been profitable to work on, so it is maintained or developed on a whim.

You are still free to send a tip or commission a module.

https://www.ko-fi.com/img/donate_sm.png

Modules

JACK Audio

doc/module-fs8.png

  • There are four input and four output ports.
  • Output ports are marked with an off-color accent.
  • Each port may be named.

Four ports is not enough for me!

You have some options:

  1. Just add another JACK Audio. Seriously.
  2. Add one of the special 8 inbound or outbound modules.

JACK modules are designed to cooperate with one another. They will feed audio to JACK or to Rack and only one of them will block Rack while waiting for audio to be processed. You can consult the power meter for proof.

8 RACK->JACK

This is the same as a JACK Audio excepting all ports output to JACK.

8 JACK->RACK

This is the same as a JACK Audio excepting all ports output to Rack.

JACK Quirks

Port names

0.6.7

Port names have -in or -out suffixes added in the background. This matches how applications usually work in the JACK ecosystem. It also makes it possible to run Rack effects where both input and output channels are named “reverb.”

Input ports must have unique names across all inputs in a Rack instance. All output ports must have unique names across all outputs in a Rack instance.

This is a compatibility breaking change.

0.6.6

All port names had to be unique across an entire Rack instance. Names appeared exactly in JACK as they appeared in Rack.

Latency information

We do not currently calculate and report processing delay between a signal entering Rack and exiting it. This means none of the delay compensation logic works and you may end up with desyncs if running more than one Rack instance or certain DAWs.

The issue is known and some attempt to fix this issue is scheduled.

Compatibility

Patched Rack’s with JACK in RtAudio

Some users are running versions of Rack which contain patched RtAudio libraries. These patches allow you to use JACK with the native Audio modules.

Experience has shown that while this works enough to get audio to and from Rack, it does not integrate well with the JACK ecosystem. I do not support these special builds.

Audio and rcm’s Audio 16

ALSA, JACK and Pulse Audio tend to compete for exclusive access to the sound card. Having an Audio module from Core, or an Audio 16 from rcm will result in issues.

These issues have mostly been reported as:

  1. A crash when exiting Rack,
  2. Rack crashing when trying to delete the Audio or Audio 16.

Some workarounds are known:

  1. Delete the offending models from patches,
  2. Leave them be (leave the Audio modules blank so they read “ALSA” but do not show a device such as default-8.

Systems without a JACK server

Special support has been added to address:

  1. Running on machines with JACK, but the server is turned off.
  2. Running on machines where no JACK server is even installed.

In both cases the modules will simply do nothing. You may still name ports and hook them up, and those will work if loaded in to a Rack instance with a functioning JACK server.

Licenses and Credits

Graphics

The module graphics template was designed by github user @infamedavid (David Rodriguez), and are available via CC-BY.

3270 Font

The 3270 terminal font is used under the BSD-3 license.

SkJACK

This plugin is made available under GPL3.

Previous versions were available under the BSD license. As Rack itself is no longer available under those terms, and we incorporate code from that project, this is no longer the case.

JACK

A copy of the JACK client headers are included under src/jack, which are made available to us under the LGPL license.

We have included them because it primarily simplifies compiling the plugin on Windows (MinGW2) targets.