2021-10-08 12:33:14 +03:00
|
|
|
# DISTRHO Cardinal
|
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
*Cardinal, the Rack!*
|
2021-10-07 13:00:47 +03:00
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
**! THIS PROJECT IS A WORK IN PROGRESS !**
|
2021-10-07 23:23:11 +03:00
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
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.
|
2021-12-04 17:17:27 +02:00
|
|
|
The target is to have a **proper, self-contained, fully free and open-source plugin version of Rack**.
|
2021-12-04 16:31:42 +02:00
|
|
|
See [project overview](doc/OVERVIEW.md) document for an overview on how the project source code is structured.
|
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.
|
|
|
|
It does not load external modules and does not connect to the official Rack library/store.
|
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
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.
|
|
|
|
|
2021-12-15 00:16:37 +02:00
|
|
|
**The project should be considered in beta state at the moment.**
|
2021-12-04 16:31:42 +02:00
|
|
|
|
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
|
|
|
|
|
|
|
NOTE: Due to VST2 format not supporting CV ports, this variant is not available for VST2.
|
|
|
|
|
|
|
|
### 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
|
|
|
|
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!
|
|
|
|
|
|
|
|
![screenshot1](doc/Screenshot1.png "Screenshot1")
|
|
|
|
![screenshot2](doc/Screenshot2.png "Screenshot2")
|
|
|
|
|
2021-12-04 16:31:42 +02:00
|
|
|
## 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:
|
|
|
|
|
2021-12-15 00:16:37 +02:00
|
|
|
- VST3 support incomplete/experimental [#41](https://github.com/DISTRHO/Cardinal/issues/41)
|
|
|
|
- Factory (plugin-provided) presets [#58](https://github.com/DISTRHO/Cardinal/issues/58)
|
2021-12-04 16:31:42 +02:00
|
|
|
|
|
|
|
### Current builds
|
|
|
|
|
2021-12-06 01:53:01 +02:00
|
|
|
If you want to try this out early, checkout the [GitHub actions tab](https://github.com/DISTRHO/Cardinal/actions/workflows/build.yml).
|
2021-12-04 16:31:42 +02:00
|
|
|
There is absolutely no warranty, use at your own risk and all that...
|
|
|
|
|
2021-12-06 23:16:12 +02:00
|
|
|
### 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.
|
|
|
|
|
2021-12-04 17:17:27 +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](doc/LICENSES.md).
|
|
|
|
|
|
|
|
## Included modules
|
|
|
|
|
|
|
|
At the moment the following 3rd-party modules are provided:
|
|
|
|
|
2021-12-12 16:15:59 +02:00
|
|
|
- 21kHz
|
2021-12-04 17:17:27 +02:00
|
|
|
- Amalgamated Harmonics
|
|
|
|
- Animated Circuits
|
|
|
|
- Aria Salvatrice
|
2022-01-24 02:42:23 +02:00
|
|
|
- Autinn
|
2021-12-04 21:24:40 +02:00
|
|
|
- Bacon Music
|
2021-12-04 17:17:27 +02:00
|
|
|
- Bogaudio
|
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
|
2021-12-04 17:17:27 +02:00
|
|
|
- Grande
|
2021-12-05 18:47:04 +02:00
|
|
|
- HetrickCV
|
2021-12-04 17:17:27 +02:00
|
|
|
- Impromptu
|
|
|
|
- JW-Modules
|
2021-12-12 16:15:59 +02:00
|
|
|
- LifeFormModular
|
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
|
2021-12-04 22:01:34 +02:00
|
|
|
- Mog
|
2021-12-04 17:17:27 +02:00
|
|
|
- mscHack
|
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
|
2021-12-04 17:17:27 +02:00
|
|
|
- Valley
|
|
|
|
- ZetaCarinae
|
2022-01-21 12:48:21 +02:00
|
|
|
|
|
|
|
Potentially coming soon, currently sorting out license situation:
|
|
|
|
- AS
|
|
|
|
- Atelier
|
|
|
|
- Audible Instruments
|
|
|
|
- Befaco
|
|
|
|
- Bidoo
|
|
|
|
- Fundamental
|
|
|
|
- ihtsyn
|
2022-01-05 21:37:07 +02:00
|
|
|
- ZZC
|
2021-12-04 17:17:27 +02:00
|
|
|
|
|
|
|
Additionally Cardinal provides its own modules for DAW/Host automation, time position and internal plugin hosting.
|
|
|
|
|
|
|
|
### Restrictions
|
|
|
|
|
2021-12-04 17:20:41 +02:00
|
|
|
Being an open-source project, all included 3rd-party modules must be opensource and have a GPLv3+ compatible license.
|
2021-12-04 17:17:27 +02:00
|
|
|
*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.
|
2021-12-04 17:20:41 +02:00
|
|
|
Also, unless the module is really essential, CC-ND is not allowed.
|
2021-12-04 17:17:27 +02:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
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 :)
|
|
|
|
|
|
|
|
## 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](doc/DIFFERENCES.md).
|