2022-02-11 16:46:21 +02:00
|
|
|
<!-- # DISTRHO Cardinal -->
|
2021-10-08 12:33:14 +03:00
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
*Cardinal, the Rack!*
|
2021-10-07 13:00:47 +03:00
|
|
|
|
2022-02-10 20:34:42 +02:00
|
|
|
Cardinal is a free and open-source virtual modular synthesizer plugin,
|
2022-03-13 00:12:22 +02:00
|
|
|
available as JACK standalone and AU, LV2, VST2 and VST3 audio plugin for FreeBSD, Linux, macOS and Windows.
|
2022-02-10 20:17:04 +02:00
|
|
|
It is based on the popular [VCV Rack](https://vcvrack.com/) but with a focus on being a fully self-contained plugin version.
|
2021-10-07 23:23:11 +03:00
|
|
|
|
2022-02-10 20:17:04 +02:00
|
|
|
More specifically, this is a [DPF-based](https://github.com/DISTRHO/DPF/)
|
|
|
|
plugin wrapper around [VCV Rack](https://github.com/VCVRack/Rack/),
|
|
|
|
using its code directly instead of forking the project,
|
|
|
|
with the target of having a **proper, self-contained, fully free and open-source plugin version of Rack**.
|
2022-01-31 15:49:47 +02:00
|
|
|
See the [why section](#Why) below for the reasons Cardinal exists,
|
2022-02-11 17:38:16 +02:00
|
|
|
also for frequently asked questions check this [FAQ document](docs/FAQ.md).
|
2021-10-07 13:00:47 +03:00
|
|
|
|
2021-12-04 17:17:27 +02:00
|
|
|
Cardinal contains Rack, some 3rd-party modules and a few internal utilities all in a single binary.
|
2022-01-31 15:49:47 +02:00
|
|
|
All "Core" modules from Rack have been replaced by Cardinal equivalents, simplified to better work for an audio plugin.
|
|
|
|
|
|
|
|
Cardinal does not load external modules and does not connect to the official Rack library/store.
|
|
|
|
All VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues.
|
|
|
|
|
|
|
|
The VST3 version is in progress, already part of the build but still experimental.
|
2021-12-04 17:17:27 +02:00
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
|
2022-03-21 14:56:25 +02:00
|
|
|
## Current status
|
|
|
|
|
|
|
|
With the exception of a few bugs, Cardinal can be considered stable.
|
|
|
|
Though currently the following should be noted:
|
|
|
|
|
|
|
|
- Keyboard input does not always work in some hosts [#24](https://github.com/DISTRHO/Cardinal/issues/24)
|
|
|
|
- VST3 support incomplete/experimental [#41](https://github.com/DISTRHO/Cardinal/issues/41)
|
|
|
|
- Windows 32bit builds do not work well [#80](https://github.com/DISTRHO/Cardinal/issues/80)
|
|
|
|
- Windows High-DPI issues [#186](https://github.com/DISTRHO/Cardinal/issues/186)
|
|
|
|
|
|
|
|
### Stable release
|
|
|
|
|
|
|
|
Cardinal releases have official builds for Linux, macOS and Windows.
|
|
|
|
You can find these under https://github.com/DISTRHO/Cardinal/releases.
|
|
|
|
|
|
|
|
There are Linux builds for various architectures (armhf, arm64, i686 and x86_64), macOS "universal" (arm64 + intel) and Windows 32 and 64bit builds.
|
|
|
|
Both macOS and Windows builds have an installer.
|
|
|
|
Install instructions are available [here](https://github.com/DISTRHO/Cardinal/wiki/Install).
|
|
|
|
|
|
|
|
Note: Neither the macOS or Windows builds are signed, so expect warnings saying they are from an "untrusted developer".
|
|
|
|
|
|
|
|
### Nightly builds
|
|
|
|
|
|
|
|
You can find builds for pretty much any recent Cardinal commit [here](https://github.com/DISTRHO/Cardinal/actions/workflows/build.yml).
|
|
|
|
Just click on any successful build, and scroll to the bottom to find the builds.
|
|
|
|
(note the canvas-like area in the middle prevents mouse wheel scrolling)
|
|
|
|
|
|
|
|
A GitHub account is required in order to download these builds.
|
|
|
|
|
|
|
|
### Building
|
|
|
|
|
|
|
|
Basic building instructions are available in [BUILDING.md](docs/BUILDING.md).
|
|
|
|
|
|
|
|
|
2021-12-04 22:22:12 +02:00
|
|
|
## 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.
|
|
|
|
|
2021-12-22 20:56:08 +02:00
|
|
|
FX and Synth variants both have 2 audio outputs, while "main" has 8.
|
|
|
|
All variants have MIDI input and output support.
|
2021-12-04 22:22:12 +02:00
|
|
|
|
|
|
|
### Main
|
|
|
|
|
2021-12-22 20:56:08 +02:00
|
|
|
This variant provides 8 audio inputs and outputs and 10 CV inputs and outputs.
|
2021-12-04 22:22:12 +02:00
|
|
|
|
2022-03-13 00:12:22 +02:00
|
|
|
NOTE: Due to AU and VST2 formats not supporting CV ports, this variant is not available for those formats.
|
2021-12-04 22:22:12 +02:00
|
|
|
|
|
|
|
### Synth
|
|
|
|
|
2021-12-04 22:28:11 +02:00
|
|
|
This variant provides 2 audio outputs but no audio inputs or CV ports.
|
|
|
|
Plugin type is set as "instrument".
|
2021-12-04 22:22:12 +02:00
|
|
|
|
|
|
|
### FX
|
|
|
|
|
2021-12-04 22:28:11 +02:00
|
|
|
This variant provides 2 audio inputs and outputs, but no CV ports.
|
|
|
|
Plugin type is set as regular "effect".
|
2021-12-04 22:22:12 +02:00
|
|
|
|
2022-01-31 15:49:47 +02:00
|
|
|
|
2021-12-04 17:20:41 +02:00
|
|
|
## Screenshots
|
2021-12-04 17:17:27 +02:00
|
|
|
|
|
|
|
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!
|
|
|
|
|
2022-02-13 03:32:08 +02:00
|
|
|
### Init / Default patch
|
2021-12-04 17:17:27 +02:00
|
|
|
|
2022-02-13 03:32:08 +02:00
|
|
|
![screenshot](docs/Screenshot_Init-Patch.png "Screenshot")
|
|
|
|
|
|
|
|
### Module browser
|
|
|
|
|
|
|
|
![screenshot](docs/Screenshot_Module-Browser.png "Screenshot")
|
|
|
|
|
|
|
|
### Basic patching
|
|
|
|
|
|
|
|
![screenshot](docs/Screenshot_Basic-Patching.png "Screenshot")
|
|
|
|
|
|
|
|
### Carla and Ildaeil plugin hosts
|
|
|
|
|
|
|
|
![screenshot](docs/Screenshot_Carla+Ildaeil.png "Screenshot")
|
2022-01-31 15:49:47 +02:00
|
|
|
|
2022-03-16 21:19:28 +02:00
|
|
|
|
2021-12-04 17:17:27 +02:00
|
|
|
## Included modules
|
|
|
|
|
|
|
|
At the moment the following 3rd-party modules are provided:
|
|
|
|
|
2021-12-12 16:15:59 +02:00
|
|
|
- 21kHz
|
2022-02-24 17:28:42 +02:00
|
|
|
- 8Mode
|
2022-02-26 03:10:26 +02:00
|
|
|
- Aaron Static
|
2022-02-26 01:56:18 +02:00
|
|
|
- AlgoritmArte
|
2021-12-04 17:17:27 +02:00
|
|
|
- Amalgamated Harmonics
|
2022-02-21 11:15:45 +02:00
|
|
|
- Animated Circuits
|
2022-02-28 18:57:55 +02:00
|
|
|
- Arable Instruments
|
2021-12-04 17:17:27 +02:00
|
|
|
- Aria Salvatrice
|
2022-01-27 11:52:24 +02:00
|
|
|
- Audible Instruments
|
2022-01-24 02:42:23 +02:00
|
|
|
- Autinn
|
2022-02-24 17:33:58 +02:00
|
|
|
- Axioma
|
2021-12-04 21:24:40 +02:00
|
|
|
- Bacon Music
|
2022-02-22 21:45:39 +02:00
|
|
|
- Befaco
|
2022-01-27 03:16:50 +02:00
|
|
|
- Bidoo
|
2021-12-04 17:17:27 +02:00
|
|
|
- Bogaudio
|
2022-02-24 23:24:44 +02:00
|
|
|
- Catro/Modulo
|
2022-01-23 01:27:17 +02:00
|
|
|
- cf
|
2021-12-05 01:12:03 +02:00
|
|
|
- ChowDSP
|
2021-12-04 17:17:27 +02:00
|
|
|
- DrumKit
|
|
|
|
- E-Series
|
2022-01-05 21:37:07 +02:00
|
|
|
- ExpertSleepers Encoders
|
|
|
|
- Extratone
|
2021-12-04 21:34:27 +02:00
|
|
|
- Fehler Fabrik
|
2021-12-05 01:53:03 +02:00
|
|
|
- Glue the Giant
|
2022-02-24 18:45:25 +02:00
|
|
|
- GoodSheperd
|
2021-12-04 17:17:27 +02:00
|
|
|
- Grande
|
2022-02-24 20:35:32 +02:00
|
|
|
- Hampton Harmonics
|
2021-12-05 18:47:04 +02:00
|
|
|
- HetrickCV
|
2022-02-02 14:26:44 +02:00
|
|
|
- ihtsyn
|
2021-12-04 17:17:27 +02:00
|
|
|
- Impromptu
|
|
|
|
- JW-Modules
|
2022-02-25 19:22:11 +02:00
|
|
|
- kocmoc
|
2021-12-12 16:15:59 +02:00
|
|
|
- LifeFormModular
|
2022-02-25 16:35:10 +02:00
|
|
|
- Lilac Loop
|
2021-12-07 13:21:20 +02:00
|
|
|
- Little Utils
|
2021-12-16 02:40:27 +02:00
|
|
|
- Lomas Modules
|
|
|
|
- Lyrae Modules
|
2021-12-04 17:17:27 +02:00
|
|
|
- MindMeld
|
2022-02-24 21:08:44 +02:00
|
|
|
- ML Modules
|
2022-02-22 23:31:08 +02:00
|
|
|
- Mockba Modular
|
2021-12-04 22:01:34 +02:00
|
|
|
- Mog
|
2021-12-04 17:17:27 +02:00
|
|
|
- mscHack
|
2022-02-26 05:20:58 +02:00
|
|
|
- MSM
|
2022-02-26 18:25:29 +02:00
|
|
|
- Nonlinear Circuits
|
2022-02-24 21:27:34 +02:00
|
|
|
- Orbits
|
2022-02-28 18:57:55 +02:00
|
|
|
- Parable Instruments
|
2022-02-25 22:34:44 +02:00
|
|
|
- Path Set
|
2022-01-05 21:37:07 +02:00
|
|
|
- Prism
|
2022-01-21 15:32:01 +02:00
|
|
|
- rackwindows
|
2021-12-04 17:17:27 +02:00
|
|
|
- repelzen
|
2021-12-04 21:41:30 +02:00
|
|
|
- Sonus Modular
|
2022-02-24 22:05:27 +02:00
|
|
|
- stocaudio
|
2021-12-04 17:17:27 +02:00
|
|
|
- Valley
|
2022-02-28 16:23:54 +02:00
|
|
|
- Voxglitch
|
2021-12-04 17:17:27 +02:00
|
|
|
- ZetaCarinae
|
2022-02-06 23:37:52 +02:00
|
|
|
- ZZC
|
2022-01-21 12:48:21 +02:00
|
|
|
|
2021-12-04 17:17:27 +02:00
|
|
|
Additionally Cardinal provides its own modules for DAW/Host automation, time position and internal plugin hosting.
|
|
|
|
|
2022-02-11 17:38:16 +02:00
|
|
|
### Adding modules
|
|
|
|
|
|
|
|
Install new modules on a Cardinal build is not possible, but we can add new modules to the build.
|
|
|
|
Details on this are available [here](https://github.com/DISTRHO/Cardinal/discussions/28).
|
|
|
|
Also check [this wiki page](https://github.com/DISTRHO/Cardinal/wiki/Possible-modules-to-include)
|
|
|
|
where we discuss possible modules to include.
|
|
|
|
|
2022-01-28 13:51:24 +02:00
|
|
|
### Module restrictions
|
2021-12-04 17:17:27 +02:00
|
|
|
|
2022-01-28 13:51:24 +02:00
|
|
|
All included modules are open-source and have a GPLv3+ compatible license. (GPLv3-only modules are not allowed)
|
|
|
|
It is a requirement that the final Cardinal binary is GPLv3+ licensed.
|
2021-12-04 17:17:27 +02:00
|
|
|
|
2022-01-28 13:51:24 +02:00
|
|
|
Module dependencies should be kept at a minimum, as otherwise it quickly grows the complexity of the build.
|
2021-12-04 17:17:27 +02:00
|
|
|
Online access (such as phone-home) is not allowed.
|
|
|
|
|
2022-01-28 13:51:24 +02:00
|
|
|
Worth noting that a few modules have artwork licensed separately from their code.
|
|
|
|
These licenses range from CC-0 to CC-NC-ND to custom (used with permission).
|
2022-02-11 16:46:21 +02:00
|
|
|
An overview of the included artwork licenses can be seen [here](docs/LICENSES.md#artwork--panel-licenses).
|
2022-01-28 13:51:24 +02:00
|
|
|
|
|
|
|
Even though CC-NC is problematic for packaging (some linux distributions are commercial in nature),
|
|
|
|
Cardinal allows their use because of how prevalent they are across many Rack modules.
|
|
|
|
Even the Rack "Component Library" (which can be considered the base widget elements) is CC-NC licensed.
|
|
|
|
|
|
|
|
Any artwork that uses a custom license has had explicit permission to be used in Cardinal.
|
|
|
|
|
2022-01-31 15:49:47 +02:00
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
## 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.
|
2021-12-05 18:47:04 +02:00
|
|
|
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.
|
2021-12-04 16:31:42 +02:00
|
|
|
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)
|
2021-12-04 17:22:25 +02:00
|
|
|
- Real CV ports to and from the plugin
|
2021-12-04 16:31:42 +02:00
|
|
|
- Removing online access from the plugin and included modules (no phone-home here!)
|
|
|
|
- Works as a test case for [DPF](https://github.com/DISTRHO/DPF/) and [Carla](https://github.com/falkTX/Carla/)
|
|
|
|
- It is fun :)
|
|
|
|
|
2022-01-31 15:49:47 +02:00
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
## 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).
|
|
|
|
|
2022-02-11 16:46:21 +02:00
|
|
|
A feature comparison between Cardinal and Rack Pro can be seen [here](docs/DIFFERENCES.md).
|
2022-03-21 14:56:25 +02:00
|
|
|
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
Cardinal is licensed under GPLv3+, see [LICENSE](LICENSE) for more details.
|
|
|
|
An overview of the included code and linked submodules can be seen [here](docs/LICENSES.md#code-license--binary).
|
|
|
|
|
|
|
|
|
|
|
|
## 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.
|