Browse Source

Merge branch 'CVfunk' of https://github.com/codygeary/Cardinal into CVfunk

tags/24.12
CV funk 1 year ago
parent
commit
e08693a640
53 changed files with 612 additions and 223 deletions
  1. +42
    -0
      .github/ISSUE_TEMPLATE/bug.yaml
  2. +8
    -0
      .github/ISSUE_TEMPLATE/config.yml
  3. +9
    -0
      .github/ISSUE_TEMPLATE/feature.yaml
  4. +9
    -0
      .gitmodules
  5. +3
    -2
      Makefile
  6. +2
    -0
      README.md
  7. +1
    -1
      carla
  8. +1
    -1
      deps/PawPaw
  9. +10
    -0
      docs/LICENSES.md
  10. +1
    -1
      dpf
  11. +15
    -1
      include/midi.hpp
  12. +61
    -42
      include/plugincontext.hpp
  13. +1
    -0
      plugins/Biset
  14. +2
    -8
      plugins/Cardinal/src/AIDA-X.cpp
  15. +3
    -5
      plugins/Cardinal/src/AudioFile.cpp
  16. +2
    -4
      plugins/Cardinal/src/AudioToCVPitch.cpp
  17. +2
    -5
      plugins/Cardinal/src/Carla.cpp
  18. +3
    -1
      plugins/Cardinal/src/HostAudio.cpp
  19. +3
    -1
      plugins/Cardinal/src/HostCV.cpp
  20. +3
    -1
      plugins/Cardinal/src/HostMIDI-CC.cpp
  21. +3
    -1
      plugins/Cardinal/src/HostMIDI-Gate.cpp
  22. +3
    -1
      plugins/Cardinal/src/HostMIDI-Map.cpp
  23. +3
    -1
      plugins/Cardinal/src/HostMIDI.cpp
  24. +3
    -1
      plugins/Cardinal/src/HostParameters-Map.cpp
  25. +3
    -1
      plugins/Cardinal/src/HostParameters.cpp
  26. +3
    -1
      plugins/Cardinal/src/HostTime.cpp
  27. +3
    -7
      plugins/Cardinal/src/Ildaeil.cpp
  28. +4
    -1
      plugins/Cardinal/src/MPV.cpp
  29. +2
    -2
      plugins/Cardinal/src/SassyScope.cpp
  30. +2
    -4
      plugins/Cardinal/src/TextEditor.cpp
  31. +3
    -6
      plugins/Cardinal/src/plugin.hpp
  32. +1
    -0
      plugins/Computerscare
  33. +65
    -1
      plugins/Makefile
  34. +1
    -1
      plugins/MindMeldModular
  35. +1
    -1
      plugins/Sapphire
  36. +1
    -0
      plugins/StarlingVia
  37. +1
    -1
      plugins/dBiz
  38. +139
    -0
      plugins/plugins.cpp
  39. +129
    -4
      src/CardinalCommon.cpp
  40. +2
    -1
      src/CardinalCommon.hpp
  41. +2
    -2
      src/CardinalPlugin.cpp
  42. +2
    -93
      src/CardinalPluginContext.hpp
  43. +2
    -2
      src/CardinalRemote.cpp
  44. +2
    -2
      src/CardinalRemote/RemoteUI.hpp
  45. +2
    -2
      src/CardinalRemote/main.cpp
  46. +3
    -3
      src/CardinalUI.cpp
  47. +1
    -0
      src/Makefile.cardinal.mk
  48. +36
    -0
      src/custom/dep.cpp
  49. +2
    -2
      src/custom/glfw.cpp
  50. +3
    -5
      src/override/MenuBar.cpp
  51. +2
    -2
      src/override/Window.cpp
  52. +1
    -1
      utils/macOS/Info_JACK.plist
  53. +1
    -1
      utils/macOS/Info_Native.plist

+ 42
- 0
.github/ISSUE_TEMPLATE/bug.yaml View File

@@ -0,0 +1,42 @@
name: Bug Report
description: Report a bug with Cardinal
body:
- type: input
id: version
attributes:
label: Version
value: "24.04"
validations:
required: true
- type: dropdown
id: plugin-type
attributes:
label: Plugin type
multiple: true
options:
- Native / JACK
- AU
- CLAP
- LV2
- VST2
- VST3
validations:
required: true
- type: input
id: os
attributes:
label: OS
validations:
required: true
- type: input
id: daw-host
attributes:
label: "DAW / Host (if applicable)"
validations:
required: false
- type: textarea
id: bug-description
attributes:
label: Description
validations:
required: true

+ 8
- 0
.github/ISSUE_TEMPLATE/config.yml View File

@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Module request
url: https://github.com/DISTRHO/Cardinal/wiki/Possible-modules-to-include
about: To request a new module, add it to the wiki page here
- name: Discussions
url: https://github.com/DISTRHO/Cardinal/discussions
about: Ask other questions or share what you've made with Cardinal

+ 9
- 0
.github/ISSUE_TEMPLATE/feature.yaml View File

@@ -0,0 +1,9 @@
name: Feature request
description: Request a new feature
body:
- type: textarea
id: feature-description
attributes:
label: Description
validations:
required: true

+ 9
- 0
.gitmodules View File

@@ -233,6 +233,15 @@
[submodule "plugins/DHE-Modules"]
path = plugins/DHE-Modules
url = https://github.com/dhemery/DHE-Modules.git
[submodule "plugins/Computerscare"]
path = plugins/Computerscare
url = https://github.com/freddyz/computerscare-vcv-modules.git
[submodule "plugins/CVfunk"]
path = plugins/CVfunk
url = https://github.com/codygeary/CVfunk-Modules.git
[submodule "plugins/StarlingVia"]
path = plugins/StarlingVia
url = https://github.com/starlingcode/Via-for-Rack.git
[submodule "plugins/Biset"]
path = plugins/Biset
url = https://github.com/gibbonjoyeux/VCV-Biset.git

+ 3
- 2
Makefile View File

@@ -10,11 +10,12 @@ include $(ROOT)/Makefile.base.mk
# Set version

# also set in:
# .github/ISSUE_TEMPLATE/bug.yaml
# src/CardinalCommon.cpp `CARDINAL_VERSION`
# src/CardinalPlugin.cpp `getVersion`
# utils/macOS/Info_{JACK,Native}.plist
# src/CardinalCommon.cpp src/CardinalPlugin.cpp utils/macOS/Info_{JACK,Native}.plist
VERSION = 24.03
# .github/ISSUE_TEMPLATE/bug.yaml src/CardinalCommon.cpp src/CardinalPlugin.cpp utils/macOS/Info_{JACK,Native}.plist
VERSION = 24.04

# --------------------------------------------------------------
# Build targets


+ 2
- 0
README.md View File

@@ -139,6 +139,7 @@ At the moment the following 3rd-party modules are provided:
- [Catro/Modulo](https://github.com/catronomix/catro-modulo)
- [cf](https://github.com/cfoulc/cf)
- [ChowDSP](https://github.com/jatinchowdhury18/ChowDSP-VCV)
- [Computerscare](https://github.com/freddyz/computerscare-vcv-modules)
- [CVfunk](https://github.com/codygeary/CVfunk-Modules)
- [dBiz](https://github.com/dBiz/dBiz)
- [DHE Modules](https://github.com/dhemery/DHE-Modules)
@@ -185,6 +186,7 @@ At the moment the following 3rd-party modules are provided:
- [Sapphire](https://github.com/cosinekitty/sapphire)
- [Sonus Modular](https://gitlab.com/sonusdept/sonusmodular)
- [stocaudio](https://github.com/aptrn/stocaudio-modules)
- [Starling Via](https://github.com/starlingcode/Via-for-Rack)
- [Stoermelder Pack-One](https://github.com/stoermelder/vcvrack-packone)
- [Surge XT](https://github.com/surge-synthesizer/surge-rack)
- [unless_modules](https://gitlab.com/unlessgames/unless_modules)


+ 1
- 1
carla

@@ -1 +1 @@
Subproject commit 66afe24a08790732cc17d81d4b846a1e0cfa0118
Subproject commit 3c7d0e7b914d38a32b733cc5ced0b5696d2f9a03

+ 1
- 1
deps/PawPaw

@@ -1 +1 @@
Subproject commit b84d0ec2d1bb5c7d7fd05d4a8d7f4af71306c425
Subproject commit 0edef2120e7fd493493e66967438c0b2ea8c8552

+ 10
- 0
docs/LICENSES.md View File

@@ -29,10 +29,12 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule
| Bacon Music | GPL-3.0-or-later | |
| Befaco | GPL-3.0-or-later | |
| Bidoo | GPL-3.0-or-later | |
| Biset | MIT | |
| Bogaudio | GPL-3.0-or-later | |
| Catro/Modulo | BSD-3-Clause | |
| cf | BSD-3-Clause | |
| ChowDSP | GPL-3.0-or-later | |
| Computerscare | BSD-3-Clause | |
| CVfunk | MIT | |
| dBiz | GPL-3.0-or-later | |
| DHE-Modules | MIT | |
@@ -78,6 +80,7 @@ Bellow follows a list of all code licenses used in Cardinal and linked submodule
| RebelTech | GPL-2.0-or-later | |
| Sapphire | GPL-3.0-or-later | |
| Sonus Modular | GPL-3.0-or-later | |
| Starling Via | MIT | |
| stocaudio | GPL-3.0-or-later | |
| Stoermelder Pack-One | GPL-3.0-or-later | |
| Surge XT | GPL-3.0-or-later | |
@@ -145,6 +148,9 @@ Below is a list of artwork licenses from plugins
| Befaco/components/* | CC-BY-NC-4.0 | |
| Befaco/fonts/Segment7Standard.otf | OFL-1.1-RFN | |
| Befaco/panels/* | Custom | Copyright © [Befaco](https://www.befaco.org/), [used and distributed with permission](LICENSE-PERMISSIONS.md#befaco-manu-retamero--befaco) |
| Biset/* | MIT | No artwork specific license provided |
| Biset/FT88-Regular.ttf | OFL | |
| Biset/Recursive_VF_1.085.ttf | OFL-1.1-no-RFN | |
| BogaudioModules/* | CC-BY-SA-4.0 | |
| BogaudioModules/fonts/audiowide.ttf | OFL-1.1-RFN | |
| BogaudioModules/fonts/inconsolata*.ttf | OFL-1.1-no-RFN | |
@@ -158,6 +164,9 @@ Below is a list of artwork licenses from plugins
| cf/VT323-Regular.ttf | OFL-1.1-no-RFN | |
| ChowDSP/* | GPL-3.0-or-later | Same license as source code |
| ChowDSP/fonts/RobotoCondensed-*.ttf | Apache-2.0 | |
| Computerscare/* | BSD-3-Clause | No artwork specific license provided |
| Computerscare/Oswald-Regular.ttf | OFL-1.1 | |
| Computerscare/Segment7Standard.ttf | OFL-1.1-RFN | |
| CVfunk/* | MIT | Same license as source code |
| dBiz/* | CC-BY-NC-ND-4.0 | |
| dBiz/DejaVuSansMono.ttf | Bitstream-Vera | |
@@ -231,6 +240,7 @@ Below is a list of artwork licenses from plugins
| RebelTech/* | CC-BY-NC-4.0 | |
| Sapphire/* | GPL-3.0-or-later | No artwork specific license provided |
| sonusmodular/* | GPL-3.0-or-later | [Same license as source code](https://gitlab.com/sonusdept/sonusmodular/-/issues/14) |
| StarlingVia/* | MIT | No artwork specific license provided |
| stocaudio/* | GPL-3.0-or-later | No artwork specific license provided |
| stoermelder-packone/* | GPL-3.0-or-later | No artwork specific license provided |
| stoermelder-packone/fonts/RedkostComic.otf | OFL-1.1-RFN | |


+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit 045b943199393053c606b530fc882661502d53d7
Subproject commit 01aca7649c1a3a5ee20a47c5ecd3cb2e29395f89

+ 15
- 1
include/midi.hpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -29,6 +29,8 @@

#include "choc/choc_SmallVector.h"

#include <jansson.h>

namespace rack {
/** Abstraction for all MIDI drivers in Rack */
namespace midi {
@@ -111,6 +113,18 @@ struct Message {
};


struct InputQueue {
struct Internal;
Internal* internal;

InputQueue();
~InputQueue();
bool tryPop(Message* const messageOut, int64_t maxFrame);
json_t* toJson() const;
void fromJson(json_t* rootJ);
};


/* NOTE all the other MIDI stuff (drivers, ports etc) is purposefully missing here, unwanted in Cardinal
*/
struct Port;


plugins/Cardinal/src/plugincontext.hpp → include/plugincontext.hpp View File

@@ -1,37 +1,67 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 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
* published by the Free Software Foundation; either version 3 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the LICENSE file.
* Copyright (C) 2021-2024 Filipe Coelho <falktx@falktx.com>
* SPDX-License-Identifier: GPL-3.0-or-later
*/

#pragma once

#include "plugin.hpp"
#include "DistrhoUtils.hpp"
#ifdef BUILDING_PLUGIN_MODULES
#include "rack.hpp"
#endif

namespace rack {
namespace midi {
struct Message;
}
}

// --------------------------------------------------------------------------------------------------------------------
// Base DISTRHO classes

#ifndef DISTRHO_DETAILS_HPP_INCLUDED

namespace CardinalDISTRHO {

class Plugin;
class UI;

struct MidiEvent {
static const uint32_t kDataSize = 4;
uint32_t frame;
uint32_t size;
uint8_t data[kDataSize];
const uint8_t* dataExt;
};

}

#endif

// --------------------------------------------------------------------------------------------------------------------
// Base DGL classes

#include "../dgl/Base.hpp"
#ifndef DGL_BASE_HPP_INCLUDED

// -----------------------------------------------------------------------------------------------------------
// from PluginContext.hpp
namespace CardinalDGL {

START_NAMESPACE_DGL
class TopLevelWidget;
template <class BaseWidget> class NanoBaseWidget;
typedef NanoBaseWidget<TopLevelWidget> NanoTopLevelWidget;
END_NAMESPACE_DGL

START_NAMESPACE_DISTRHO
struct IdleCallback {
virtual ~IdleCallback() {}
virtual void idleCallback() = 0;
};

}

#endif

using CardinalDGL::IdleCallback;

// --------------------------------------------------------------------------------------------------------------------
// Cardinal specific context

static constexpr const uint32_t kModuleParameterCount = 24;

@@ -43,17 +73,6 @@ enum CardinalVariant {
kCardinalVariantSynth,
};

class Plugin;
class UI;

struct MidiEvent {
static const uint32_t kDataSize = 4;
uint32_t frame;
uint32_t size;
uint8_t data[kDataSize];
const uint8_t* dataExt;
};

struct CardinalPluginContext : rack::Context {
uint32_t bufferSize, processCounter;
double sampleRate;
@@ -67,23 +86,23 @@ struct CardinalPluginContext : rack::Context {
uintptr_t nativeWindowId;
const float* const* dataIns;
float** dataOuts;
const MidiEvent* midiEvents;
const CardinalDISTRHO::MidiEvent* midiEvents;
uint32_t midiEventCount;
Plugin* const plugin;
DGL_NAMESPACE::NanoTopLevelWidget* tlw;
UI* ui;
CardinalPluginContext(Plugin* const p);
CardinalDISTRHO::Plugin* const plugin;
#ifndef HEADLESS
CardinalDGL::NanoTopLevelWidget* tlw;
CardinalDISTRHO::UI* ui;
#endif
CardinalPluginContext(CardinalDISTRHO::Plugin* const p);
void writeMidiMessage(const rack::midi::Message& message, uint8_t channel);
#ifndef HEADLESS
#ifndef HEADLESS
bool addIdleCallback(IdleCallback* cb) const;
void removeIdleCallback(IdleCallback* cb) const;
#endif
#endif
};

#ifndef HEADLESS
void handleHostParameterDrag(const CardinalPluginContext* pcontext, uint index, bool started);
#endif

END_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------

+ 1
- 0
plugins/Biset

@@ -0,0 +1 @@
Subproject commit a697109733cf0d0f022cf01e06896a1e78b236f6

+ 2
- 8
plugins/Cardinal/src/AIDA-X.cpp View File

@@ -1,11 +1,11 @@
/*
* AIDA-X Cardinal plugin
* Copyright (C) 2022-2023 Massimo Pennazio <maxipenna@libero.it>
* Copyright (C) 2023 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2023-2024 Filipe Coelho <falktx@falktx.com>
* SPDX-License-Identifier: GPL-3.0-or-later
*/

#include "plugincontext.hpp"
#include "plugin.hpp"
#include "ModuleWidgets.hpp"

#ifndef HEADLESS
@@ -250,7 +250,6 @@ struct AidaPluginModule : Module {
NUM_LIGHTS
};

CardinalPluginContext* const pcontext;
bool fileChanged = false;
std::string currentFile;

@@ -272,7 +271,6 @@ struct AidaPluginModule : Module {
#endif

AidaPluginModule()
: pcontext(static_cast<CardinalPluginContext*>(APP))
{
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);

@@ -656,8 +654,6 @@ struct AidaPluginModule : Module {
cachedParams[kParameterPRESENCE]);
}
#endif

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AidaPluginModule)
};

// --------------------------------------------------------------------------------------------------------------------
@@ -1093,8 +1089,6 @@ struct AidaWidget : ModuleWidgetWithSideScrews<23> {

menu->addChild(new LoadModelFileItem(module));
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AidaWidget)
};
#else
struct AidaWidget : ModuleWidget {


+ 3
- 5
plugins/Cardinal/src/AudioFile.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,6 +15,7 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "extra/Runner.hpp"
@@ -39,6 +40,7 @@ const NativePluginDescriptor* carla_getNativePluginDescriptor(const std::size_t
// --------------------------------------------------------------------------------------------------------------------

using namespace CARLA_BACKEND_NAMESPACE;
using namespace DISTRHO_NAMESPACE;

static uint32_t host_get_buffer_size(NativeHostHandle);
static double host_get_sample_rate(NativeHostHandle);
@@ -335,8 +337,6 @@ struct CarlaInternalPluginModule : Module, Runner {
0, 0, nullptr, e.sampleRate);
fCarlaPluginDescriptor->activate(fCarlaPluginHandle);
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaInternalPluginModule)
};

// -----------------------------------------------------------------------------------------------------------
@@ -679,8 +679,6 @@ struct AudioFileWidget : ModuleWidgetWithSideScrews<23> {

menu->addChild(new LoadAudioFileItem(module));
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AudioFileWidget)
};
#else
struct AudioFileWidget : ModuleWidget {


+ 2
- 4
plugins/Cardinal/src/AudioToCVPitch.cpp View File

@@ -1,7 +1,7 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Bram Giesen
* Copyright (C) 2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2022-2024 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
@@ -16,7 +16,7 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugincontext.hpp"
#include "plugin.hpp"
#include "ModuleWidgets.hpp"
#include "Widgets.hpp"

@@ -24,8 +24,6 @@ extern "C" {
#include "aubio.h"
}

USE_NAMESPACE_DISTRHO;

// --------------------------------------------------------------------------------------------------------------------

// aubio setup values (tested under 48 kHz sample rate)


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

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,6 +15,7 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "Expander.hpp"
#include "ModuleWidgets.hpp"
@@ -427,8 +428,6 @@ struct CarlaModule : Module {
0, 0, nullptr, e.sampleRate);
fCarlaPluginDescriptor->activate(fCarlaPluginHandle);
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaModule)
};

static_assert((int)CarlaModule::NUM_INPUTS == (int)CarlaModule::NUM_OUTPUTS, "inputs must match outputs");
@@ -715,8 +714,6 @@ struct CarlaModuleWidget : ModuleWidgetWith9HP, IdleCallback {
e.consume(this);
showUI();
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaModuleWidget)
};

static void host_ui_closed(NativeHostHandle handle)


+ 3
- 1
plugins/Cardinal/src/HostAudio.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,9 +15,11 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "Widgets.hpp"
#include "engine/TerminalModule.hpp"

// -----------------------------------------------------------------------------------------------------------



+ 3
- 1
plugins/Cardinal/src/HostCV.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,8 +15,10 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "engine/TerminalModule.hpp"

// -----------------------------------------------------------------------------------------------------------



+ 3
- 1
plugins/Cardinal/src/HostMIDI-CC.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -25,9 +25,11 @@
* the License, or (at your option) any later version.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "Widgets.hpp"
#include "engine/TerminalModule.hpp"

#include <algorithm>



+ 3
- 1
plugins/Cardinal/src/HostMIDI-Gate.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -25,9 +25,11 @@
* the License, or (at your option) any later version.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "Widgets.hpp"
#include "engine/TerminalModule.hpp"

#include <algorithm>



+ 3
- 1
plugins/Cardinal/src/HostMIDI-Map.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -25,9 +25,11 @@
* the License, or (at your option) any later version.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "Widgets.hpp"
#include "engine/TerminalModule.hpp"

#include <algorithm>



+ 3
- 1
plugins/Cardinal/src/HostMIDI.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -25,7 +25,9 @@
* the License, or (at your option) any later version.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "engine/TerminalModule.hpp"
#include "ModuleWidgets.hpp"

#include <algorithm>


+ 3
- 1
plugins/Cardinal/src/HostParameters-Map.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -25,9 +25,11 @@
* the License, or (at your option) any later version.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "Widgets.hpp"
#include "engine/TerminalModule.hpp"

// -----------------------------------------------------------------------------------------------------------



+ 3
- 1
plugins/Cardinal/src/HostParameters.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,8 +15,10 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "engine/TerminalModule.hpp"

// -----------------------------------------------------------------------------------------------------------



+ 3
- 1
plugins/Cardinal/src/HostTime.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,8 +15,10 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "ModuleWidgets.hpp"
#include "engine/TerminalModule.hpp"

// --------------------------------------------------------------------------------------------------------------------



+ 3
- 7
plugins/Cardinal/src/Ildaeil.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -25,6 +25,7 @@
* the License, or (at your option) any later version.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#include "Expander.hpp"

@@ -98,6 +99,7 @@ namespace ildaeil {
// --------------------------------------------------------------------------------------------------------------------

using namespace CARLA_BACKEND_NAMESPACE;
using namespace DISTRHO_NAMESPACE;

static uint32_t host_get_buffer_size(NativeHostHandle);
static double host_get_sample_rate(NativeHostHandle);
@@ -768,8 +770,6 @@ struct IldaeilModule : Module {
0, 0, nullptr, e.sampleRate);
fCarlaPluginDescriptor->activate(fCarlaPluginHandle);
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(IldaeilModule)
};

// -----------------------------------------------------------------------------------------------------------
@@ -2252,8 +2252,6 @@ struct IldaeilWidget : ImGuiWidget, IdleCallback, Runner {

ImGui::End();
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(IldaeilWidget)
};

// --------------------------------------------------------------------------------------------------------------------
@@ -2435,8 +2433,6 @@ struct IldaeilModuleWidget : ModuleWidgetWithSideScrews<26> {

ModuleWidgetWithSideScrews<26>::step();
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(IldaeilModuleWidget)
};
#else
static void host_ui_parameter_changed(NativeHostHandle, uint32_t, float) {}


+ 4
- 1
plugins/Cardinal/src/MPV.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,12 +15,15 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugin.hpp"
#include "plugincontext.hpp"
#ifndef HEADLESS
# include "EmbedWidget.hpp"
# include "extra/ExternalWindow.hpp"
#endif

USE_NAMESPACE_DISTRHO;

// --------------------------------------------------------------------------------------------------------------------

struct CardinalEmbedModule : Module {


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

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,7 +15,7 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugincontext.hpp"
#include "plugin.hpp"
#include "ImGuiWidget.hpp"
#include "sassy/sassy.hpp"
#include "sassy/sassy_scope.cpp"


+ 2
- 4
plugins/Cardinal/src/TextEditor.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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,7 +15,7 @@
* For a full copy of the GNU General Public License see the LICENSE file.
*/

#include "plugincontext.hpp"
#include "plugin.hpp"

#ifndef HEADLESS
# include "ImGuiTextEditor.hpp"
@@ -412,8 +412,6 @@ struct TextEditorModuleWidget : ModuleWidget {
menu->addChild(new ui::MenuSeparator);
menu->addChild(createMenuItem("Select all", RACK_MOD_CTRL_NAME "+A", [=]{ textEditorWidget->selectAll(); }));
}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(TextEditorModuleWidget)
};
#else
struct TextEditorModuleWidget : ModuleWidget {


+ 3
- 6
plugins/Cardinal/src/plugin.hpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -18,11 +18,8 @@
#pragma once

#include "rack.hpp"
#include "engine/TerminalModule.hpp"

#ifdef NDEBUG
# undef DEBUG
#endif
// #include "engine/TerminalModule.hpp"
// #include "plugincontext.hpp"

using namespace rack;



+ 1
- 0
plugins/Computerscare

@@ -0,0 +1 @@
Subproject commit 5baab047242088e45c99c9999b6e2d9082981ef1

+ 65
- 1
plugins/Makefile View File

@@ -572,6 +572,15 @@ PLUGIN_FILES += BidooDark/plugin.cpp
BIDOO_CUSTOM = ChannelDisplay InstantiateExpanderItem LadderFilter PitchShifter $(DRWAV)
BIDOO_CUSTOM_PER_FILE = channel channel filterType

# --------------------------------------------------------------
# Biset

PLUGIN_FILES += $(filter-out Biset/src/plugin.cpp,$(wildcard Biset/src/*.cpp))
PLUGIN_FILES += $(wildcard Biset/src/*/*.cpp)

# modules/types which are present in other plugins
BISET_CUSTOM = Blank ButtonTrigger Clock Tree TreeDisplay

# --------------------------------------------------------------
# BogaudioModules

@@ -645,6 +654,14 @@ PLUGIN_FILES += $(filter-out cf/src/plugin.cpp,$(wildcard cf/src/*.cpp))
# modules/types which are present in other plugins
CF_CUSTOM = $(DRWAV)

# --------------------------------------------------------------
# Computerscare

PLUGIN_FILES += $(filter-out Computerscare/src/Computerscare.cpp Computerscare/src/test.cpp,$(wildcard Computerscare/src/*.cpp))

# modules/types which are present in other plugins
COMPUTERSCARE_CUSTOM = Quantizer PanelBorder

# --------------------------------------------------------------
# CVfunk

@@ -1003,6 +1020,23 @@ PLUGIN_FILES += $(filter-out Sapphire/src/plugin.cpp,$(wildcard Sapphire/src/*.c

PLUGIN_FILES += $(filter-out sonusmodular/src/sonusmodular.cpp,$(wildcard sonusmodular/src/*.cpp))

# --------------------------------------------------------------
# Starling Via

PLUGIN_FILES += $(wildcard StarlingVia/src/*.cpp)
PLUGIN_FILES += $(wildcard StarlingVia/Via/io/src/*.cpp)
PLUGIN_FILES += $(wildcard StarlingVia/Via/ui/src/*.cpp)
PLUGIN_FILES += $(wildcard StarlingVia/Via/modules/*/*.cpp)
PLUGIN_BINARIES += StarlingVia/res/original.gateseq
PLUGIN_BINARIES += StarlingVia/res/original.meta
PLUGIN_BINARIES += StarlingVia/res/original.osc3
PLUGIN_BINARIES += StarlingVia/res/original.scanner
PLUGIN_BINARIES += StarlingVia/res/original.sync
PLUGIN_BINARIES += StarlingVia/res/original.sync3

# modules/types which are present in other plugins
STARLINGVIA_CUSTOM = Scanner Scale Wavetable

# --------------------------------------------------------------
# stocaudio

@@ -1284,6 +1318,7 @@ BUILD_DIR = ../build/plugins
endif

BASE_FLAGS += -DBUILDING_PLUGIN_MODULES
BASE_FLAGS += -DDONT_SET_USING_DISTRHO_NAMESPACE
BASE_FLAGS += -I$(abspath $(ROOT)/include/osdialog-stub)

ifeq ($(BSD)$(WASM),true)
@@ -1402,11 +1437,11 @@ RESOURCE_FILES += Befaco/res/SpringReverbIR.f32
RESOURCE_FILES += cf/playeroscs
RESOURCE_FILES += DHE-Modules/svg
RESOURCE_FILES += DrumKit/res/samples
RESOURCE_FILES += Meander/res
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityPresets
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/CommunityShapes
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/MindMeldPresets
RESOURCE_FILES += MindMeldModular/res/ShapeMaster/MindMeldShapes
RESOURCE_FILES += Meander/res
RESOURCE_FILES += Mog/res
RESOURCE_FILES += nonlinearcircuits/res
RESOURCE_FILES += ParableInstruments/res/Neil.png
@@ -2168,6 +2203,13 @@ $(BUILD_DIR)/Bidoo%.cpp.o: Bidoo%.cpp
-Wno-sign-compare \
-Wno-unused-function

$(BUILD_DIR)/Biset/src/%.cpp.o: Biset/src/%.cpp
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
@echo "Compiling $<"
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \
$(foreach m,$(BISET_CUSTOM),$(call custom_module_names,$(m),Biset)) \
-DpluginInstance=pluginInstance__Biset

$(BUILD_DIR)/BogaudioModules/src/follower_base.cpp.o: BogaudioModules/src/follower_base.cpp
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
@echo "Compiling $<"
@@ -2207,6 +2249,13 @@ $(BUILD_DIR)/cf/src/%.cpp.o: cf/src/%.cpp
-DpluginInstance=pluginInstance__cf \
-Wno-misleading-indentation

$(BUILD_DIR)/Computerscare/src/%.cpp.o: Computerscare/src/%.cpp
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
@echo "Compiling $<"
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \
$(foreach m,$(COMPUTERSCARE_CUSTOM),$(call custom_module_names,$(m),Computerscare)) \
-DpluginInstance=pluginInstance__Computerscare

$(BUILD_DIR)/CVfunk/src/%.cpp.o: CVfunk/src/%.cpp
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
@echo "Compiling $<"
@@ -2630,6 +2679,21 @@ $(BUILD_DIR)/sonusmodular/%.cpp.o: sonusmodular/%.cpp
$(foreach m,$(SONUSMODULAR_CUSTOM),$(call custom_module_names,$(m),sonusmodular)) \
-DpluginInstance=pluginInstance__sonusmodular

$(BUILD_DIR)/StarlingVia/%.cpp.o: StarlingVia/%.cpp
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
@echo "Compiling $<"
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ \
$(foreach m,$(STARLINGVIA_CUSTOM),$(call custom_module_names,$(m),StarlingVia)) \
-DpluginInstance=pluginInstance__StarlingVia \
-DBUILD_VIRTUAL \
-IStarlingVia/dep/starling-dsp \
-IStarlingVia/Via/modules/inc \
-IStarlingVia/Via/synthesis/inc \
-IStarlingVia/Via/io/inc \
-IStarlingVia/Via/ui/inc \
-IStarlingVia/src/dep/starling-dsp \
-IStarlingVia/src/dep/starling-rack-ui

$(BUILD_DIR)/stoermelder-packone/%.cpp.o: stoermelder-packone/%.cpp
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
@echo "Compiling $<"


+ 1
- 1
plugins/MindMeldModular

@@ -1 +1 @@
Subproject commit 18f4fa89ca08e9943e38548440d3e02e1ee2e170
Subproject commit 8136f0c941b41c57af70a5ebb5839f0086518b2b

+ 1
- 1
plugins/Sapphire

@@ -1 +1 @@
Subproject commit 4bf2ad39eeaddcbfcc5cd345aef8c0c4cc722b73
Subproject commit d26e157140ef6283906a33675733ea35e4dd26ac

+ 1
- 0
plugins/StarlingVia

@@ -0,0 +1 @@
Subproject commit a6b75fddc2df624ba64dab70c2e35b8e48ad8c1d

+ 1
- 1
plugins/dBiz

@@ -1 +1 @@
Subproject commit 88f1bd64cff6e96a1a48566a1692de86b9a7de2a
Subproject commit d6933abe016eeb97c9fb0b0f955af756401403c1

+ 139
- 0
plugins/plugins.cpp View File

@@ -146,6 +146,35 @@ extern Model* modelChord;
// Bidoo
#include "Bidoo/src/plugin.hpp"

// Biset
/* NOTE too much noise in original include, do this a different way
// #include "Biset/src/plugin.hpp"
*/
#define modelBlank modelBisetBlank
#define modelTree modelBisetTree
extern Model* modelTracker;
extern Model* modelTrackerSynth;
extern Model* modelTrackerDrum;
extern Model* modelTrackerClock;
extern Model* modelTrackerPhase;
extern Model* modelTrackerQuant;
extern Model* modelTrackerState;
extern Model* modelTrackerControl;
extern Model* modelRegex;
extern Model* modelRegexCondensed;
extern Model* modelRegexExp;
extern Model* modelTree;
extern Model* modelTreeSeed;
extern Model* modelGbu;
extern Model* modelPkm;
extern Model* modelIgc;
extern Model* modelOmega3;
extern Model* modelOmega6;
extern Model* modelSegfault;
extern Model* modelBlank;
#undef modelBlank
#undef modelTree

// BogaudioModules - integrate theme/skin support
#include <mutex>
#include <string>
@@ -311,6 +340,9 @@ extern Model* modelTestVCF;
#include "ChowDSP/src/plugin.cpp"
#undef init

// Computerscare
#include "Computerscare/src/Computerscare.hpp"

// dBiz
#define DarkDefaultItem dBizDarkDefaultItem
#define OrangeLight dBizOrangeLight
@@ -779,6 +811,16 @@ void addThemeMenuItems(Menu*, ModuleTheme*) {}
// sonusmodular
#include "sonusmodular/src/sonusmodular.hpp"


// Starling Via
#define modelScanner modelStarlingViaScanner
#define Scale starlingViaScale
#define Wavetable starlingViaWavetable
#include "StarlingVia/src/starling.hpp"
#undef modelScanner
#undef Scale
#undef Wavetable

// stocaudio
#include "stocaudio/src/plugin.hpp"

@@ -862,10 +904,12 @@ Plugin* pluginInstance__Axioma;
Plugin* pluginInstance__Bacon;
Plugin* pluginInstance__Befaco;
Plugin* pluginInstance__Bidoo;
Plugin* pluginInstance__Biset;
Plugin* pluginInstance__BogaudioModules;
Plugin* pluginInstance__CatroModulo;
Plugin* pluginInstance__cf;
Plugin* pluginInstance__ChowDSP;
Plugin* pluginInstance__Computerscare;
Plugin* pluginInstance__CVfunk;
Plugin* pluginInstance__dBiz;
Plugin* pluginInstance__DHE;
@@ -910,6 +954,7 @@ Plugin* pluginInstance__RebelTech;
Plugin* pluginInstance__repelzen;
Plugin* pluginInstance__sapphire;
Plugin* pluginInstance__sonusmodular;
extern Plugin* pluginInstance__StarlingVia;
Plugin* pluginInstance__stocaudio;
extern Plugin* pluginInstance__stoermelder_p1;
Plugin* pluginInstance__surgext;
@@ -1598,6 +1643,46 @@ static void initStatic__Bidoo()
}
}

static void initStatic__Biset()
{
Plugin* const p = new Plugin;
pluginInstance__Biset = p;

const StaticPluginLoader spl(p, "Biset");
if (spl.ok())
{
#define modelBlank modelBisetBlank
#define modelTree modelBisetTree
p->addModel(modelTracker);
p->addModel(modelTrackerSynth);
p->addModel(modelTrackerDrum);
p->addModel(modelTrackerClock);
p->addModel(modelTrackerPhase);
p->addModel(modelTrackerQuant);
p->addModel(modelTrackerState);
p->addModel(modelTrackerControl);

p->addModel(modelRegex);
p->addModel(modelRegexCondensed);
p->addModel(modelRegexExp);

p->addModel(modelTree);
p->addModel(modelTreeSeed);

p->addModel(modelGbu);
p->addModel(modelPkm);

p->addModel(modelIgc);
p->addModel(modelOmega3);
p->addModel(modelOmega6);

p->addModel(modelSegfault);
p->addModel(modelBlank);
#undef modelBlank
#undef modelTree
}
}

static void initStatic__BogaudioModules()
{
Plugin* const p = new Plugin;
@@ -1833,6 +1918,34 @@ static void initStatic__ChowDSP()
}
}

static void initStatic__Computerscare()
{
Plugin* const p = new Plugin;
pluginInstance__Computerscare = p;

const StaticPluginLoader spl(p, "Computerscare");
if (spl.ok())
{
p->addModel(modelComputerscarePatchSequencer);
p->addModel(modelComputerscareDebug);
p->addModel(modelComputerscareLaundrySoup);
p->addModel(modelComputerscareILoveCookies);
p->addModel(modelComputerscareOhPeas);
p->addModel(modelComputerscareHorseADoodleDoo);
p->addModel(modelComputerscareKnolyPobs);
p->addModel(modelComputerscareBolyPuttons);
p->addModel(modelComputerscareRolyPouter);
p->addModel(modelComputerscareSolyPequencer);
p->addModel(modelComputerscareTolyPools);
p->addModel(modelComputerscareMolyPatrix);
p->addModel(modelComputerscareGolyPenerator);
p->addModel(modelComputerscareFolyPace);
p->addModel(modelComputerscareStolyFickPigure);
p->addModel(modelComputerscareBlank);
p->addModel(modelComputerscareBlankExpander);
}
}

static void initStatic__CVfunk()
{
Plugin* const p = new Plugin;
@@ -2956,6 +3069,29 @@ static void initStatic__sonusmodular()
}
}


static void initStatic__StarlingVia()
{
Plugin* const p = new Plugin;
pluginInstance__StarlingVia = p;

const StaticPluginLoader spl(p, "StarlingVia");
if (spl.ok())
{
#define modelScanner modelStarlingViaScanner
p->addModel(modelMeta);
p->addModel(modelGateseq);
p->addModel(modelScanner);
p->addModel(modelSync);
p->addModel(modelAtsr);
p->addModel(modelOsc3);
p->addModel(modelSync3);
p->addModel(modelSync3XL);
p->addModel(modelSync3XLLevels);
#undef modelScanner
}
}

static void initStatic__stocaudio()
{
Plugin* const p = new Plugin;
@@ -3249,10 +3385,12 @@ void initStaticPlugins()
initStatic__Bacon();
initStatic__Befaco();
initStatic__Bidoo();
initStatic__Biset();
initStatic__BogaudioModules();
initStatic__CatroModulo();
initStatic__cf();
initStatic__ChowDSP();
initStatic__Computerscare();
initStatic__CVfunk();
initStatic__dBiz();
initStatic__DHE();
@@ -3297,6 +3435,7 @@ void initStaticPlugins()
initStatic__repelzen();
initStatic__Sapphire();
initStatic__sonusmodular();
initStatic__StarlingVia();
initStatic__stocaudio();
initStatic__stoermelder_p1();
initStatic__surgext();


+ 129
- 4
src/CardinalCommon.cpp View File

@@ -17,7 +17,7 @@
#include "CardinalCommon.hpp"

#include "AsyncDialog.hpp"
#include "PluginContext.hpp"
#include "CardinalPluginContext.hpp"
#include "DistrhoPluginUtils.hpp"

#include <asset.hpp>
@@ -99,9 +99,7 @@ void destroyStaticPlugins();
}
}

const std::string CARDINAL_VERSION = "24.03";

START_NAMESPACE_DISTRHO
const std::string CARDINAL_VERSION = "24.04";

// -----------------------------------------------------------------------------------------------------------

@@ -126,6 +124,53 @@ void handleHostParameterDrag(const CardinalPluginContext* pcontext, uint index,

// --------------------------------------------------------------------------------------------------------------------

CardinalPluginContext::CardinalPluginContext(Plugin* const p)
: bufferSize(p != nullptr ? p->getBufferSize() : 0),
processCounter(0),
sampleRate(p != nullptr ? p->getSampleRate() : 0.0),
#if CARDINAL_VARIANT_MAIN
variant(kCardinalVariantMain),
#elif CARDINAL_VARIANT_MINI
variant(kCardinalVariantMini),
#elif CARDINAL_VARIANT_FX
variant(kCardinalVariantFX),
#elif CARDINAL_VARIANT_NATIVE
variant(kCardinalVariantNative),
#elif CARDINAL_VARIANT_SYNTH
variant(kCardinalVariantSynth),
#else
#error cardinal variant not set
#endif
bypassed(false),
playing(false),
reset(false),
bbtValid(false),
bar(1),
beat(1),
beatsPerBar(4),
beatType(4),
frame(0),
barStartTick(0.0),
beatsPerMinute(120.0),
tick(0.0),
tickClock(0.0),
ticksPerBeat(0.0),
ticksPerClock(0.0),
ticksPerFrame(0.0),
nativeWindowId(0),
dataIns(nullptr),
dataOuts(nullptr),
midiEvents(nullptr),
midiEventCount(0),
plugin(p)
#ifndef HEADLESS
, tlw(nullptr)
, ui(nullptr)
#endif
{
std::memset(parameters, 0, sizeof(parameters));
}

#ifndef HEADLESS
bool CardinalPluginContext::addIdleCallback(IdleCallback* const cb) const
{
@@ -224,6 +269,86 @@ void CardinalPluginContext::writeMidiMessage(const rack::midi::Message& message,

// -----------------------------------------------------------------------------------------------------------

namespace rack {
namespace midi {

struct InputQueue::Internal {
CardinalPluginContext* const pcontext = static_cast<CardinalPluginContext*>(APP);
const CardinalDISTRHO::MidiEvent* midiEvents = nullptr;
uint32_t midiEventsLeft = 0;
uint32_t lastProcessCounter = 0;
int64_t lastBlockFrame = 0;
};

InputQueue::InputQueue() {
internal = new Internal;
}

InputQueue::~InputQueue() {
delete internal;
}

bool InputQueue::tryPop(Message* const messageOut, int64_t maxFrame)
{
const uint32_t processCounter = internal->pcontext->processCounter;
const bool processCounterChanged = internal->lastProcessCounter != processCounter;

if (processCounterChanged)
{
internal->lastBlockFrame = internal->pcontext->engine->getBlockFrame();
internal->lastProcessCounter = processCounter;

internal->midiEvents = internal->pcontext->midiEvents;
internal->midiEventsLeft = internal->pcontext->midiEventCount;
}

if (internal->midiEventsLeft == 0 || maxFrame < internal->lastBlockFrame)
return false;

const uint32_t frame = maxFrame - internal->lastBlockFrame;

if (frame > internal->midiEvents->frame)
return false;

const CardinalDISTRHO::MidiEvent& midiEvent(*internal->midiEvents);

const uint8_t* data;
if (midiEvent.size > CardinalDISTRHO::MidiEvent::kDataSize)
{
data = midiEvent.dataExt;
messageOut->bytes.resize(midiEvent.size);
}
else
{
data = midiEvent.data;
}

messageOut->frame = frame;
std::memcpy(messageOut->bytes.data(), data, midiEvent.size);

++internal->midiEvents;
--internal->midiEventsLeft;
return true;
}

json_t* InputQueue::toJson() const
{
return nullptr;
}

void InputQueue::fromJson(json_t* rootJ)
{
}

}
}

// -----------------------------------------------------------------------------------------------------------

START_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------------------------------------------

#ifdef HAVE_LIBLO
static void osc_error_handler(int num, const char* msg, const char* path)
{


+ 2
- 1
src/CardinalCommon.hpp View File

@@ -12,6 +12,8 @@

extern const std::string CARDINAL_VERSION;

struct CardinalPluginContext;

// -----------------------------------------------------------------------------------------------------------

namespace rack {
@@ -84,7 +86,6 @@ START_NAMESPACE_DISTRHO

class CardinalBasePlugin;
class CardinalBaseUI;
struct CardinalPluginContext;

struct Initializer
{


+ 2
- 2
src/CardinalPlugin.cpp View File

@@ -32,7 +32,7 @@
#include "CardinalCommon.hpp"
#include "DistrhoPluginUtils.hpp"
#include "PluginContext.hpp"
#include "CardinalPluginContext.hpp"
#include "extra/Base64.hpp"
#include "extra/ScopedDenormalDisable.hpp"
#include "extra/ScopedSafeLocale.hpp"
@@ -406,7 +406,7 @@ protected:
uint32_t getVersion() const override
{
return d_version(0, 24, 3);
return d_version(0, 24, 4);
}
int64_t getUniqueId() const override


src/PluginContext.hpp → src/CardinalPluginContext.hpp View File

@@ -36,29 +36,14 @@

#ifndef HEADLESS
# include "DistrhoUI.hpp"
#else
# include "Base.hpp"
START_NAMESPACE_DGL
class TopLevelWidget;
template <class BaseWidget> class NanoBaseWidget;
typedef NanoBaseWidget<TopLevelWidget> NanoTopLevelWidget;
END_NAMESPACE_DGL
#endif

#include "plugincontext.hpp"

START_NAMESPACE_DISTRHO

// -----------------------------------------------------------------------------------------------------------

static constexpr const uint kModuleParameterCount = 24;

enum CardinalVariant {
kCardinalVariantMain,
kCardinalVariantMini,
kCardinalVariantFX,
kCardinalVariantNative,
kCardinalVariantSynth,
};

enum CardinalParameters {
kCardinalParameterCountAtModules = kModuleParameterCount,
kCardinalParameterBypass = kCardinalParameterCountAtModules,
@@ -126,82 +111,6 @@ static_assert(kCardinalParameterCountAtWindow == kModuleParameterCount + kWindow
static_assert(DISTRHO_PLUGIN_NUM_INPUTS == kCardinalParameterCountAtMiniBuffers - kCardinalParameterStartMiniBuffers, "valid parameter indexes");
#endif

class UI;

// -----------------------------------------------------------------------------------------------------------

struct CardinalPluginContext : rack::Context {
uint32_t bufferSize, processCounter;
double sampleRate;
float parameters[kModuleParameterCount];
CardinalVariant variant;
bool bypassed, playing, reset, bbtValid;
int32_t bar, beat, beatsPerBar, beatType;
uint64_t frame;
double barStartTick, beatsPerMinute;
double tick, tickClock, ticksPerBeat, ticksPerClock, ticksPerFrame;
uintptr_t nativeWindowId;
const float* const* dataIns;
float** dataOuts;
const MidiEvent* midiEvents;
uint32_t midiEventCount;
Plugin* const plugin;
NanoTopLevelWidget* tlw;
UI* ui;

CardinalPluginContext(Plugin* const p)
: bufferSize(p != nullptr ? p->getBufferSize() : 0),
processCounter(0),
sampleRate(p != nullptr ? p->getSampleRate() : 0.0),
#if CARDINAL_VARIANT_MAIN
variant(kCardinalVariantMain),
#elif CARDINAL_VARIANT_MINI
variant(kCardinalVariantMini),
#elif CARDINAL_VARIANT_FX
variant(kCardinalVariantFX),
#elif CARDINAL_VARIANT_NATIVE
variant(kCardinalVariantNative),
#elif CARDINAL_VARIANT_SYNTH
variant(kCardinalVariantSynth),
#else
#error cardinal variant not set
#endif
bypassed(false),
playing(false),
reset(false),
bbtValid(false),
bar(1),
beat(1),
beatsPerBar(4),
beatType(4),
frame(0),
barStartTick(0.0),
beatsPerMinute(120.0),
tick(0.0),
tickClock(0.0),
ticksPerBeat(0.0),
ticksPerClock(0.0),
ticksPerFrame(0.0),
nativeWindowId(0),
dataIns(nullptr),
dataOuts(nullptr),
midiEvents(nullptr),
midiEventCount(0),
plugin(p),
tlw(nullptr),
ui(nullptr)
{
std::memset(parameters, 0, sizeof(parameters));
}

void writeMidiMessage(const rack::midi::Message& message, uint8_t channel);

#ifndef HEADLESS
bool addIdleCallback(IdleCallback* cb) const;
void removeIdleCallback(IdleCallback* cb) const;
#endif
};

// -----------------------------------------------------------------------------------------------------------

#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS

+ 2
- 2
src/CardinalRemote.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -24,7 +24,7 @@
#endif

#include "CardinalRemote.hpp"
#include "PluginContext.hpp"
#include "CardinalPluginContext.hpp"
#include "extra/Base64.hpp"
#include "extra/ScopedSafeLocale.hpp"



+ 2
- 2
src/CardinalRemote/RemoteUI.hpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -18,7 +18,7 @@
#pragma once

#include "NanoVG.hpp"
#include "PluginContext.hpp"
#include "CardinalPluginContext.hpp"
#include "WindowParameters.hpp"

#include <widget/Widget.hpp>


+ 2
- 2
src/CardinalRemote/main.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -30,7 +30,7 @@
#include <engine/Engine.hpp>
#include <ui/common.hpp>

#include "PluginContext.hpp"
#include "CardinalPluginContext.hpp"
#include "extra/ScopedValueSetter.hpp"

#define CARDINAL_TEMPLATE_NAME "init/main.vcv"


+ 3
- 3
src/CardinalUI.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -49,7 +49,7 @@
#include "Application.hpp"
#include "AsyncDialog.hpp"
#include "CardinalCommon.hpp"
#include "PluginContext.hpp"
#include "CardinalPluginContext.hpp"
#include "WindowParameters.hpp"
#include "extra/Base64.hpp"

@@ -1081,7 +1081,7 @@ protected:
int key;
switch (ev.key)
{
case '\t': key = GLFW_KEY_TAB; break;
case kKeyTab: key = GLFW_KEY_TAB; break;
case kKeyBackspace: key = GLFW_KEY_BACKSPACE; break;
case kKeyEnter: key = GLFW_KEY_ENTER; break;
case kKeyEscape: key = GLFW_KEY_ESCAPE; break;


+ 1
- 0
src/Makefile.cardinal.mk View File

@@ -316,6 +316,7 @@ SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/chopin
SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/debussy
SYMLINKED_DIRS_RESOURCES += BaconPlugs/res/midi/goldberg
SYMLINKED_DIRS_RESOURCES += cf/playeroscs
SYMLINKED_DIRS_RESOURCES += DHE-Modules/svg
SYMLINKED_DIRS_RESOURCES += DrumKit/res/samples
SYMLINKED_DIRS_RESOURCES += GrandeModular/presets
SYMLINKED_DIRS_RESOURCES += LyraeModules/presets


+ 36
- 0
src/custom/dep.cpp View File

@@ -62,6 +62,7 @@ enum DarkMode {
kModeAudibleInstruments,
kModeBidoo,
kModeCf,
kModeComputerscare,
kModeDHE,
kModeDrumKit,
kModeESeries,
@@ -214,6 +215,29 @@ static const struct {
{ kModeCf, "/cf/res/SUB.svg", {}, -1 },
{ kModeCf, "/cf/res/trSEQ.svg", {}, -1 },
{ kModeCf, "/cf/res/VARIABLE.svg", {}, -1 },
// BSD-3 Clause
{ kModeComputerscare, "/Computerscare/res/computerscare-clk-text.svg", {}, -1},
{ kModeComputerscare, "/Computerscare/res/vertical-x-1.svg", {}, -1},
{ kModeComputerscare, "/Computerscare/res/vertical-x-2.svg", {}, -1},
{ kModeComputerscare, "/Computerscare/res/vertical-x-3.svg", {}, -1},
{ kModeComputerscare, "/Computerscare/res/computerscare-logo-normal.svg", {}, -1},
{ kModeComputerscare, "/Computerscare/res/computerscare-logo-sad.svg", {}, -1},
{ kModeComputerscare, "/Computerscare/res/ComputerscareDebugPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareOhPeasPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareFolyPacePanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareKnolyPobsPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareTolyPoolsPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareMolyPatrixPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareRolyPouterPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareBolyPuttonsPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareCustomBlankPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareLaundrySoupPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareILoveCookiesPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareGolyPeneratorPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareSolyPequencerPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscarePatchSequencerPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareHorseADoodleDooPanel.svg", {}, -1 },
{ kModeComputerscare, "/Computerscare/res/ComputerscareCustomBlankExpanderPanel.svg", {}, -1 },
// MIT
{ kModeDHE, "/DHE-Modules/svg/blossom.svg", {}, -1 },
{ kModeDHE, "/DHE-Modules/svg/booster-stage.svg", {}, -1 },
@@ -362,6 +386,7 @@ enum LightMode {
kModeAutinn,
kModeBefaco,
kModeCardinal,
kModeComputerscareLight,
kModeExtratone,
kModeFehlerFabrik,
kModeForsitan,
@@ -450,6 +475,8 @@ static const struct {
{ kModeCardinal, "/Cardinal/res/HostParamsMap.svg" },
{ kModeCardinal, "/Cardinal/res/HostTime.svg" },
{ kModeCardinal, "/Cardinal/res/Ildaeil.svg" },
// BSD-3 Clause
{ kModeComputerscareLight, "/Computerscare/res/ComputerscareStolyFickPigurePanel.svg" },
// GPLv3+
{ kModeExtratone, "/Extratone/res/Darwinism.svg" },
// { kModeExtratone, "/Extratone/res/HalluciMemory.svg" },
@@ -664,6 +691,15 @@ bool invertPaintForDarkMode(const DarkMode mode, NSVGshape* const shape, NSVGpai
}
}
break;
// Special case for Computerscare
case kModeComputerscare:
switch (paint.color)
{
// Just make vertical-x-* visible
case 0xffa6c924:
return false;
}
break;
// Special case for DHE, mark things darker instead of inverting
case kModeDHE:
paint.color = darkerColor(paint.color);


+ 2
- 2
src/custom/glfw.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -16,7 +16,7 @@
*/

#include "Application.hpp"
#include "PluginContext.hpp"
#include "CardinalPluginContext.hpp"

#include <GLFW/glfw3.h>



+ 3
- 5
src/override/MenuBar.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -53,7 +53,7 @@

#include "../CardinalCommon.hpp"
#include "../CardinalRemote.hpp"
#include "../PluginContext.hpp"
#include "../CardinalPluginContext.hpp"
#include "DistrhoPlugin.hpp"
#include "DistrhoStandaloneUtils.hpp"

@@ -605,10 +605,8 @@ static void setAllFramebufferWidgetsDirty(widget::Widget* const widget)
for (widget::Widget* child : widget->children)
{
if (widget::FramebufferWidget* const fbw = dynamic_cast<widget::FramebufferWidget*>(child))
{
fbw->setDirty();
break;
}

setAllFramebufferWidgetsDirty(child);
}
}


+ 2
- 2
src/override/Window.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2023 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2021-2024 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
@@ -46,7 +46,7 @@
#include "Application.hpp"
#include "extra/String.hpp"
#include "../CardinalCommon.hpp"
#include "../PluginContext.hpp"
#include "../CardinalPluginContext.hpp"
#include "../WindowParameters.hpp"

#ifndef DGL_NO_SHARED_RESOURCES


+ 1
- 1
utils/macOS/Info_JACK.plist View File

@@ -11,7 +11,7 @@
<key>CFBundleIdentifier</key>
<string>studio.kx.distrho.cardinal.jack</string>
<key>CFBundleShortVersionString</key>
<string>23.03</string>
<string>23.04</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>NSHumanReadableCopyright</key>


+ 1
- 1
utils/macOS/Info_Native.plist View File

@@ -11,7 +11,7 @@
<key>CFBundleIdentifier</key>
<string>studio.kx.distrho.cardinal.native</string>
<key>CFBundleShortVersionString</key>
<string>24.03</string>
<string>24.04</string>
<key>LSMinimumSystemVersion</key>
<string>10.15</string>
<key>NSHumanReadableCopyright</key>


Loading…
Cancel
Save