Browse Source

Merge branch 'DISTRHO:main' into update-Autinn

pull/905/head
rl2939 GitHub 4 weeks ago
parent
commit
8136e9fd95
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
15 changed files with 2182 additions and 21 deletions
  1. +7
    -0
      .github/workflows/build.yml
  2. +1
    -1
      docs/CARDINAL-MODULES.md
  3. +2
    -2
      docs/DIFFERENCES.md
  4. +1
    -1
      docs/LICENSES.md
  5. +1
    -1
      docs/OVERVIEW.md
  6. +1
    -1
      dpf
  7. +2114
    -0
      patches/examples/SpotlightKid_-_Cringe-Synth.vcv
  8. +1
    -1
      plugins/Cardinal/src/AudioFile.cpp
  9. +2
    -2
      plugins/Cardinal/src/Carla.cpp
  10. +2
    -2
      plugins/Cardinal/src/Ildaeil.cpp
  11. +1
    -1
      plugins/Cardinal/src/TextEditor.cpp
  12. +1
    -1
      src/CardinalX11WindowIcon.cpp
  13. +2
    -0
      src/Makefile
  14. +5
    -8
      src/custom/Browser.cpp
  15. +41
    -0
      utils/create-macos-installer.sh

+ 7
- 0
.github/workflows/build.yml View File

@@ -202,6 +202,13 @@ jobs:
- name: Build macOS (packaging)
if: steps.cache.outputs.cache-hit == 'true'
shell: bash
env:
MACOS_APP_CERTIFICATE: ${{ secrets.MACOS_APP_CERTIFICATE }}
MACOS_INSTALLER_CERTIFICATE: ${{ secrets.MACOS_INSTALLER_CERTIFICATE }}
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
MACOS_NOTARIZATION_USER: ${{ secrets.MACOS_NOTARIZATION_USER }}
MACOS_NOTARIZATION_PASS: ${{ secrets.MACOS_NOTARIZATION_PASS }}
MACOS_NOTARIZATION_TEAM: ${{ secrets.MACOS_NOTARIZATION_TEAM }}
run: |
source deps/PawPaw/local.env macos-universal-10.15
./utils/create-macos-installer.sh


+ 1
- 1
docs/CARDINAL-MODULES.md View File

@@ -194,7 +194,7 @@ The meaning of the outputs is:
- Step: Trigger for step change
- Bar Phase: 0-10v smooth ramp for the bar position (with bar division being a right-click option)
- Beat Phase: 0-10v smooth ramp for the beat position
- BPM: Volts per Beat per Second, as supported by Impromptu Clocked/Clkd and ZZC Clock
- BPM: Beats per minute in [Rack standard](https://vcvrack.com/manual/VoltageStandards#Pitch-and-Frequencies), supported by Impromptu Clocked/Clkd and ZZC Clock

## Extra modules



+ 2
- 2
docs/DIFFERENCES.md View File

@@ -10,7 +10,7 @@ Also, the official plugin works pretty much like the free standalone where you l
This is intentionally not allowed/enabled in Cardinal, as the target is to make a self-contained plugin binary.
Online access is also not allowed.

Bellow follows a list of features comparing the official plugin to Cardinal.
Below follows a list of features comparing the official plugin to Cardinal.

| Feature | Rack Pro | Cardinal | Additional notes |
|--------------------------------|---------------------------|---------------------------------|------------------|
@@ -36,7 +36,7 @@ Bellow follows a list of features comparing the official plugin to Cardinal.
| FX plugin variant | 16 ins, 16 outs | 2 ins, 2 outs | |
| Raw-CV plugin variant | Unsupported | 8 audio IO + 10 CV IO | Available in JACK, LV2 and VST3 formats, not possible in AU and VST2 |
| Arbitrary parameter automation | Yes | No (*) | Static 24 automatable params, use Host Params/Map modules to map them to module parameters |
| Integrated plugin host | No, Host payed separately | Yes, using Carla or Ildaeil | |
| Integrated plugin host | No, Host paid separately | Yes, using Carla or Ildaeil | |
| Host sync/timing | Using MIDI signals | Using dedicated module | |
| Linux/X11 event handling | Runs on 2nd thread | Runs on main/GUI thread | |
| v1 module compatibility | No | No, but with less restrictions | Module widgets can load resources at any point |


+ 1
- 1
docs/LICENSES.md View File

@@ -99,7 +99,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules

## ARTWORK / PANEL LICENSES

Bellow follows a list of all licenses related to **artwork and module panels**, sorted by file name.
Below follows a list of all licenses related to **artwork and module panels**, sorted by file name.
Licenses were retrieved from the official project's LICENSE, README or related files.
When * is used, it is meant as wildcard of all files, with potential exceptions mentioned afterwards.
When a license is uncertain, ??? is used.


+ 1
- 1
docs/OVERVIEW.md View File

@@ -45,7 +45,7 @@ Implementing new plugin formats will be done here.
This directory contains special header files needed to build the original Rack code as required by Cardinal.
These headers are included before the official Rack ones, allowing us to override some implementation details.

Additionally a few compatiblity headers are present, helping compile the code for more targets than officially supported in Rack.
Additionally a few compatibility headers are present, helping compile the code for more targets than officially supported in Rack.

## lv2export



+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit d38701abff789f44f2f483a6360416a9adbcc8f9
Subproject commit 5b32b1cac430e3038319e46c9e10f459e95ca598

+ 2114
- 0
patches/examples/SpotlightKid_-_Cringe-Synth.vcv
File diff suppressed because it is too large
View File


+ 1
- 1
plugins/Cardinal/src/AudioFile.cpp View File

@@ -201,7 +201,7 @@ struct CarlaInternalPluginModule : Module, Runner {
{
switch (opcode)
{
// cannnot be supported
// cannot be supported
case NATIVE_HOST_OPCODE_HOST_IDLE:
break;
// other stuff


+ 2
- 2
plugins/Cardinal/src/Carla.cpp View File

@@ -27,7 +27,7 @@
#include "water/xml/XmlDocument.h"

#ifndef CARDINAL_SYSDEPS
// private method that takes ownership, we can use it to avoid superfulous allocations
// private method that takes ownership, we can use it to avoid superfluous allocations
extern "C" {
json_t *jsonp_stringn_nocheck_own(const char* value, size_t len);
}
@@ -244,7 +244,7 @@ struct CarlaModule : Module {
{
switch (opcode)
{
// cannnot be supported
// cannot be supported
case NATIVE_HOST_OPCODE_HOST_IDLE:
break;
// other stuff


+ 2
- 2
plugins/Cardinal/src/Ildaeil.cpp View File

@@ -52,7 +52,7 @@
#include <string>

#ifndef CARDINAL_SYSDEPS
// private method that takes ownership, we can use it to avoid superfulous allocations
// private method that takes ownership, we can use it to avoid superfluous allocations
extern "C" {
json_t *jsonp_stringn_nocheck_own(const char* value, size_t len);
}
@@ -575,7 +575,7 @@ struct IldaeilModule : Module {
{
switch (opcode)
{
// cannnot be supported?
// cannot be supported?
case NATIVE_HOST_OPCODE_HOST_IDLE:
break;
// other stuff


+ 1
- 1
plugins/Cardinal/src/TextEditor.cpp View File

@@ -85,7 +85,7 @@ struct TextEditorModule : Module {
{
file.clear();

// Rack Core Notes compatiblity
// Rack Core Notes compatibility
if (json_t* const textJ = json_object_get(rootJ, "text"))
{
text = json_string_value(textJ);


+ 1
- 1
src/CardinalX11WindowIcon.cpp View File

@@ -1214,7 +1214,7 @@ static constexpr const unsigned long sCardinalX11Icon[] = {

static constexpr const uint32_t sCardinalX11IconSize = 2 + 16 * 16 + 2 + 48 * 48 + 2 + 128 * 128;

// declaration first, ensuring extern/visiblity status is respected
// declaration first, ensuring extern/visibility status is respected
extern const unsigned long* gCardinalX11Icon;

// definition afterwards


+ 2
- 0
src/Makefile View File

@@ -33,6 +33,7 @@ BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal

RACK_FILES += AsyncDialog.cpp
RACK_FILES += CardinalModuleWidget.cpp
RACK_FILES += custom/Browser.cpp
RACK_FILES += custom/asset.cpp
RACK_FILES += custom/dep.cpp
RACK_FILES += custom/library.cpp
@@ -68,6 +69,7 @@ IGNORED_FILES += Rack/src/plugin.cpp
IGNORED_FILES += Rack/src/rtaudio.cpp
IGNORED_FILES += Rack/src/rtmidi.cpp
IGNORED_FILES += Rack/src/app/AudioDisplay.cpp
IGNORED_FILES += Rack/src/app/Browser.cpp
IGNORED_FILES += Rack/src/app/MenuBar.cpp
IGNORED_FILES += Rack/src/app/MidiDisplay.cpp
IGNORED_FILES += Rack/src/app/ModuleWidget.cpp


include/componentlibrary.hpp → src/custom/Browser.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2026 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -15,17 +15,14 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#pragma once

// little hack to force browser yellow color to cardinal red
#define SCHEME_YELLOW SCHEME_YELLOW_OldVCV
#include_next "componentlibrary.hpp"
#include "componentlibrary.hpp"
#undef SCHEME_YELLOW

namespace rack {
namespace componentlibrary {

// Yellow? What's that?
static const NVGcolor SCHEME_YELLOW = nvgRGBf(0.76f, 0.11f, 0.22f);

}
}

#include "../src/app/Browser.cpp"

+ 41
- 0
utils/create-macos-installer.sh View File

@@ -26,10 +26,34 @@ rm -rf vst2/*.vst/Contents/Resources
rm -rf vst3/*.vst3/Contents/Resources
rm -rf clap/*.clap/Contents/Resources

if [ -n "${MACOS_APP_CERTIFICATE}" ] && [ -n "${MACOS_INSTALLER_CERTIFICATE}" ] && [ -n "${MACOS_CERTIFICATE_PASSWORD}" ]; then
security create-keychain -p "" $(pwd)/keychain.db
security unlock-keychain -p "" $(pwd)/keychain.db
echo -n "${MACOS_APP_CERTIFICATE}" | base64 --decode -o cert.p12
security import cert.p12 -P "${MACOS_CERTIFICATE_PASSWORD}" -A -t cert -f pkcs12 -k $(pwd)/keychain.db
echo -n "${MACOS_INSTALLER_CERTIFICATE}" | base64 --decode -o cert.p12
security import cert.p12 -P "${MACOS_CERTIFICATE_PASSWORD}" -A -t cert -f pkcs12 -k $(pwd)/keychain.db
rm cert.p12
security list-keychain -d user -s $(pwd)/keychain.db

MACOS_APP_DEV_ID="$(security find-identity -v $(pwd)/keychain.db | grep 'Developer ID Application:' | head -n 1 | cut -d' ' -f 5-99 | sed 's/\"//g')"
codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime au/*.component
codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime clap/*.clap
codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime jack/*.app
codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime native/*.app
codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime vst2/*.vst
codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime vst3/*.vst3
codesign -s "${MACOS_APP_DEV_ID}" --force --verbose --option=runtime lv2/*.lv2/*.dylib

MACOS_INSTALLER_DEV_ID="$(security find-identity -v $(pwd)/keychain.db | grep 'Developer ID Installer:' | head -n 1 | cut -d' ' -f 5-99 | sed 's/\"//g')"
PKG_SIGN_ARGS=(--sign "${MACOS_INSTALLER_DEV_ID}")
fi

pkgbuild \
--identifier "studio.kx.distrho.cardinal.resources" \
--install-location "/Library/Application Support/Cardinal/" \
--root "${PWD}/res/" \
"${PKG_SIGN_ARGS[@]}" \
../dpf-cardinal-resources.pkg

pkgbuild \
@@ -37,6 +61,7 @@ pkgbuild \
--component-plist "../utils/macOS/Build_JACK.plist" \
--install-location "/Applications/" \
--root "${PWD}/jack/" \
"${PKG_SIGN_ARGS[@]}" \
../dpf-cardinal-jack.pkg

pkgbuild \
@@ -44,36 +69,42 @@ pkgbuild \
--component-plist "../utils/macOS/Build_Native.plist" \
--install-location "/Applications/" \
--root "${PWD}/native/" \
"${PKG_SIGN_ARGS[@]}" \
../dpf-cardinal-native.pkg

pkgbuild \
--identifier "studio.kx.distrho.plugins.cardinal.components" \
--install-location "/Library/Audio/Plug-Ins/Components/" \
--root "${PWD}/au/" \
"${PKG_SIGN_ARGS[@]}" \
../dpf-cardinal-components.pkg

pkgbuild \
--identifier "studio.kx.distrho.plugins.cardinal.lv2bundles" \
--install-location "/Library/Audio/Plug-Ins/LV2/" \
--root "${PWD}/lv2/" \
"${PKG_SIGN_ARGS[@]}" \
../dpf-cardinal-lv2bundles.pkg

pkgbuild \
--identifier "studio.kx.distrho.plugins.cardinal.vst2bundles" \
--install-location "/Library/Audio/Plug-Ins/VST/" \
--root "${PWD}/vst2/" \
"${PKG_SIGN_ARGS[@]}" \
../dpf-cardinal-vst2bundles.pkg

pkgbuild \
--identifier "studio.kx.distrho.plugins.cardinal.vst3bundles" \
--install-location "/Library/Audio/Plug-Ins/VST3/" \
--root "${PWD}/vst3/" \
"${PKG_SIGN_ARGS[@]}" \
../dpf-cardinal-vst3bundles.pkg

pkgbuild \
--identifier "studio.kx.distrho.plugins.cardinal.clapbundles" \
--install-location "/Library/Audio/Plug-Ins/CLAP/" \
--root "${PWD}/clap/" \
"${PKG_SIGN_ARGS[@]}" \
../dpf-cardinal-clapbundles.pkg

cd ..
@@ -86,4 +117,14 @@ productbuild \
--identifier "studio.kx.distrho.cardinal" \
--package-path "${PWD}" \
--version 0 \
"${PKG_SIGN_ARGS[@]}" \
Cardinal-macOS.pkg

if [ -n "${MACOS_NOTARIZATION_USER}" ] && [ -n "${MACOS_NOTARIZATION_PASS}" ] && [ -n "${MACOS_NOTARIZATION_TEAM}" ]; then
xcrun notarytool submit Cardinal-macOS.pkg \
--apple-id ${MACOS_NOTARIZATION_USER} \
--password ${MACOS_NOTARIZATION_PASS} \
--team-id ${MACOS_NOTARIZATION_TEAM} \
--wait
xcrun stapler staple Cardinal-macOS.pkg
fi

Loading…
Cancel
Save