Skip to content

simotek/stkjack-vcv2

 
 

Repository files navigation

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

This is a port of Skrylar’s JACK Audio to VCV Rack 2 with some added UX enhancements

Known Issues

  • Currently we create new ports instead of renaming them, as I rename everything first it’s not a huge issue for me #1
  • Currently sometimes Rack crashes on close #3

Modules

JackAndRack

doc/all_modules.jpg

  • 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 JackAndRack. 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.

RackJack8

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

JackRack8

This is the same as a JackAndRack 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.

Building the module from source

  1. Clone the VCV Rack sources locally `git clone https://github.com/VCVRack/Rack`
  2. Create a symlink to the repo at `/opt/rack`
  3. Build a copy of rack a) Update Rack’s submodules `cd /opt/rack` `git submodule update –init –recursive` b) Build Rack’s submodules `cd /opt/rack/dep` `make` (Unfortunately I had to uninstall pipewire and reinstall jack to get this to work) c) Build Rack itself, `cd /opt/rack` `make`
  4. In the stjack-vcv2 repo run `meson build` install anything that’s missing until its succesful
  5. Compile the plugin `cd build` `ninja`
  6. Run `gen_package.sh` to create the .vcvplugin, this will appear in `dist`

Licenses and Credits

Graphics

The panel graphics in the res directory is licensed under CC BY-NC-ND 4.0. You may not create modified adaptations of these graphics.

StJACK

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.

About

First-class JACK support for VCV Rack

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 76.7%
  • C++ 22.4%
  • Other 0.9%