Plugin wrapper around VCV Rack

Overview

DISTRHO Cardinal

Cardinal, the Rack!

! THIS PROJECT IS A WORK IN PROGRESS !

This is a DPF-based plugin wrapper around VCV Rack, using its code directly instead of forking the project.
The target is to have a proper, self-contained, fully free and open-source plugin version of Rack.
See project overview document for an overview on how the project source code is structured.

Cardinal contains Rack, some 3rd-party modules and a few internal utilities all in a single binary.
It does not load external modules and does not connect to the official Rack library/store.

Because it is using DPF, Cardinal already supports LV2 and VST2 with an extra JACK standalone mode if self-compiled.
A VST3 version is in progress, already part of the build but still experimental.

The project should be considered in beta state at the moment.

Plugin variants

Cardinal provides 3 plugin variants - "main", Synth and FX.
They are all equivalent in performance and behaviour, with only the IO and metadata that changes.
This is because some hosts are very strict on which plugins are allowed as instruments vs FX, so separate variants of the same plugin are needed.

FX and Synth variants both have 2 audio outputs, while "main" has 8.
All variants have MIDI input and output support.

Main

This variant provides 8 audio inputs and outputs and 10 CV inputs and outputs.

NOTE: Due to VST2 format not supporting CV ports, this variant is not available for VST2.

Synth

This variant provides 2 audio outputs but no audio inputs or CV ports.
Plugin type is set as "instrument".

FX

This variant provides 2 audio inputs and outputs, but no CV ports.
Plugin type is set as regular "effect".

Screenshots

Because people will ask for it. It is, well... Rack.
But a couple of modules background's have their colors flipped, because damn we want proper dark mode!

screenshot1 screenshot2

Current status

Most of the features already work, you can assume things work in general except when stated otherwise.
Currently the following features are known NOT to work:

  • VST3 support incomplete/experimental #41
  • Factory (plugin-provided) presets #58

Current builds

If you want to try this out early, checkout the GitHub actions tab.
There is absolutely no warranty, use at your own risk and all that...

Community chat

Currently we are all on #cardinal IRC room in irc.libera.chat server.
Come join us in your favorite IRC client or through a Matrix bridge.

License

Cardinal is licensed under GPLv3+, see LICENSE for more details.
An overview of the included code and linked submodules can be seen here.

Included modules

At the moment the following 3rd-party modules are provided:

  • 21kHz
  • AS
  • Amalgamated Harmonics
  • Animated Circuits
  • Aria Salvatrice
  • Atelier
  • Audible Instruments
  • Bacon Music
  • Befaco
  • Bidoo
  • Bogaudio
  • cf
  • ChowDSP
  • DrumKit
  • E-Series
  • Fehler Fabrik
  • Fundamental
  • Glue the Giant
  • Grande
  • HetrickCV
  • Impromptu
  • JW-Modules
  • LifeFormModular
  • Little Utils
  • Lomas Modules
  • Lyrae Modules
  • MindMeld
  • Mog
  • mscHack
  • Rackwindows
  • repelzen
  • Sonus Modular
  • Valley
  • ZZC
  • ZetaCarinae

Additionally Cardinal provides its own modules for DAW/Host automation, time position and internal plugin hosting.

Restrictions

Being an open-source project, all included 3rd-party modules must be opensource and have a GPLv3+ compatible license. GPLv3-only modules are not allowed.

Special care also needs to be taken with artwork licensing.
Cardinal allows the use of CC-NC because how prevalent it is across many Rack modules, but it should be avoided if possible.
Also, unless the module is really essential, CC-ND is not allowed.

Dependencies should be kept at a minimum, as otherwise it quickly grows the complexity of the build.
Online access (such as phone-home) is not allowed.

Why

Cardinal was created first and foremost as a way to have Rack as a proper open-source audio plugin.
A proper audio plugin should be self-contained as much as possible, as to not interfere with the DAW/Host. Loading external modules clearly goes against this idea.
Not to mention being open-source, otherwise we are at the mercy of the wishes of a company for what we can and cannot do, which is not something Cardinal's authors wish to abide by.

A self-contained plugin can't be overstated, as DLL/shared-object symbol conflicts can trigger hard-to-debug crashes.
While Rack tries to mitigate this as much as possible, crashes due to conflicting modules have already been seen in v2 builds.
On the other side, Cardinal redefines class and function names as needed to avoid as many conflicts as possible.

Support for ARM and non-mainstream platforms (for example BSD) has also always been missing from the official Rack since the start.
While we can patch the Rack free version to support these, same can't be done with Rack Pro with it being a closed-source product.
The online library/store only supports a very specific set of platforms too, so non-supported platforms would need any 3rd-party modules to be manually compiled to make them usable.

Unhappiness with the audio threading behaviour of Rack also plays a role.
Both audio and MIDI should be locked to the host audio thread as to minimize (or even altogether remove) latency and jitter.
The use of separate threads for MIDI is bad design, one that has been corrected in DAWs and JACK-MIDI for several years...
But Rack's use of RtMidi requires separate threading, so Cardinal does not use it.

Other relevant reasons include:

  • LV2 plugin version from the start
  • Proper dark mode support
  • Proper optimized build (because all code is compiled to a single file, we can use LTO over the whole thing)
  • Real CV ports to and from the plugin
  • Removing online access from the plugin and included modules (no phone-home here!)
  • Works as a test case for DPF and Carla
  • It is fun :)

Vs. Rack Pro

It needs to be said that Cardinal project and its author(s) do not wish anything bad to the original/official Rack project.
In fact, Cardinal wouldn't exist if not for Rack v2 release. (which has many needed things to make a plugin version work)

Cardinal and Rack should be able to co-exist friendly and peacefully, as they clearly have different targets.
It is likely most people will prefer to use Rack Pro for its official support and its big module collection (including commercial ones).

A feature comparison between Cardinal and Rack Pro can be seen here.

Comments
  • Project related news (was: Gathering interested people)

    Project related news (was: Gathering interested people)

    Leave a comment if you want to help. This does not do anything yet besides building VCV sources, I need to do some experiments for it first to see what is the best approach. Seems that we only need to create a variant of https://github.com/VCVRack/Rack/blob/v2/adapters/standalone.cpp for plugins, and then add in some hardcoded module for IO (audio, midi and transport sync)

    opened by falkTX 178
  • Build issues for BSD

    Build issues for BSD

    The bundled QuickJS breaks:

    quickjs.c:1426:5: error: use of undeclared identifier 'malloc_usable_size'; did you mean 'js_malloc_usable_size'?
        malloc_usable_size,
        ^~~~~~~~~~~~~~~~~~
        js_malloc_usable_size
    quickjs.c:1180:8: note: 'js_malloc_usable_size' declared here
    size_t js_malloc_usable_size(JSContext *ctx, const void *ptr)
           ^
    qjs.c:249:5: error: use of undeclared identifier 'malloc_usable_size'; did you mean 'js_malloc_usable_size'?
        malloc_usable_size,
        ^~~~~~~~~~~~~~~~~~
        js_malloc_usable_size
    ./quickjs.h:353:8: note: 'js_malloc_usable_size' declared here
    size_t js_malloc_usable_size(JSContext *ctx, const void *ptr);
           ^
    

    but we have the latest released version as a port/package: quickjs-2021.03.27

    Please add a build-time option to use external dependencies.

    opened by yurivict 56
  • focus issues for VST2 in Ableton Live, Bitwig and other hosts

    focus issues for VST2 in Ableton Live, Bitwig and other hosts

    Hi, finally I can get it working! Cardinal Parameter is gorgeous, thank you! VST2 has no issues with template.vcv so far so it runs. Some issues if you will:

    1. Sometimes when changing focus between DAW, explorer and the plugin itself it loses focus in module browser search field. I can't even type any symbols, every time they are different then I was intented to type and all in CAPS LOCK somehow.
    2. More annoying issue than the previous one - any action with windows explorer like save, open, literally anything causes Live's crash. It seems like you said before more porting to windows issues that the plugin itself

    Cheers! EDIT: hotkeys also don't work... EDIT2: When closing Ableton's project with 5 instances of Cardinal it hangs Ableton and got "doesn't respong" message from windows when trying close it. Seems something with RAM but I don't sure :-)

    bug help wanted 
    opened by vcvrackideas 52
  • Loading samples does not work in Linux mint 20 64 bit.

    Loading samples does not work in Linux mint 20 64 bit.

    Tried it in both reaper and carla. I using this build from the actions tab 81ad41ad. It doesn't work in any of the plugins nor the standalone. The window does pop up, but nothing happens when you select your sample.

    opened by TheGuyWhoo 47
  • Sidechain input in bitwig doesn't result in audio coming through in channels 3/4 or above

    Sidechain input in bitwig doesn't result in audio coming through in channels 3/4 or above

    bitwig i'm routing audio into Cardinal in bitwig via sidechain which in other plugins results in audio coming through channels 3/4.

    With Cardinal i receive no CV, i can route in via audio channels 1/2 without any problems.

    opened by scotttswan 22
  • Nightly version is showing up black on new instances.

    Nightly version is showing up black on new instances.

    when loading a previous project with a Cardinal instance it loads fine but if i add a new Cardinal instrument/fx it loads up with just a black screen.

    Tested on both Reaper and Bitwig.

    opened by scotttswan 17
  • Deploy Failed fron Ableton to MODULARE DUO X

    Deploy Failed fron Ableton to MODULARE DUO X

    Hi, since update 22.3 / 22.4 simply cardianl no longer works for my MOD DUO X. I tried to make any patch (even very simple) by putting a normal Plateau reverb and saving to MOD. When I restart, the pedal board loads but there will be no more audio and therefore it does not work. Also useless for anything else concerning cardinal, midi sync, internal midi.

    Error is always the same: I do a patch on Ableton through the VST, I execute the deploy that works, sending audio to the MOD duo (for example a simple connected VCO). I run the save inside the pacth bank and after reboot it won’t work anymore. To get it working again I will have to open ableton again, load the VST and deploy again. Needless to say, it doesn’t work without a computer.

    this is an example of a simple patch I made to test but it doesn’t work https://pedalboards.moddevices.com/pedalboards/62296d22c21e5a25880ccbd6 plus the prints have never been able to view the print screens inside Cardinal MINI.

    Tried to uninstall everything and install again, it just doesn’t work in my case anymore.

    From the video you can see clearly, it works as long as you do not turn off the device, even saving as you can see there will be no more way to make the clock emit, both internal and external

    https://www.youtube.com/watch?v=5yI3FDOmPt8&feature=youtu.be

    thanks for any help

    attached a simple pact made on the vst TEST_VCO.vcv.zip

    Tried using the VST on reaper but no results

    opened by aveniridm 17
  • Opening and saving files in Ableton live not working in 22.05

    Opening and saving files in Ableton live not working in 22.05

    I just updated to Cardinal 22.05 and saving and opening files does not work anymore in Ableton live 11.1.1 on macOS 11.6. Did work in the previous version.

    opened by Gsbrt 15
  • Missing entry method in VST2 plugin

    Missing entry method in VST2 plugin

    Since awhile I cannot load the vst files anymore, they don't appear in Ardour nor in Bitwig.

    Ardour info scanning: _[Info]: Scanning: /home/sn/.vst/CardinalFX.vst/CardinalFX.so [ERROR]: Missing entry method in VST2 plugin '/home/sn/.vst/CardinalFX.vst/CardinalFX.so' [WARNING]: Cannot open VST2 module '/home/sn/.vst/CardinalFX.vst/CardinalFX.so' Scan Failed.

    [Info]: Scanning: /home/sn/.vst/CardinalSynth.vst/CardinalSynth.so [ERROR]: Missing entry method in VST2 plugin '/home/sn/.vst/CardinalSynth.vst/CardinalSynth.so' [WARNING]: Cannot open VST2 module '/home/sn/.vst/CardinalSynth.vst/CardinalSynth.so' Scan Failed.

    [Info]: Scanning: /home/sn/.vst/Cardinal.vst/Cardinal.so [WARNING]: Cannot open VST2 module '/home/sn/.vst/Cardinal.vst/Cardinal.so' Scan Failed._

    If I remember correctly this started happening around the time Cardinal got renamed to CardinalFX

    opened by sc3sc3 15
  • Reaper Win11 x64 rendering issues - HiDPI

    Reaper Win11 x64 rendering issues - HiDPI

    Hi there! Thank you for your effort on a great little project.

    Cardinal Commit: 6c82749f2a19dac13af79cb4ecff0c6b0a8845d0 : "Make host audio meters independant from each other" Reaper version: v6.49/win64 rev 9cce1b Issue: range of crashes + display corruption issues in Reaper.

    LV2 - crashes application on plugin load win11-x64-reaper-lv2-crash VST3: crashes upon click / interaction. win11-x64-reaper-vst3-crash VST: Display misrenders and click interaction with drop down boxes misses target. lots of missing visuals. win11-x64-reaper-vst-corruption

    opened by Semiote 14
  • No keyboard input in reaper, Vst3 crashes reaper

    No keyboard input in reaper, Vst3 crashes reaper

    -Keyboard input doesn't work at all, only mouse input. (I thought this was just a matter of it not being supported yet at first, but realised it works in Carla standalone. It also works within carla vst.)

    -Vst3 crashes reaper, lv2 and vst loads fine.

    -In ShapeMaster from MindMeld, when you change tabs at the top the length knob disappears and you have to copy and paste the instance of Cardinal to get it back, or close and reopen the project. This happens within Carla as well.

    If there's a way to supply logs for these issues I'd be happy to do that, just tell me how.

    opened by TheGuyWhoo 14
  • AU crashes live

    AU crashes live

    Latest version of cardinal gives a red warning of a serious crash on latest Ableton live and closes Ableton.

    au synth Mac catalina I'm able to open vat3 but not AU. Thanks in advance

    opened by steveparkerdj 0
  • Aaron Static's ChordCV display glitches

    Aaron Static's ChordCV display glitches

    Tested on Windows 11 with Cardinal 22.10 both Native and Jack

    Video of how it looks on my machine: https://user-images.githubusercontent.com/44178021/203320081-64163497-af5a-426a-b69d-ef68a4cc995c.mp4

    All the other modules from Aaron Static are displayed correctly, this is the only one that have these glitches.

    Edit: Tested on Linux, the same glitch appears there too.

    opened by Yoppez 4
  • Save sample option doesn't save recorded samples in Lomas sampler, VST3

    Save sample option doesn't save recorded samples in Lomas sampler, VST3

    As of 22.10, the Lomas sampler will only save changes to a loaded sample, but will not save a newly recorded sample even when using the File > Save as / Export option.

    Expected behavior: a pop-up browser opens to browse where to save the new sample, when selecting the "save sample" option. Current behavior: nothing happens.

    opened by GBaige 0
  • Cardinal native on Windows responds incorrectly to midi keys

    Cardinal native on Windows responds incorrectly to midi keys

    To reproduce: open Cardinal Native, setup the midi channels to polyphonic, play a few notes. The signals remain on even when the key is released, and the midi is generally just messy in its response.

    I'm on windows 11 vers 22H2.

    Somewhat linked to this, polyphony seems to completely break when I connect an fx plugin (mutable instruments clouds, or plateau) before a mixer on the chain. I'm not sure if it's a bug, but I wouldn't expect FX to interfere with polyphony on oscillators. To be extra clear, when I say "polyphony breaks", I mean that it responds arbitrarily to polyphony and mostly just waits till the first voice is triggered.

    opened by Radiofloyd2351 5
  • Host MIDI module not receiving midi notes from controller

    Host MIDI module not receiving midi notes from controller

    I am running cardinal Native standalone, I have a controller that works fine in ableton, but when I use cardinal the Host midi module wont receive any notes.

    opened by Drozzas 0
  • Size is not saved with patch for some resizable modules, VST3

    Size is not saved with patch for some resizable modules, VST3

    Some modules such as JW Modules Full Scope and Tree can be resized. However, they will reset when saving and loading the same preset/patch. The issue may be related to #415 where the text editor will shift other modules to its left or right if it was resized before saving and loading the same preset/patch, looking as though the module's size had reset.

    Steps to reproduce:

    1. Load either JW Modules Full Scope or Tree, and resize to make longer
    2. Save as / Export the preset
    3. Open / Import the same preset

    Expected behavior: the module's size remains the same as it was when the preset/patch was saved.

    opened by GBaige 0
Releases(22.11)
Owner
DISTRHO
DISTRHO
Header only wrapper around Hex-Rays API in C++20.

HexSuite HexSuite is a header only wrapper around Hex-Rays API in C++20 designed to simplify the use of Hex-Rays and IDA APIs by modern C++ features.

Can Bölük 126 Nov 24, 2022
A Walkie-Talkie based around the ESP32 using UDP broadcast or ESP-NOW

Overview We've made a Walkie-Talkie using the ESP32. Explanatory video Audio data is transmitted over either UDP broadcast or ESP-NOW. So the Walkie-T

atomic14 255 Nov 14, 2022
around — adaptive rounding operation

around — adaptive rounding operation Attempts to perform nice rounding of a floating point number, like a human would do. Usage: around.h #include "ar

Jan Ringoš 9 Oct 21, 2022
Growtopia internal cheat focused around enhancements and framework, that is loaded automatically. By: ama6nen

CREDITS TO AMA6NEN ORIGINAL REPO: https://github.com/ama6nen/INZERNAL INZERNAL INZERNAL has been discontinued for public usage and a private version t

TheC0mpany 12 Nov 4, 2022
RaspberryPiCM4Handheld7Inch - A single source for all of the information around my Raspberry Pi CM4 7" Handheld

Raspberry Pi CM4 Handheld 7 - Aegis" A repository for the Aegis, a 7" Raspberry Pi CM4 handheld device. NOTE: This is still a work in progress. The de

null 241 Nov 18, 2022
Project to remove the 'dotted focus box' around your selections in Windows 11.

Thank you https://github.com/mrexodia/NoFlashWindow for providing this template. With out it this would not have been as easy. Do not run the 32 bit i

null 20 Nov 29, 2022
imGuIZMO.quat is a ImGui widget: like a trackball it provides a way to rotate models, lights, or objects with mouse, and graphically visualize their position in space, also around any single axis (Shift/Ctrl/Alt/Super)

imGuIZMO.quat v3.0 imGuIZMO.quat is a ImGui widget: like a trackball it provides a way to rotate models, lights, or objects with mouse, and graphicall

Michele Morrone 271 Nov 19, 2022
IA32-compatible operating system themed around bees.

Table of Contents Apiofirm - an operating system for IA32-compatible architectures. Features Bootloader Building i686 Cross Compiler modifications Api

null 4 Feb 6, 2022
mini-plugin host as plugin

DISTRHO Ildaeil DISTRHO Ildaeil is mini-plugin host working as a plugin, allowing one-to-one plugin format reusage. Load a VST2 plugin inside a LV2 ho

DISTRHO 56 Nov 22, 2022
An Arduino wrapper to @sdima1357's usb_soft_host esp-idf example

ESP32 USB Soft Host library for Arduino IDE This is mainly a wrapper around the excellent work of Dmitry Samsonov (@sdima1357) with esp32_usb_soft_hos

tobozo 142 Nov 26, 2022
C Wrapper for skottie

Skottie can only be linked statically on the windows platform. If you use SkottieWrapper, you don’t need to directly link the Skottie library and allow C language projects to use Skottie indirectly

Jiong Chang 7 Apr 21, 2022
A simple wrapper for 'pacman' with a syntax similar to 'apt' to help people transitioning to Arch and Arch based distributions like Manjaro.

aptpac aptpac is a program which helps with the transition to Arch Linux and Arch based distros like Manjaro. It simplifies using pacman as it works l

Itai Nelken 17 Sep 26, 2022
TouchEngine wrapper for openFrameworks

ofxTouchEngine TouchEngine wrapper for openFrameworks Caution This repository is in very rough and experimental stage.

nariakiiwatani 9 Jan 22, 2022
Wrapper DLL for NieR Automata (PC ver.) to disable LODs & fix AO issues

NieRAutomata-LodMod An XInput/DXGI wrapper DLL that hooks into NieR Automata (Steam ver.) and disables object LODs, improving visual quality & fixing

emoose 24 Jul 9, 2022
Standalone MinHook wrapper for Golang.

Standalone version of GoMinHook! Credit to https://github.com/NaniteFactory/gominhook and https://github.com/TsudaKageyu/minhook as almost all of the

null 3 Jun 4, 2022
Python wrapper for DMLab maze generator

dmlab-maze-generator Python wrapper for DMLab C++ maze generator. Usage !pip install dmlab-maze-generator from dmlab_maze_generator import create_ran

null 2 Oct 30, 2022
A C++ wrapper library for the monome serialosc protocol

serialoscpp A C++ wrapper library for the monome serialosc protocol Credits oscpack: Ross Bencina http://www.rossbencina.com/code/oscpack serialosc: 2

Isabel 1 Nov 2, 2021
Physx wrapper for the Beef Programming Language

physx-beef Physx wrapper for the Beef Programming Language physx-rs Prerequisites To initialize submodules run git submodule update --init --recursive

Aleš Mlakar 1 Nov 15, 2021
Poly2tri lua wrapper

Poly2tri lua wrapper This is a Lua wrapper around poly2tri. It provides fast, stable Constrained Delauney Triangulation of convex or concave polygons

Dima 9 Nov 25, 2021