* Start cleanup for improved packaging Signed-off-by: falkTX <falktx@falktx.com> * Use the same folder for VST2 plugins Signed-off-by: falkTX <falktx@falktx.com> * Fix static build Signed-off-by: falkTX <falktx@falktx.com> * Do not set source-dir in CI builds Signed-off-by: falkTX <falktx@falktx.com> * Set a custom fallback systemdir per OS Signed-off-by: falkTX <falktx@falktx.com> * CI tweaks Signed-off-by: falkTX <falktx@falktx.com> * Build the whole pyqt on windows Signed-off-by: falkTX <falktx@falktx.com> * Mention AU in readme and differences docs Signed-off-by: falkTX <falktx@falktx.com> * Add specialized utils for macOS packaging Signed-off-by: falkTX <falktx@falktx.com> * Fix plugin-validation build Signed-off-by: falkTX <falktx@falktx.com> * Fix build Signed-off-by: falkTX <falktx@falktx.com> * Do not create window for lv2lint tests * Start enabling AU builds * Copy over mod.lv2 specs for validation * Skip main cardinal lv2lint, the custom CVPorts are not supported * au build needs carla * More CI tweaks * Build headless version for plugin validation * Fix typo * Only show missing resources error message once Signed-off-by: falkTX <falktx@falktx.com> * Fallback to system path even if using a plugin bundle Signed-off-by: falkTX <falktx@falktx.com> * CI fixes, build full carla on Windows Signed-off-by: falkTX <falktx@falktx.com> * Rename script Signed-off-by: falkTX <falktx@falktx.com> * Silly typo Signed-off-by: falkTX <falktx@falktx.com> * More CI tweaks, add windows installer Signed-off-by: falkTX <falktx@falktx.com> * Setup Carla paths for Windows Signed-off-by: falkTX <falktx@falktx.com> * Yet more tweaks Signed-off-by: falkTX <falktx@falktx.com> * Package carla on windows, use xvfb-run Signed-off-by: falkTX <falktx@falktx.com> * Test win32 build too Signed-off-by: falkTX <falktx@falktx.com> * Finalize rework Signed-off-by: falkTX <falktx@falktx.com>tags/22.03
@@ -4,7 +4,7 @@ on: | |||||
push: | push: | ||||
env: | env: | ||||
CACHE_VERSION: 7 | |||||
CACHE_VERSION: 8 | |||||
DEBIAN_FRONTEND: noninteractive | DEBIAN_FRONTEND: noninteractive | ||||
HOMEBREW_NO_AUTO_UPDATE: 1 | HOMEBREW_NO_AUTO_UPDATE: 1 | ||||
LIBGL_ALWAYS_SOFTWARE: 'true' | LIBGL_ALWAYS_SOFTWARE: 'true' | ||||
@@ -45,7 +45,7 @@ jobs: | |||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env linux-aarch64; popd | pushd deps/PawPaw; source local.env linux-aarch64; popd | ||||
make features | make features | ||||
make NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make unzipfx | make unzipfx | ||||
- name: Set sha8 (non-release) | - name: Set sha8 (non-release) | ||||
if: startsWith(github.ref, 'refs/tags/') != true | if: startsWith(github.ref, 'refs/tags/') != true | ||||
@@ -111,7 +111,7 @@ jobs: | |||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env linux-armhf; popd | pushd deps/PawPaw; source local.env linux-armhf; popd | ||||
make features | make features | ||||
make NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make unzipfx | make unzipfx | ||||
- name: Set sha8 (non-release) | - name: Set sha8 (non-release) | ||||
if: startsWith(github.ref, 'refs/tags/') != true | if: startsWith(github.ref, 'refs/tags/') != true | ||||
@@ -173,7 +173,7 @@ jobs: | |||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env linux-i686; popd | pushd deps/PawPaw; source local.env linux-i686; popd | ||||
make features | make features | ||||
make NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make unzipfx | make unzipfx | ||||
- name: Set sha8 (non-release) | - name: Set sha8 (non-release) | ||||
if: startsWith(github.ref, 'refs/tags/') != true | if: startsWith(github.ref, 'refs/tags/') != true | ||||
@@ -227,7 +227,7 @@ jobs: | |||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env linux; popd | pushd deps/PawPaw; source local.env linux; popd | ||||
make features | make features | ||||
make NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make unzipfx | make unzipfx | ||||
- name: Set sha8 (non-release) | - name: Set sha8 (non-release) | ||||
if: startsWith(github.ref, 'refs/tags/') != true | if: startsWith(github.ref, 'refs/tags/') != true | ||||
@@ -340,18 +340,18 @@ jobs: | |||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env macos-universal; popd | pushd deps/PawPaw; source local.env macos-universal; popd | ||||
make features | make features | ||||
make NOOPT=true WITH_LTO=true -j $(sysctl -n hw.logicalcpu) | |||||
make CIBUILD=true NOOPT=true WITH_LTO=true -j $(sysctl -n hw.logicalcpu) | |||||
- name: Build macOS universal (AU using juce) | - name: Build macOS universal (AU using juce) | ||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env macos-universal; popd | pushd deps/PawPaw; source local.env macos-universal; popd | ||||
git clone --depth=1 -b master https://github.com/juce-framework/JUCE.git jucewrapper/JUCE | git clone --depth=1 -b master https://github.com/juce-framework/JUCE.git jucewrapper/JUCE | ||||
mkdir jucewrapper/build | mkdir jucewrapper/build | ||||
pushd jucewrapper/build; cmake .. && make -j $(sysctl -n hw.logicalcpu); popd | |||||
mv jucewrapper/build/*_artefacts/AU/*.component bin/ | |||||
pushd jucewrapper/build; cmake -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64' -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DCMAKE_BUILD_TYPE=Release .. && make -j $(sysctl -n hw.logicalcpu); popd | |||||
mv jucewrapper/build/*_artefacts/Release/AU/*.component bin/ | |||||
- name: Build macOS universal (packaging) | - name: Build macOS universal (packaging) | ||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env macos-universal; popd | pushd deps/PawPaw; source local.env macos-universal; popd | ||||
./dpf/utils/package-osx-bundles.sh | |||||
./utils/create-macos-installer.sh | |||||
- name: Set sha8 (non-release) | - name: Set sha8 (non-release) | ||||
if: startsWith(github.ref, 'refs/tags/') != true | if: startsWith(github.ref, 'refs/tags/') != true | ||||
id: slug1 | id: slug1 | ||||
@@ -519,15 +519,27 @@ jobs: | |||||
run: | | run: | | ||||
sudo dpkg --add-architecture i386 | sudo dpkg --add-architecture i386 | ||||
sudo apt-get update -qq | sudo apt-get update -qq | ||||
sudo apt-get install -yqq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386 | |||||
sudo apt-get install -yqq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386 xvfb | |||||
- name: Build extra dependencies | - name: Build extra dependencies | ||||
run: | | run: | | ||||
./deps/PawPaw/bootstrap-cardinal.sh win32 | ./deps/PawPaw/bootstrap-cardinal.sh win32 | ||||
- name: Build win32 cross-compiled | |||||
- name: Build win32 cross-compiled (base) | |||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env win32; popd | pushd deps/PawPaw; source local.env win32; popd | ||||
make features | make features | ||||
make NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc) | |||||
- name: Build win64 cross-compiled (carla) | |||||
run: | | |||||
pushd deps/PawPaw; source local.env win32; popd | |||||
make distclean -C carla | |||||
make -C carla EXTERNAL_PLUGINS=true HAVE_DGL=false HAVE_HYLIA=false HAVE_JACK=false HAVE_LIBLO=false HAVE_ZYN_DEPS=false HAVE_ZYN_UI_DEPS=false USING_JUCE=false USING_JUCE_AUDIO_DEVICES=false USING_JUCE_GUI_EXTRA=false USING_RTAUDIO=false -j $(nproc) | |||||
make -C carla TESTING=true _CARLA_LV2_PLUGIN_FILES= _CARLA_VST2_PLUGIN_FILES= dist | |||||
make -C carla TESTING=true _CARLA_LV2_PLUGIN_FILES= _CARLA_VST2_PLUGIN_FILES= dist | |||||
make -C carla TESTING=true _CARLA_LV2_PLUGIN_FILES= _CARLA_VST2_PLUGIN_FILES= dist | |||||
- name: Build win64 cross-compiled (packaging) | |||||
run: | | |||||
pushd deps/PawPaw; source local.env win32; popd | |||||
xvfb-run ./utils/create-windows-installer.sh 32 | |||||
- name: Set sha8 (non-release) | - name: Set sha8 (non-release) | ||||
if: startsWith(github.ref, 'refs/tags/') != true | if: startsWith(github.ref, 'refs/tags/') != true | ||||
id: slug1 | id: slug1 | ||||
@@ -546,6 +558,7 @@ jobs: | |||||
with: | with: | ||||
name: ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} | name: ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} | ||||
path: | | path: | | ||||
*.exe | |||||
*.zip | *.zip | ||||
- uses: softprops/action-gh-release@v1 | - uses: softprops/action-gh-release@v1 | ||||
if: startsWith(github.ref, 'refs/tags/') | if: startsWith(github.ref, 'refs/tags/') | ||||
@@ -555,6 +568,7 @@ jobs: | |||||
draft: false | draft: false | ||||
prerelease: false | prerelease: false | ||||
files: | | files: | | ||||
*.exe | |||||
*.zip | *.zip | ||||
win64: | win64: | ||||
@@ -576,16 +590,29 @@ jobs: | |||||
sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal | sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal | ||||
- name: Set up dependencies | - name: Set up dependencies | ||||
run: | | run: | | ||||
sudo dpkg --add-architecture i386 | |||||
sudo apt-get update -qq | sudo apt-get update -qq | ||||
sudo apt-get install -yqq binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable | |||||
sudo apt-get install -yqq binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable xvfb | |||||
- name: Build extra dependencies | - name: Build extra dependencies | ||||
run: | | run: | | ||||
./deps/PawPaw/bootstrap-cardinal.sh win64 | ./deps/PawPaw/bootstrap-cardinal.sh win64 | ||||
- name: Build win64 cross-compiled | |||||
- name: Build win64 cross-compiled (base) | |||||
run: | | run: | | ||||
pushd deps/PawPaw; source local.env win64; popd | pushd deps/PawPaw; source local.env win64; popd | ||||
make features | make features | ||||
make NOOPT=true WITH_LTO=true -j $(nproc) | |||||
make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc) | |||||
- name: Build win64 cross-compiled (carla) | |||||
run: | | |||||
pushd deps/PawPaw; source local.env win64; popd | |||||
make distclean -C carla | |||||
make -C carla EXTERNAL_PLUGINS=true HAVE_DGL=false HAVE_HYLIA=false HAVE_JACK=false HAVE_LIBLO=false HAVE_ZYN_DEPS=false HAVE_ZYN_UI_DEPS=false USING_JUCE=false USING_JUCE_AUDIO_DEVICES=false USING_JUCE_GUI_EXTRA=false USING_RTAUDIO=false all win32r -j $(nproc) | |||||
make -C carla TESTING=true _CARLA_LV2_PLUGIN_FILES= _CARLA_VST2_PLUGIN_FILES= dist | |||||
make -C carla TESTING=true _CARLA_LV2_PLUGIN_FILES= _CARLA_VST2_PLUGIN_FILES= dist | |||||
make -C carla TESTING=true _CARLA_LV2_PLUGIN_FILES= _CARLA_VST2_PLUGIN_FILES= dist | |||||
- name: Build win64 cross-compiled (packaging) | |||||
run: | | |||||
pushd deps/PawPaw; source local.env win64; popd | |||||
xvfb-run ./utils/create-windows-installer.sh 64 | |||||
- name: Set sha8 (non-release) | - name: Set sha8 (non-release) | ||||
if: startsWith(github.ref, 'refs/tags/') != true | if: startsWith(github.ref, 'refs/tags/') != true | ||||
id: slug1 | id: slug1 | ||||
@@ -604,6 +631,7 @@ jobs: | |||||
with: | with: | ||||
name: ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} | name: ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }} | ||||
path: | | path: | | ||||
*.exe | |||||
*.zip | *.zip | ||||
- uses: softprops/action-gh-release@v1 | - uses: softprops/action-gh-release@v1 | ||||
if: startsWith(github.ref, 'refs/tags/') | if: startsWith(github.ref, 'refs/tags/') | ||||
@@ -613,6 +641,7 @@ jobs: | |||||
draft: false | draft: false | ||||
prerelease: false | prerelease: false | ||||
files: | | files: | | ||||
*.exe | |||||
*.zip | *.zip | ||||
source-tarball: | source-tarball: | ||||
@@ -672,17 +701,17 @@ jobs: | |||||
sudo dpkg -i kxstudio-repos_10.0.3_all.deb | sudo dpkg -i kxstudio-repos_10.0.3_all.deb | ||||
sudo apt-get update -qq | sudo apt-get update -qq | ||||
# build-deps | # build-deps | ||||
sudo apt-get install -yqq libgl1-mesa-dev liblo-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev | |||||
sudo apt-get install -yqq liblo-dev | |||||
# runtime testing | # runtime testing | ||||
sudo apt-get install -yqq carla-git lilv-utils lv2-dev lv2lint valgrind | sudo apt-get install -yqq carla-git lilv-utils lv2-dev lv2lint valgrind | ||||
- name: Build plugins | |||||
- name: Build Cardinal | |||||
env: | env: | ||||
CFLAGS: -g | CFLAGS: -g | ||||
CXXFLAGS: -g -DDPF_ABORT_ON_ERROR | CXXFLAGS: -g -DDPF_ABORT_ON_ERROR | ||||
LDFLAGS: -static-libgcc -static-libstdc++ | LDFLAGS: -static-libgcc -static-libstdc++ | ||||
run: | | run: | | ||||
make features | |||||
make NOOPT=true SKIP_STRIPPING=true -j $(nproc) | |||||
make HEADLESS=true features | |||||
make HEADLESS=true NOOPT=true NOPLUGINS=true STATIC_BUILD=true SKIP_STRIPPING=true -j $(nproc) | |||||
- name: Validate LV2 ttl syntax | - name: Validate LV2 ttl syntax | ||||
run: | | run: | | ||||
lv2_validate \ | lv2_validate \ | ||||
@@ -691,14 +720,14 @@ jobs: | |||||
/usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \ | /usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \ | ||||
/usr/lib/lv2/kx-programs.lv2/*.ttl \ | /usr/lib/lv2/kx-programs.lv2/*.ttl \ | ||||
./bin/*.lv2/*.ttl | ./bin/*.lv2/*.ttl | ||||
#- name: Validate LV2 metadata and binaries | |||||
#run: | | |||||
#export LV2_PATH=/tmp/lv2-path | |||||
#mkdir ${LV2_PATH} | |||||
#cp -r bin/*.lv2 \ | |||||
#/usr/lib/lv2/{atom,buf-size,core,data-access,kx-control-input-port-change-request,kx-programs,instance-access,midi,parameters,port-groups,port-props,options,patch,presets,resize-port,state,time,ui,units,urid,worker}.lv2 \ | |||||
#${LV2_PATH} | |||||
#lv2lint -s lv2_generate_ttl -l ld-linux-x86-64.so.2 -M nopack $(lv2ls) | |||||
- name: Validate LV2 metadata and binaries | |||||
run: | | |||||
export LV2_PATH=/tmp/lv2-path | |||||
mkdir ${LV2_PATH} | |||||
cp -r bin/CardinalFX.lv2 bin/CardinalSynth.lv2 \ | |||||
/usr/lib/lv2/{atom,buf-size,core,data-access,kx-control-input-port-change-request,kx-programs,instance-access,midi,mod,parameters,port-groups,port-props,options,patch,presets,resize-port,state,time,ui,units,urid,worker}.lv2 \ | |||||
${LV2_PATH} | |||||
lv2lint -s lv2_generate_ttl -l ld-linux-x86-64.so.2 -M nopack $(lv2ls) | |||||
- name: Test LV2 plugin | - name: Test LV2 plugin | ||||
run: | | run: | | ||||
export LV2_PATH=/tmp/lv2-path | export LV2_PATH=/tmp/lv2-path | ||||
@@ -711,27 +740,25 @@ jobs: | |||||
--suppressions=./dpf/utils/valgrind-dpf.supp \ | --suppressions=./dpf/utils/valgrind-dpf.supp \ | ||||
/usr/lib/carla/carla-bridge-native lv2 "" ${p} 1>/dev/null; \ | /usr/lib/carla/carla-bridge-native lv2 "" ${p} 1>/dev/null; \ | ||||
done | done | ||||
# - name: Test VST2 plugin | |||||
# env: | |||||
# CARLA_DO_NOT_USE_JUCE_FOR_VST2: 1 | |||||
# run: | | |||||
# for p in $(ls bin/*.vst/*.so); do \ | |||||
# env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \ | |||||
# valgrind \ | |||||
# --error-exitcode=255 \ | |||||
# --leak-check=no \ | |||||
# --track-origins=yes \ | |||||
# --suppressions=./dpf/utils/valgrind-dpf.supp \ | |||||
# /usr/lib/carla/carla-bridge-native vst2 ./${p} "" 1>/dev/null; \ | |||||
# done | |||||
# - name: Test VST3 plugin | |||||
# run: | | |||||
# for p in $(ls bin/ | grep vst3); do \ | |||||
# env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \ | |||||
# valgrind \ | |||||
# --error-exitcode=255 \ | |||||
# --leak-check=no \ | |||||
# --track-origins=yes \ | |||||
# --suppressions=./dpf/utils/valgrind-dpf.supp \ | |||||
# /usr/lib/carla/carla-bridge-native vst3 ./bin/${p} "" 1>/dev/null; \ | |||||
# done | |||||
- name: Test VST2 plugin | |||||
run: | | |||||
for p in $(ls bin/*.vst/*.so); do \ | |||||
env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \ | |||||
valgrind \ | |||||
--error-exitcode=255 \ | |||||
--leak-check=no \ | |||||
--track-origins=yes \ | |||||
--suppressions=./dpf/utils/valgrind-dpf.supp \ | |||||
/usr/lib/carla/carla-bridge-native vst2 ./${p} "" 1>/dev/null; \ | |||||
done | |||||
- name: Test VST3 plugin | |||||
run: | | |||||
for p in $(ls bin/ | grep vst3); do \ | |||||
env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \ | |||||
valgrind \ | |||||
--error-exitcode=255 \ | |||||
--leak-check=no \ | |||||
--track-origins=yes \ | |||||
--suppressions=./dpf/utils/valgrind-dpf.supp \ | |||||
/usr/lib/carla/carla-bridge-native vst3 ./bin/${p} "" 1>/dev/null; \ | |||||
done |
@@ -15,3 +15,5 @@ | |||||
bin/ | bin/ | ||||
build/ | build/ | ||||
documentation.pdf | documentation.pdf | ||||
utils/inno/resources.iss | |||||
utils/inno/version.iss |
@@ -404,6 +404,9 @@ tarball+deps: download | |||||
rm -f ../cardinal+deps-$(VERSION).tar.xz | rm -f ../cardinal+deps-$(VERSION).tar.xz | ||||
tar -c --lzma $(TAR_ARGS) -f ../cardinal+deps-$(VERSION).tar.xz . | tar -c --lzma $(TAR_ARGS) -f ../cardinal+deps-$(VERSION).tar.xz . | ||||
version: | |||||
@echo $(VERSION) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
.PHONY: carla deps plugins | .PHONY: carla deps plugins |
@@ -3,7 +3,7 @@ | |||||
*Cardinal, the Rack!* | *Cardinal, the Rack!* | ||||
Cardinal is a free and open-source virtual modular synthesizer plugin, | Cardinal is a free and open-source virtual modular synthesizer plugin, | ||||
available as JACK standalone and LV2, VST2 and VST3 audio plugin for FreeBSD, Linux, macOS and Windows. | |||||
available as JACK standalone and AU, LV2, VST2 and VST3 audio plugin for FreeBSD, Linux, macOS and Windows. | |||||
It is based on the popular [VCV Rack](https://vcvrack.com/) but with a focus on being a fully self-contained plugin version. | It is based on the popular [VCV Rack](https://vcvrack.com/) but with a focus on being a fully self-contained plugin version. | ||||
More specifically, this is a [DPF-based](https://github.com/DISTRHO/DPF/) | More specifically, this is a [DPF-based](https://github.com/DISTRHO/DPF/) | ||||
@@ -19,7 +19,6 @@ All "Core" modules from Rack have been replaced by Cardinal equivalents, simplif | |||||
Cardinal does not load external modules and does not connect to the official Rack library/store. | 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. | All VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues. | ||||
Because it is using DPF, Cardinal already supports LV2 and VST2 with an extra JACK standalone mode for some systems. | |||||
The VST3 version is in progress, already part of the build but still experimental. | The VST3 version is in progress, already part of the build but still experimental. | ||||
@@ -36,7 +35,7 @@ All variants have MIDI input and output support. | |||||
This variant provides 8 audio inputs and outputs and 10 CV inputs and outputs. | 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. | |||||
NOTE: Due to AU and VST2 formats not supporting CV ports, this variant is not available for those formats. | |||||
### Synth | ### Synth | ||||
@@ -1 +1 @@ | |||||
Subproject commit cc201866d35449bce0d9e02a85f641aa071437b8 | |||||
Subproject commit 4834b2e078af3d47dde45cab88bbdfe33ec90738 |
@@ -21,6 +21,7 @@ Bellow follows a list of features comparing the official plugin to Cardinal. | |||||
| Loads external modules | Yes | No | | | | Loads external modules | Yes | No | | | ||||
| Supports closed-source modules | Yes | No | | | | Supports closed-source modules | Yes | No | | | ||||
| Supports physical devices | Yes | No | Audio + MIDI only through the DAW/Host or via JACK in standalone | | | Supports physical devices | Yes | No | Audio + MIDI only through the DAW/Host or via JACK in standalone | | ||||
| Plugin in AU format | No | Yes | | | |||||
| Plugin in LV2 format | No | Yes | | | | Plugin in LV2 format | No | Yes | | | ||||
| Plugin in VST2 format | Yes | Yes | | | | Plugin in VST2 format | Yes | Yes | | | ||||
| Plugin in VST3 format | No | WIP | | | | Plugin in VST3 format | No | WIP | | | ||||
@@ -42,7 +43,6 @@ Bellow follows a list of features comparing the official plugin to Cardinal. | |||||
Additionally, Cardinal contains the following built-in modules not present in the official plugin or standalone: | Additionally, Cardinal contains the following built-in modules not present in the official plugin or standalone: | ||||
* Amalgamated Harmonics | |||||
* Aria Salvatrice modules (except Arcane related modules, due to their online requirement) | * Aria Salvatrice modules (except Arcane related modules, due to their online requirement) | ||||
* Mog (never updated to v2) | * Mog (never updated to v2) | ||||
* mscHack (never updated to v2) | * mscHack (never updated to v2) | ||||
@@ -1 +1 @@ | |||||
Subproject commit 215fc2317efe822abf5eb545f422eedbb473693d | |||||
Subproject commit 7cd27b17fbbd196beff8c1fcc209f10e9c24f274 |
@@ -99,6 +99,11 @@ struct CarlaModule : Module { | |||||
CardinalExpanderFromCarlaMIDIToCV* midiOutExpander = nullptr; | CardinalExpanderFromCarlaMIDIToCV* midiOutExpander = nullptr; | ||||
std::string patchStorage; | std::string patchStorage; | ||||
#ifdef CARLA_OS_WIN | |||||
// must keep string pointer valid | |||||
std::string winResourceDir; | |||||
#endif | |||||
CarlaModule() | CarlaModule() | ||||
: pcontext(static_cast<CardinalPluginContext*>(APP)) | : pcontext(static_cast<CardinalPluginContext*>(APP)) | ||||
{ | { | ||||
@@ -138,10 +143,14 @@ struct CarlaModule : Module { | |||||
binaryDir = "/Applications/Carla.app/Contents/MacOS"; | binaryDir = "/Applications/Carla.app/Contents/MacOS"; | ||||
resourceDir = "/Applications/Carla.app/Contents/MacOS/resources"; | resourceDir = "/Applications/Carla.app/Contents/MacOS/resources"; | ||||
} | } | ||||
#elif defined(CARLA_OS_WINDOWS) | |||||
// Carla does not support system-wide install on Windows right now | |||||
if (false) | |||||
#elif defined(CARLA_OS_WIN) | |||||
const std::string winBinaryDir = system::join(asset::systemDir, "Carla"); | |||||
if (system::exists(winBinaryDir)) | |||||
{ | { | ||||
winResourceDir = system::join(winBinaryDir, "resources"); | |||||
binaryDir = winBinaryDir.c_str(); | |||||
resourceDir = winResourceDir.c_str(); | |||||
} | } | ||||
#else | #else | ||||
if (system::exists("/usr/local/lib/carla")) | if (system::exists("/usr/local/lib/carla")) | ||||
@@ -209,10 +209,14 @@ struct IldaeilModule : Module { | |||||
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, "/Applications/Carla.app/Contents/MacOS"); | carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, "/Applications/Carla.app/Contents/MacOS"); | ||||
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_RESOURCES, 0, "/Applications/Carla.app/Contents/MacOS/resources"); | carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_RESOURCES, 0, "/Applications/Carla.app/Contents/MacOS/resources"); | ||||
} | } | ||||
#elif defined(CARLA_OS_WINDOWS) | |||||
// Carla does not support system-wide install on Windows right now | |||||
if (false) | |||||
#elif defined(CARLA_OS_WIN) | |||||
const std::string winBinaryDir = system::join(asset::systemDir, "Carla"); | |||||
if (system::exists(winBinaryDir)) | |||||
{ | { | ||||
const std::string winResourceDir = system::join(winBinaryDir, "resources"); | |||||
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, winBinaryDir.c_str()); | |||||
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_RESOURCES, 0, winResourceDir.c_str()); | |||||
} | } | ||||
#else | #else | ||||
if (system::exists("/usr/local/lib/carla")) | if (system::exists("/usr/local/lib/carla")) | ||||
@@ -1051,10 +1051,8 @@ VST2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalSynth.vst/Contents/Resources/Pl | |||||
VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.vst/Contents/Resources/%) | VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.vst/Contents/Resources/%) | ||||
VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalSynth.vst/Contents/Resources/%) | VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalSynth.vst/Contents/Resources/%) | ||||
else | else | ||||
VST2_RESOURCES = $(PLUGIN_LIST:%=../bin/CardinalFX.vst/resources/PluginManifests/%.json) | |||||
VST2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalSynth.vst/resources/PluginManifests/%.json) | |||||
VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.vst/resources/%) | |||||
VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalSynth.vst/resources/%) | |||||
VST2_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.vst/resources/PluginManifests/%.json) | |||||
VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/Cardinal.vst/resources/%) | |||||
endif | endif | ||||
VST3_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.vst3/Contents/Resources/PluginManifests/%.json) | VST3_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.vst3/Contents/Resources/PluginManifests/%.json) | ||||
@@ -1138,19 +1136,11 @@ ifeq ($(MACOS),true) | |||||
-@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
$(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
else | else | ||||
../bin/CardinalFX.vst/resources/%: % | |||||
../bin/Cardinal.vst/resources/%: % | |||||
-@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
$(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
../bin/CardinalSynth.vst/resources/%: % | |||||
-@mkdir -p "$(shell dirname $@)" | |||||
$(SILENT)ln -sf $(abspath $<) $@ | |||||
../bin/CardinalFX.vst/resources/PluginManifests/%.json: %/plugin.json | |||||
-@mkdir -p "$(shell dirname $@)" | |||||
$(SILENT)ln -sf $(abspath $<) $@ | |||||
../bin/CardinalSynth.vst/resources/PluginManifests/%.json: %/plugin.json | |||||
../bin/Cardinal.vst/resources/PluginManifests/%.json: %/plugin.json | |||||
-@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
$(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
endif | endif | ||||
@@ -138,7 +138,7 @@ struct Initializer | |||||
} | } | ||||
} | } | ||||
if (asset::systemDir.empty()) | |||||
if (asset::systemDir.empty() || ! system::exists(asset::systemDir)) | |||||
{ | { | ||||
#ifdef CARDINAL_PLUGIN_SOURCE_DIR | #ifdef CARDINAL_PLUGIN_SOURCE_DIR | ||||
// Make system dir point to source code location as fallback | // Make system dir point to source code location as fallback | ||||
@@ -151,11 +151,21 @@ struct Initializer | |||||
// If source code dir does not exist use install target prefix as system dir | // If source code dir does not exist use install target prefix as system dir | ||||
else | else | ||||
#endif | #endif | ||||
if (system::exists(CARDINAL_PLUGIN_PREFIX "/share/cardinal")) | |||||
{ | { | ||||
asset::bundlePath = CARDINAL_PLUGIN_PREFIX "/share/cardinal/PluginManifests"; | |||||
#if defined(ARCH_MAC) | |||||
asset::systemDir = "/Library/Application Support/Cardinal"; | |||||
#elif defined(ARCH_WIN) | |||||
if (const char* const commonprogfiles = std::getenv("COMMONPROGRAMFILES")) | |||||
asset::systemDir = system::join(commonprogfiles, "Cardinal"); | |||||
#else | |||||
asset::systemDir = CARDINAL_PLUGIN_PREFIX "/share/cardinal"; | asset::systemDir = CARDINAL_PLUGIN_PREFIX "/share/cardinal"; | ||||
templatePath = system::join(asset::systemDir, "template.vcv"); | |||||
#endif | |||||
if (! asset::systemDir.empty()) | |||||
{ | |||||
asset::bundlePath = system::join(asset::systemDir, "PluginManifests"); | |||||
templatePath = system::join(asset::systemDir, "template.vcv"); | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -325,7 +325,15 @@ public: | |||||
} | } | ||||
if (! errorMessage.empty()) | if (! errorMessage.empty()) | ||||
asyncDialog::create(errorMessage.c_str()); | |||||
{ | |||||
static bool shown = false; | |||||
if (! shown) | |||||
{ | |||||
shown = true; | |||||
asyncDialog::create(errorMessage.c_str()); | |||||
} | |||||
} | |||||
context->window->step(); | context->window->step(); | ||||
@@ -171,21 +171,26 @@ endif | |||||
TARGET = rack.a | TARGET = rack.a | ||||
ifneq ($(MACOS),true) | |||||
CARDINAL_FX_ARGS = VST2_FILENAME=Cardinal.vst/CardinalFX$(LIB_EXT) | |||||
CARDINAL_SYNTH_ARGS = VST2_FILENAME=Cardinal.vst/CardinalSynth$(LIB_EXT) | |||||
endif | |||||
all: $(TARGET) | all: $(TARGET) | ||||
ifeq ($(MOD_BUILD),true) | ifeq ($(MOD_BUILD),true) | ||||
$(MAKE) -C CardinalFX lv2 | $(MAKE) -C CardinalFX lv2 | ||||
else | else | ||||
$(MAKE) -C Cardinal | $(MAKE) -C Cardinal | ||||
$(MAKE) -C CardinalFX | |||||
$(MAKE) -C CardinalSynth | |||||
$(MAKE) -C CardinalFX $(CARDINAL_FX_ARGS) | |||||
$(MAKE) -C CardinalSynth $(CARDINAL_SYNTH_ARGS) | |||||
endif | endif | ||||
clean: | clean: | ||||
rm -f $(TARGET) | rm -f $(TARGET) | ||||
rm -rf $(BUILD_DIR) | rm -rf $(BUILD_DIR) | ||||
$(MAKE) clean -C Cardinal | $(MAKE) clean -C Cardinal | ||||
$(MAKE) clean -C CardinalFX | |||||
$(MAKE) clean -C CardinalSynth | |||||
$(MAKE) clean -C CardinalFX $(CARDINAL_FX_ARGS) | |||||
$(MAKE) clean -C CardinalSynth $(CARDINAL_SYNTH_ARGS) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Build commands | # Build commands | ||||
@@ -235,6 +235,7 @@ endif | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# fallback path to resource files | # fallback path to resource files | ||||
ifneq ($(CIBUILD),true) | |||||
ifneq ($(SYSDEPS),true) | ifneq ($(SYSDEPS),true) | ||||
ifeq ($(EXE_WRAPPER),wine) | ifeq ($(EXE_WRAPPER),wine) | ||||
@@ -245,6 +246,7 @@ endif | |||||
BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_SOURCE_DIR='"$(SOURCE_DIR)"' | BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_SOURCE_DIR='"$(SOURCE_DIR)"' | ||||
endif | |||||
endif | endif | ||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -256,8 +258,12 @@ BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"' | |||||
# Enable all possible plugin types and setup resources | # Enable all possible plugin types and setup resources | ||||
ifeq ($(CARDINAL_VARIANT),main) | ifeq ($(CARDINAL_VARIANT),main) | ||||
ifneq ($(STATIC_BUILD),true) | |||||
all: jack lv2 vst3 | all: jack lv2 vst3 | ||||
else | else | ||||
all: lv2 vst3 | |||||
endif # STATIC_BUILD | |||||
else | |||||
all: lv2 vst2 vst3 static | all: lv2 vst2 vst3 static | ||||
endif | endif | ||||
@@ -284,7 +290,7 @@ ifneq ($(CARDINAL_VARIANT),main) | |||||
ifeq ($(MACOS),true) | ifeq ($(MACOS),true) | ||||
VST2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).vst/Contents/Resources/%) | VST2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).vst/Contents/Resources/%) | ||||
else | else | ||||
VST2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).vst/resources/%) | |||||
VST2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/Cardinal.vst/resources/%) | |||||
endif | endif | ||||
endif | endif | ||||
@@ -294,7 +300,7 @@ vst3: $(VST3_RESOURCES) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
$(TARGET_DIR)/$(NAME).%/template.vcv: ../template.vcv | |||||
$(TARGET_DIR)/%/template.vcv: ../template.vcv | |||||
-@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
$(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
@@ -315,7 +321,7 @@ $(TARGET_DIR)/$(NAME).lv2/modgui/documentation.pdf: ../../docs/MODDEVICES.md $(T | |||||
(cd ../../docs/ && pandoc MODDEVICES.md -f markdown+implicit_figures -o $(abspath $@)) | (cd ../../docs/ && pandoc MODDEVICES.md -f markdown+implicit_figures -o $(abspath $@)) | ||||
endif | endif | ||||
$(TARGET_DIR)/$(NAME).vst/resources/%: ../Rack/res/% | |||||
$(TARGET_DIR)/Cardinal.vst/resources/%: ../Rack/res/% | |||||
-@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
$(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
@@ -46,6 +46,10 @@ | |||||
# undef DEBUG | # undef DEBUG | ||||
#endif | #endif | ||||
#ifdef STATIC_BUILD | |||||
# undef HAVE_LIBLO | |||||
#endif | |||||
#ifdef HAVE_LIBLO | #ifdef HAVE_LIBLO | ||||
# include <lo/lo.h> | # include <lo/lo.h> | ||||
#endif | #endif | ||||
@@ -53,7 +53,7 @@ const std::string APP_VERSION_MAJOR = "2"; | |||||
const std::string APP_VERSION = "2.1"; | const std::string APP_VERSION = "2.1"; | ||||
#if defined ARCH_WIN | #if defined ARCH_WIN | ||||
const std::string APP_OS = "win"; | const std::string APP_OS = "win"; | ||||
#elif ARCH_MAC | |||||
#elif defined ARCH_MAC | |||||
const std::string APP_OS = "mac"; | const std::string APP_OS = "mac"; | ||||
#elif defined ARCH_LIN | #elif defined ARCH_LIN | ||||
const std::string APP_OS = "lin"; | const std::string APP_OS = "lin"; | ||||
@@ -0,0 +1,67 @@ | |||||
#!/bin/bash | |||||
set -e | |||||
if [ -d bin ]; then | |||||
cd bin | |||||
else | |||||
echo "Please run this script from the root folder" | |||||
exit | |||||
fi | |||||
rm -rf res | |||||
rm -rf au | |||||
rm -rf lv2 | |||||
rm -rf vst2 | |||||
rm -rf vst3 | |||||
mkdir au lv2 vst2 vst3 | |||||
mv *.component au/ | |||||
mv *.lv2 lv2/ | |||||
mv *.vst vst2/ | |||||
mv *.vst3 vst3/ | |||||
cp -RL lv2/Cardinal.lv2/resources res | |||||
rm -rf lv2/*.lv2/resources | |||||
rm -rf vst2/*.vst/Contents/Resources | |||||
rm -rf vst3/*.vst3/Contents/Resources | |||||
pkgbuild \ | |||||
--identifier "studio.kx.distrho.cardinal.resources" \ | |||||
--install-location "/Library/Application Support/Cardinal/" \ | |||||
--root "${PWD}/res/" \ | |||||
../dpf-cardinal-resources.pkg | |||||
pkgbuild \ | |||||
--identifier "studio.kx.distrho.plugins.cardinal.components" \ | |||||
--install-location "/Library/Audio/Plug-Ins/Components/" \ | |||||
--root "${PWD}/au/" \ | |||||
../dpf-cardinal-components.pkg | |||||
pkgbuild \ | |||||
--identifier "studio.kx.distrho.plugins.cardinal.lv2bundles" \ | |||||
--install-location "/Library/Audio/Plug-Ins/LV2/" \ | |||||
--root "${PWD}/lv2/" \ | |||||
../dpf-cardinal-lv2bundles.pkg | |||||
pkgbuild \ | |||||
--identifier "studio.kx.distrho.plugins.cardinal.vst2bundles" \ | |||||
--install-location "/Library/Audio/Plug-Ins/VST/" \ | |||||
--root "${PWD}/vst2/" \ | |||||
../dpf-cardinal-vst2bundles.pkg | |||||
pkgbuild \ | |||||
--identifier "studio.kx.distrho.plugins.cardinal.vst3bundles" \ | |||||
--install-location "/Library/Audio/Plug-Ins/VST3/" \ | |||||
--root "${PWD}/vst3/" \ | |||||
../dpf-cardinal-vst3bundles.pkg | |||||
cd .. | |||||
sed -e "s|@builddir@|${PWD}/build|" utils/plugin.pkg/package.xml.in > build/package.xml | |||||
productbuild \ | |||||
--distribution build/package.xml \ | |||||
--identifier "studio.kx.distrho.cardinal" \ | |||||
--package-path "${PWD}" \ | |||||
--version 0 \ | |||||
Cardinal-macOS.pkg |
@@ -0,0 +1,53 @@ | |||||
#!/bin/bash | |||||
set -e | |||||
if [ ! -d bin ]; then | |||||
echo "Please run this script from the root folder" | |||||
exit | |||||
fi | |||||
# args | |||||
bit=${1} | |||||
bit=${bit:=64} | |||||
# setup innosetup | |||||
dlfile="${PWD}/bin/innosetup-6.0.5.exe" | |||||
innodir="${PWD}/build/innosetup-6.0.5" | |||||
iscc="${innodir}/drive_c/InnoSetup/ISCC.exe" | |||||
# download it | |||||
if [ ! -f "${dlfile}" ]; then | |||||
# FIXME proper dl version | |||||
curl -L https://jrsoftware.org/download.php/is.exe?site=2 -o "${dlfile}" | |||||
fi | |||||
# initialize wine | |||||
if [ ! -d "${innodir}"/drive_c ]; then | |||||
env WINEPREFIX="${innodir}" wineboot -u | |||||
fi | |||||
# install innosetup in custom wineprefix | |||||
if [ ! -f "${innodir}"/drive_c/InnoSetup/ISCC.exe ]; then | |||||
env WINEPREFIX="${innodir}" wine "${dlfile}" /allusers /dir=C:\\InnoSetup /nocancel /norestart /verysilent | |||||
fi | |||||
# generate resources | |||||
echo -n "" > utils/inno/resources.iss | |||||
IFS=' | |||||
' | |||||
for f in $(find -L bin/Cardinal.lv2/resources/ -type f); do | |||||
d=$(dirname $(echo ${f} | sed "s|bin/Cardinal.lv2/resources/||")) | |||||
echo "Source: \"..\\..\\$(echo ${f} | tr '/' '\\')\"; DestDir: \"{commoncf${bit}}\\Cardinal\\$(echo ${d} | tr '/' '\\')\"; Components: resources; Flags: ignoreversion;" >> utils/inno/resources.iss | |||||
done | |||||
# generate version | |||||
echo "#define VERSION \"$(make version)\"" > utils/inno/version.iss | |||||
# create the installer file | |||||
pushd "utils/inno" | |||||
env WINEPREFIX="${innodir}" wine "${iscc}" "win${bit}.iss" | |||||
popd | |||||
# move installer file where CI expects it to be | |||||
mv utils/inno/*.exe . |
@@ -0,0 +1,54 @@ | |||||
#include "version.iss" | |||||
[Setup] | |||||
ArchitecturesInstallIn64BitMode=x64 | |||||
AppName=Cardinal | |||||
AppPublisher=DISTRHO | |||||
AppPublisherURL=https://github.com/DISTRHO/Cardinal/ | |||||
AppSupportURL=https://github.com/DISTRHO/Cardinal/issues/ | |||||
AppUpdatesURL=https://github.com/DISTRHO/Cardinal/releases/ | |||||
AppVersion={#VERSION} | |||||
DefaultDirName={commonpf32}\Cardinal | |||||
DisableDirPage=yes | |||||
DisableWelcomePage=no | |||||
LicenseFile=..\..\LICENSE | |||||
OutputBaseFilename=Cardinal-win32-{#VERSION}-installer | |||||
OutputDir=. | |||||
UsePreviousAppDir=no | |||||
[Types] | |||||
Name: "full"; Description: "Full installation"; | |||||
Name: "custom"; Description: "Custom installation"; Flags: iscustom; | |||||
[Components] | |||||
Name: resources; Description: "Resources"; Types: full custom; Flags: fixed; | |||||
Name: carla; Description: "Carla/Ildaeil host tools"; Types: full; | |||||
Name: lv2; Description: "LV2 plugin"; Types: full; | |||||
Name: vst2; Description: "VST2 plugin"; Types: full; | |||||
Name: vst3; Description: "VST3 plugin"; Types: full; | |||||
[Files] | |||||
#include "resources.iss" | |||||
; carla | |||||
Source: "..\..\carla\bin\carla-bridge-*.*"; DestDir: "{commoncf32}\Cardinal\Carla"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\bin\carla-discovery-*.exe"; DestDir: "{commoncf32}\Cardinal\Carla"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\bin\libcarla_utils.dll"; DestDir: "{commoncf32}\Cardinal\Carla"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\libpython3.8.dll"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\Qt5*.dll"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\iconengines\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\imageformats\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\platforms\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\resources\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\styles\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\resources\lib\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources\lib"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\resources\lib\PyQt5\*.*"; DestDir: "{commoncf32}\Cardinal\Carla\resources\lib\PyQt5"; Components: carla; Flags: ignoreversion; | |||||
; lv2 | |||||
Source: "..\..\bin\Cardinal.lv2\*.*"; DestDir: "{commoncf32}\LV2\Cardinal.lv2"; Components: lv2; Flags: ignoreversion; | |||||
Source: "..\..\bin\CardinalFX.lv2\*.*"; DestDir: "{commoncf32}\LV2\CardinalFX.lv2"; Components: lv2; Flags: ignoreversion; | |||||
Source: "..\..\bin\CardinalSynth.lv2\*.*"; DestDir: "{commoncf32}\LV2\CardinalSynth.lv2"; Components: lv2; Flags: ignoreversion; | |||||
; vst2 | |||||
Source: "..\..\bin\Cardinal.vst\*.*"; DestDir: "{commoncf32}\VST2\Cardinal.vst"; Components: vst2; Flags: ignoreversion; | |||||
; vst3 | |||||
Source: "..\..\bin\Cardinal.vst3\Contents\x86-win\Cardinal.vst3"; DestDir: "{commoncf64}\VST3\Cardinal.vst3\Contents\x86-win"; Components: vst3; Flags: ignoreversion; | |||||
Source: "..\..\bin\CardinalFX.vst3\Contents\x86-win\CardinalFX.vst3"; DestDir: "{commoncf64}\VST3\CardinalFX.vst3\Contents\x86-win"; Components: vst3; Flags: ignoreversion; | |||||
Source: "..\..\bin\CardinalSynth.vst3\Contents\x86-win\CardinalSynth.vst3"; DestDir: "{commoncf64}\VST3\CardinalSynth.vst3\Contents\x86-win"; Components: vst3; Flags: ignoreversion; |
@@ -0,0 +1,54 @@ | |||||
#include "version.iss" | |||||
[Setup] | |||||
ArchitecturesInstallIn64BitMode=x64 | |||||
AppName=Cardinal | |||||
AppPublisher=DISTRHO | |||||
AppPublisherURL=https://github.com/DISTRHO/Cardinal/ | |||||
AppSupportURL=https://github.com/DISTRHO/Cardinal/issues/ | |||||
AppUpdatesURL=https://github.com/DISTRHO/Cardinal/releases/ | |||||
AppVersion={#VERSION} | |||||
DefaultDirName={commonpf64}\Cardinal | |||||
DisableDirPage=yes | |||||
DisableWelcomePage=no | |||||
LicenseFile=..\..\LICENSE | |||||
OutputBaseFilename=Cardinal-win64-{#VERSION}-installer | |||||
OutputDir=. | |||||
UsePreviousAppDir=no | |||||
[Types] | |||||
Name: "full"; Description: "Full installation"; | |||||
Name: "custom"; Description: "Custom installation"; Flags: iscustom; | |||||
[Components] | |||||
Name: resources; Description: "Resources"; Types: full custom; Flags: fixed; | |||||
Name: carla; Description: "Carla/Ildaeil host tools"; Types: full; | |||||
Name: lv2; Description: "LV2 plugin"; Types: full; | |||||
Name: vst2; Description: "VST2 plugin"; Types: full; | |||||
Name: vst3; Description: "VST3 plugin"; Types: full; | |||||
[Files] | |||||
#include "resources.iss" | |||||
; carla | |||||
Source: "..\..\carla\bin\carla-bridge-*.*"; DestDir: "{commoncf64}\Cardinal\Carla"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\bin\carla-discovery-*.exe"; DestDir: "{commoncf64}\Cardinal\Carla"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\bin\libcarla_utils.dll"; DestDir: "{commoncf64}\Cardinal\Carla"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\libpython3.8.dll"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\Qt5*.dll"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\iconengines\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\imageformats\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\platforms\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\resources\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\styles\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\resources\lib\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources\lib"; Components: carla; Flags: ignoreversion; | |||||
Source: "..\..\carla\build\Carla\resources\lib\PyQt5\*.*"; DestDir: "{commoncf64}\Cardinal\Carla\resources\lib\PyQt5"; Components: carla; Flags: ignoreversion; | |||||
; lv2 | |||||
Source: "..\..\bin\Cardinal.lv2\*.*"; DestDir: "{commoncf64}\LV2\Cardinal.lv2"; Components: lv2; Flags: ignoreversion; | |||||
Source: "..\..\bin\CardinalFX.lv2\*.*"; DestDir: "{commoncf64}\LV2\CardinalFX.lv2"; Components: lv2; Flags: ignoreversion; | |||||
Source: "..\..\bin\CardinalSynth.lv2\*.*"; DestDir: "{commoncf64}\LV2\CardinalSynth.lv2"; Components: lv2; Flags: ignoreversion; | |||||
; vst2 | |||||
Source: "..\..\bin\Cardinal.vst\*.*"; DestDir: "{commoncf64}\VST2\Cardinal.vst"; Components: vst2; Flags: ignoreversion; | |||||
; vst3 | |||||
Source: "..\..\bin\Cardinal.vst3\Contents\x86_64-win\Cardinal.vst3"; DestDir: "{commoncf64}\VST3\Cardinal.vst3\Contents\x86_64-win"; Components: vst3; Flags: ignoreversion; | |||||
Source: "..\..\bin\CardinalFX.vst3\Contents\x86_64-win\CardinalFX.vst3"; DestDir: "{commoncf64}\VST3\CardinalFX.vst3\Contents\x86_64-win"; Components: vst3; Flags: ignoreversion; | |||||
Source: "..\..\bin\CardinalSynth.vst3\Contents\x86_64-win\CardinalSynth.vst3"; DestDir: "{commoncf64}\VST3\CardinalSynth.vst3\Contents\x86_64-win"; Components: vst3; Flags: ignoreversion; |
@@ -0,0 +1,31 @@ | |||||
<?xml version="1.0" encoding="utf-8" standalone="no"?> | |||||
<installer-gui-script minSpecVersion="1"> | |||||
<title>Cardinal</title> | |||||
<domains enable_anywhere="false" enable_currentUserHome="false" enable_localSystem="true" /> | |||||
<license file="@builddir@/../LICENSE" mime-type="text/plain" /> | |||||
<options customize="always" hostArchitectures="x86_64" require-scripts="false" rootVolumeOnly="true" /> | |||||
<pkg-ref id="studio.kx.distrho.cardinal" /> | |||||
<welcome file="@builddir@/welcome.txt" mime-type="text/plain" /> | |||||
<choice id="studio.kx.distrho.cardinal-res" title="Resources" description="Install resources" visible="false"> | |||||
<pkg-ref id="studio.kx.distrho.cardinal-resources" version="0">dpf-cardinal-resources.pkg</pkg-ref> | |||||
</choice> | |||||
<choice id="studio.kx.distrho.cardinal-au" title="AU" description="Install AU plugins" visible="true"> | |||||
<pkg-ref id="studio.kx.distrho.cardinal-components" version="0">dpf-cardinal-components.pkg</pkg-ref> | |||||
</choice> | |||||
<choice id="studio.kx.distrho.cardinal-lv2" title="LV2" description="Install LV2 plugins" visible="true"> | |||||
<pkg-ref id="studio.kx.distrho.cardinal-lv2bundles" version="0">dpf-cardinal-lv2bundles.pkg</pkg-ref> | |||||
</choice> | |||||
<choice id="studio.kx.distrho.cardinal-vst2" title="VST2" description="Install VST2 plugins" visible="true"> | |||||
<pkg-ref id="studio.kx.distrho.cardinal-vst2bundles" version="0">dpf-cardinal-vst2bundles.pkg</pkg-ref> | |||||
</choice> | |||||
<choice id="studio.kx.distrho.cardinal-vst3" title="VST3" description="Install VST3 plugins" visible="true"> | |||||
<pkg-ref id="studio.kx.distrho.cardinal-vst3bundles" version="0">dpf-cardinal-vst3bundles.pkg</pkg-ref> | |||||
</choice> | |||||
<choices-outline> | |||||
<line choice="studio.kx.distrho.cardinal-res"/> | |||||
<line choice="studio.kx.distrho.cardinal-au"/> | |||||
<line choice="studio.kx.distrho.cardinal-lv2"/> | |||||
<line choice="studio.kx.distrho.cardinal-vst2"/> | |||||
<line choice="studio.kx.distrho.cardinal-vst3"/> | |||||
</choices-outline> | |||||
</installer-gui-script> |
@@ -0,0 +1,14 @@ | |||||
Cardinal is a free and open-source virtual modular synthesizer plugin. | |||||
It is based on the popular VCV Rack but with a focus on being a fully self-contained plugin version. | |||||
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. | |||||
FX and Synth variants both have 2 audio outputs, while "main" has 8. | |||||
All variants have MIDI input and output support. | |||||
This package provides the AU, LV2, VST2 and VST3 audio plugins for macOS. | |||||
Notes: | |||||
- Due to AU and VST2 not supporting CV ports, the main variant is not available for these formats. | |||||
- The VST3 version is in progress, already part of the build but still experimental. |