1098 lines
32 KiB
C++
1098 lines
32 KiB
C++
/*
|
|
* DISTRHO Cardinal Plugin
|
|
* Copyright (C) 2021 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.
|
|
*/
|
|
|
|
#include <plugin.hpp>
|
|
|
|
#include "DistrhoUtils.hpp"
|
|
|
|
// Cardinal (built-in)
|
|
#include "Cardinal/src/plugin.hpp"
|
|
|
|
#ifndef NOPLUGINS
|
|
// AmalgamatedHarmonics
|
|
#include "AmalgamatedHarmonics/src/AH.hpp"
|
|
|
|
// AnimatedCircuits
|
|
#include "AnimatedCircuits/src/plugin.hpp"
|
|
|
|
// AS
|
|
#define modelADSR modelASADSR
|
|
#define modelVCA modelASVCA
|
|
#include "AS/src/AS.hpp"
|
|
#undef modelADSR
|
|
#undef modelVCA
|
|
|
|
// AudibleInstruments
|
|
#include "AudibleInstruments/src/plugin.hpp"
|
|
|
|
// Befaco
|
|
#include "Befaco/src/plugin.hpp"
|
|
|
|
// Bidoo
|
|
#include "Bidoo/src/plugin.hpp"
|
|
|
|
// BogaudioModules
|
|
#define modelADSR modelBogaudioADSR
|
|
#define modelLFO modelBogaudioLFO
|
|
#define modelNoise modelBogaudioNoise
|
|
#define modelVCA modelBogaudioVCA
|
|
#define modelVCF modelBogaudioVCF
|
|
#define modelVCO modelBogaudioVCO
|
|
#include "BogaudioModules/src/AD.hpp"
|
|
#include "BogaudioModules/src/Additator.hpp"
|
|
#include "BogaudioModules/src/AddrSeqX.hpp"
|
|
#include "BogaudioModules/src/ADSR.hpp"
|
|
#include "BogaudioModules/src/AMRM.hpp"
|
|
#include "BogaudioModules/src/Analyzer.hpp"
|
|
#include "BogaudioModules/src/AnalyzerXL.hpp"
|
|
#include "BogaudioModules/src/Assign.hpp"
|
|
#include "BogaudioModules/src/ASR.hpp"
|
|
#include "BogaudioModules/src/Arp.hpp"
|
|
#include "BogaudioModules/src/Blank3.hpp"
|
|
#include "BogaudioModules/src/Blank6.hpp"
|
|
#include "BogaudioModules/src/Bool.hpp"
|
|
#include "BogaudioModules/src/Chirp.hpp"
|
|
#include "BogaudioModules/src/Clpr.hpp"
|
|
#include "BogaudioModules/src/Cmp.hpp"
|
|
#include "BogaudioModules/src/CmpDist.hpp"
|
|
#include "BogaudioModules/src/CVD.hpp"
|
|
#include "BogaudioModules/src/DADSRH.hpp"
|
|
#include "BogaudioModules/src/DADSRHPlus.hpp"
|
|
#include "BogaudioModules/src/Detune.hpp"
|
|
#include "BogaudioModules/src/DGate.hpp"
|
|
#include "BogaudioModules/src/Edge.hpp"
|
|
#include "BogaudioModules/src/EightFO.hpp"
|
|
#include "BogaudioModules/src/EightOne.hpp"
|
|
#include "BogaudioModules/src/EQ.hpp"
|
|
#include "BogaudioModules/src/EQS.hpp"
|
|
#include "BogaudioModules/src/FFB.hpp"
|
|
#include "BogaudioModules/src/FlipFlop.hpp"
|
|
#include "BogaudioModules/src/FMOp.hpp"
|
|
#include "BogaudioModules/src/Follow.hpp"
|
|
#include "BogaudioModules/src/FourFO.hpp"
|
|
#include "BogaudioModules/src/FourMan.hpp"
|
|
#include "BogaudioModules/src/Inv.hpp"
|
|
#include "BogaudioModules/src/LFO.hpp"
|
|
#include "BogaudioModules/src/Lgsw.hpp"
|
|
#include "BogaudioModules/src/LLFO.hpp"
|
|
#include "BogaudioModules/src/LLPG.hpp"
|
|
#include "BogaudioModules/src/Lmtr.hpp"
|
|
#include "BogaudioModules/src/LPG.hpp"
|
|
#include "BogaudioModules/src/LVCF.hpp"
|
|
#include "BogaudioModules/src/LVCO.hpp"
|
|
#include "BogaudioModules/src/Manual.hpp"
|
|
#include "BogaudioModules/src/Matrix18.hpp"
|
|
#include "BogaudioModules/src/Matrix44.hpp"
|
|
#include "BogaudioModules/src/Matrix81.hpp"
|
|
#include "BogaudioModules/src/Matrix88.hpp"
|
|
#include "BogaudioModules/src/Matrix88Cv.hpp"
|
|
#include "BogaudioModules/src/Matrix88M.hpp"
|
|
#include "BogaudioModules/src/MegaGate.hpp"
|
|
#include "BogaudioModules/src/Mix1.hpp"
|
|
#include "BogaudioModules/src/Mix2.hpp"
|
|
#include "BogaudioModules/src/Mix4.hpp"
|
|
#include "BogaudioModules/src/Mix4x.hpp"
|
|
#include "BogaudioModules/src/Mix8x.hpp"
|
|
#include "BogaudioModules/src/Mono.hpp"
|
|
#include "BogaudioModules/src/Mult.hpp"
|
|
#include "BogaudioModules/src/Mumix.hpp"
|
|
#include "BogaudioModules/src/Mute8.hpp"
|
|
#include "BogaudioModules/src/Noise.hpp"
|
|
#include "BogaudioModules/src/Nsgt.hpp"
|
|
#include "BogaudioModules/src/Offset.hpp"
|
|
#include "BogaudioModules/src/OneEight.hpp"
|
|
#include "BogaudioModules/src/Pan.hpp"
|
|
#include "BogaudioModules/src/PEQ.hpp"
|
|
#include "BogaudioModules/src/PEQ6.hpp"
|
|
#include "BogaudioModules/src/PEQ6XF.hpp"
|
|
#include "BogaudioModules/src/PEQ14.hpp"
|
|
#include "BogaudioModules/src/PEQ14XF.hpp"
|
|
#include "BogaudioModules/src/Pgmr.hpp"
|
|
#include "BogaudioModules/src/PgmrX.hpp"
|
|
#include "BogaudioModules/src/PolyCon16.hpp"
|
|
#include "BogaudioModules/src/PolyCon8.hpp"
|
|
#include "BogaudioModules/src/PolyMult.hpp"
|
|
#include "BogaudioModules/src/PolyOff16.hpp"
|
|
#include "BogaudioModules/src/PolyOff8.hpp"
|
|
#include "BogaudioModules/src/Pressor.hpp"
|
|
#include "BogaudioModules/src/Pulse.hpp"
|
|
#include "BogaudioModules/src/Ranalyzer.hpp"
|
|
#include "BogaudioModules/src/Reftone.hpp"
|
|
#include "BogaudioModules/src/RGate.hpp"
|
|
#include "BogaudioModules/src/SampleHold.hpp"
|
|
#include "BogaudioModules/src/Shaper.hpp"
|
|
#include "BogaudioModules/src/ShaperPlus.hpp"
|
|
#include "BogaudioModules/src/Sine.hpp"
|
|
#include "BogaudioModules/src/Slew.hpp"
|
|
#include "BogaudioModules/src/Stack.hpp"
|
|
#include "BogaudioModules/src/Sums.hpp"
|
|
#include "BogaudioModules/src/Switch.hpp"
|
|
#include "BogaudioModules/src/Switch1616.hpp"
|
|
#include "BogaudioModules/src/Switch18.hpp"
|
|
#include "BogaudioModules/src/Switch44.hpp"
|
|
#include "BogaudioModules/src/Switch81.hpp"
|
|
#include "BogaudioModules/src/Switch88.hpp"
|
|
#include "BogaudioModules/src/UMix.hpp"
|
|
#include "BogaudioModules/src/Unison.hpp"
|
|
#include "BogaudioModules/src/VCA.hpp"
|
|
#include "BogaudioModules/src/VCAmp.hpp"
|
|
#include "BogaudioModules/src/VCF.hpp"
|
|
#include "BogaudioModules/src/VCM.hpp"
|
|
#include "BogaudioModules/src/VCO.hpp"
|
|
#include "BogaudioModules/src/Velo.hpp"
|
|
#include "BogaudioModules/src/Vish.hpp"
|
|
#include "BogaudioModules/src/VU.hpp"
|
|
#include "BogaudioModules/src/Walk.hpp"
|
|
#include "BogaudioModules/src/Walk2.hpp"
|
|
#include "BogaudioModules/src/XCO.hpp"
|
|
#include "BogaudioModules/src/XFade.hpp"
|
|
#undef modelADSR
|
|
#undef modelLFO
|
|
#undef modelNoise
|
|
#undef modelVCA
|
|
#undef modelVCF
|
|
#undef modelVCO
|
|
|
|
// cf
|
|
#include "cf/src/plugin.hpp"
|
|
|
|
// ESeries
|
|
#include "ESeries/src/plugin.hpp"
|
|
|
|
// Fundamental
|
|
#include "Fundamental/src/plugin.hpp"
|
|
|
|
// GrandeModular
|
|
#include "GrandeModular/src/plugin.hpp"
|
|
|
|
// ImpromptuModular
|
|
/* NOTE too much noise in original include, do this a different way
|
|
// #include "ImpromptuModular/src/ImpromptuModular.hpp"
|
|
*/
|
|
extern Model *modelBigButtonSeq;
|
|
extern Model *modelBigButtonSeq2;
|
|
extern Model *modelChordKey;
|
|
extern Model *modelChordKeyExpander;
|
|
extern Model *modelClocked;
|
|
extern Model *modelClockedExpander;
|
|
extern Model *modelClkd;
|
|
extern Model *modelCvPad;
|
|
extern Model *modelFoundry;
|
|
extern Model *modelFoundryExpander;
|
|
extern Model *modelFourView;
|
|
extern Model *modelGateSeq64;
|
|
extern Model *modelGateSeq64Expander;
|
|
extern Model *modelHotkey;
|
|
extern Model *modelPart;
|
|
extern Model *modelPhraseSeq16;
|
|
extern Model *modelPhraseSeq32;
|
|
extern Model *modelPhraseSeqExpander;
|
|
extern Model *modelProbKey;
|
|
// extern Model *modelProbKeyExpander;
|
|
extern Model *modelSemiModularSynth;
|
|
extern Model *modelTact;
|
|
extern Model *modelTact1;
|
|
extern Model *modelTactG;
|
|
extern Model *modelTwelveKey;
|
|
extern Model *modelWriteSeq32;
|
|
extern Model *modelWriteSeq64;
|
|
extern Model *modelBlankPanel;
|
|
|
|
// JW-Modules
|
|
#define modelQuantizer modelJWQuantizer
|
|
#include "JW-Modules/src/JWModules.hpp"
|
|
#undef modelQuantizer
|
|
|
|
// MindMeldModular
|
|
/* NOTE too much noise in original include, do this a different way
|
|
// #include "MindMeldModular/src/MindMeldModular.hpp"
|
|
*/
|
|
extern Model *modelMixMasterJr;
|
|
extern Model *modelAuxExpanderJr;
|
|
extern Model *modelMixMaster;
|
|
extern Model *modelAuxExpander;
|
|
extern Model *modelMeld;
|
|
extern Model *modelUnmeld;
|
|
extern Model *modelEqMaster;
|
|
extern Model *modelEqExpander;
|
|
extern Model *modelBassMaster;
|
|
extern Model *modelBassMasterJr;
|
|
extern Model *modelShapeMaster;
|
|
|
|
// rackwindows
|
|
#include "rackwindows/src/plugin.hpp"
|
|
|
|
// ValleyAudio
|
|
#include "ValleyAudio/src/Valley.hpp"
|
|
|
|
// ZetaCarinaeModules
|
|
#include "ZetaCarinaeModules/src/plugin.hpp"
|
|
|
|
#endif // NOPLUGINS
|
|
|
|
// stuff that reads config files, we dont want that
|
|
int loadConsoleType() { return 0; }
|
|
int loadDirectOutMode() { return 0; }
|
|
bool loadDarkAsDefault() { return true; }
|
|
bool loadQuality() { return false; }
|
|
void saveConsoleType(int) {}
|
|
void saveDarkAsDefault(bool) {}
|
|
void saveDirectOutMode(bool) {}
|
|
void saveHighQualityAsDefault(bool) {}
|
|
|
|
// plugin instances
|
|
Plugin* pluginInstance__Cardinal;
|
|
#ifndef NOPLUGINS
|
|
Plugin* pluginInstance__AmalgamatedHarmonics;
|
|
Plugin* pluginInstance__AnimatedCircuits;
|
|
Plugin* pluginInstance__AS;
|
|
Plugin* pluginInstance__AudibleInstruments;
|
|
Plugin* pluginInstance__Befaco;
|
|
Plugin* pluginInstance__Bidoo;
|
|
Plugin* pluginInstance__BogaudioModules;
|
|
Plugin* pluginInstance__cf;
|
|
Plugin* pluginInstance__ESeries;
|
|
Plugin* pluginInstance__Fundamental;
|
|
Plugin* pluginInstance__GrandeModular;
|
|
extern Plugin* pluginInstance__ImpromptuModular;
|
|
Plugin* pluginInstance__JW;
|
|
extern Plugin* pluginInstance__MindMeld;
|
|
Plugin* pluginInstance__rackwindows;
|
|
Plugin* pluginInstance__ValleyAudio;
|
|
Plugin* pluginInstance__ZetaCarinaeModules;
|
|
#endif // NOPLUGINS
|
|
|
|
namespace rack {
|
|
|
|
namespace asset {
|
|
std::string pluginManifest(const std::string& dirname);
|
|
std::string pluginPath(const std::string& dirname);
|
|
}
|
|
|
|
// core plugins
|
|
namespace core {
|
|
extern Model* modelAudioInterface;
|
|
extern Model* modelAudioInterface2;
|
|
extern Model* modelAudioInterface16;
|
|
extern Model* modelMIDI_CV;
|
|
extern Model* modelMIDI_CC;
|
|
extern Model* modelMIDI_Gate;
|
|
extern Model* modelMIDI_Map;
|
|
extern Model* modelCV_MIDI;
|
|
extern Model* modelCV_CC;
|
|
extern Model* modelCV_Gate;
|
|
extern Model* modelBlank;
|
|
extern Model* modelNotes;
|
|
}
|
|
|
|
// regular plugins
|
|
namespace plugin {
|
|
|
|
struct StaticPluginLoader {
|
|
Plugin* const plugin;
|
|
FILE* file;
|
|
json_t* rootJ;
|
|
|
|
StaticPluginLoader(Plugin* const p, const char* const name)
|
|
: plugin(p),
|
|
file(nullptr),
|
|
rootJ(nullptr)
|
|
{
|
|
#ifdef DEBUG
|
|
DEBUG("Loading plugin module %s", name);
|
|
#endif
|
|
|
|
p->path = asset::pluginPath(name);
|
|
|
|
const std::string manifestFilename = asset::pluginManifest(name);
|
|
|
|
if ((file = std::fopen(manifestFilename.c_str(), "r")) == nullptr)
|
|
{
|
|
d_stderr2("Manifest file %s does not exist", manifestFilename.c_str());
|
|
return;
|
|
}
|
|
|
|
json_error_t error;
|
|
if ((rootJ = json_loadf(file, 0, &error)) == nullptr)
|
|
{
|
|
d_stderr2("JSON parsing error at %s %d:%d %s", manifestFilename.c_str(), error.line, error.column, error.text);
|
|
return;
|
|
}
|
|
|
|
// force ABI, we use static plugins so this doesnt matter as long as it builds
|
|
json_t* const version = json_string((APP_VERSION_MAJOR + ".0").c_str());
|
|
json_object_set(rootJ, "version", version);
|
|
json_decref(version);
|
|
}
|
|
|
|
~StaticPluginLoader()
|
|
{
|
|
if (rootJ != nullptr)
|
|
{
|
|
plugin->fromJson(rootJ);
|
|
json_decref(rootJ);
|
|
plugins.push_back(plugin);
|
|
}
|
|
|
|
if (file != nullptr)
|
|
std::fclose(file);
|
|
}
|
|
|
|
bool ok() const noexcept
|
|
{
|
|
return rootJ != nullptr;
|
|
}
|
|
};
|
|
|
|
static void initStatic__Core()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
|
|
const StaticPluginLoader spl(p, "Core");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(rack::core::modelAudioInterface);
|
|
p->addModel(rack::core::modelAudioInterface2);
|
|
p->addModel(rack::core::modelAudioInterface16);
|
|
p->addModel(rack::core::modelMIDI_CV);
|
|
p->addModel(rack::core::modelMIDI_CC);
|
|
p->addModel(rack::core::modelMIDI_Gate);
|
|
p->addModel(rack::core::modelMIDI_Map);
|
|
p->addModel(rack::core::modelCV_MIDI);
|
|
p->addModel(rack::core::modelCV_CC);
|
|
p->addModel(rack::core::modelCV_Gate);
|
|
p->addModel(rack::core::modelBlank);
|
|
p->addModel(rack::core::modelNotes);
|
|
}
|
|
}
|
|
|
|
static void initStatic__Cardinal()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__Cardinal = p;
|
|
|
|
const StaticPluginLoader spl(p, "Cardinal");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelGlBars);
|
|
p->addModel(modelHostParameters);
|
|
p->addModel(modelHostTime);
|
|
}
|
|
}
|
|
|
|
#ifndef NOPLUGINS
|
|
static void initStatic__AmalgamatedHarmonics()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__AmalgamatedHarmonics = p;
|
|
|
|
const StaticPluginLoader spl(p, "AmalgamatedHarmonics");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelArp31);
|
|
p->addModel(modelArp32);
|
|
p->addModel(modelBombe);
|
|
p->addModel(modelChord);
|
|
p->addModel(modelCircle);
|
|
p->addModel(modelGalaxy);
|
|
p->addModel(modelGenerative);
|
|
p->addModel(modelImp);
|
|
p->addModel(modelImperfect2);
|
|
p->addModel(modelProgress2);
|
|
p->addModel(modelRuckus);
|
|
p->addModel(modelScaleQuantizer2);
|
|
p->addModel(modelSLN);
|
|
p->addModel(modelMuxDeMux);
|
|
p->addModel(modelPolyProbe);
|
|
p->addModel(modelPolyScope);
|
|
p->addModel(modelPolyUtils);
|
|
p->addModel(modelPolyVolt);
|
|
p->addModel(modelScaleQuantizer);
|
|
p->addModel(modelArpeggiator2);
|
|
p->addModel(modelProgress);
|
|
}
|
|
}
|
|
|
|
static void initStatic__AnimatedCircuits()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__AnimatedCircuits = p;
|
|
|
|
const StaticPluginLoader spl(p, "AnimatedCircuits");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(model_AC_Folding);
|
|
}
|
|
}
|
|
|
|
static void initStatic__AS()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__AS = p;
|
|
|
|
const StaticPluginLoader spl(p, "AS");
|
|
if (spl.ok())
|
|
{
|
|
#define modelADSR modelASADSR
|
|
#define modelVCA modelASVCA
|
|
//OSCILLATORS
|
|
p->addModel(modelSineOsc);
|
|
p->addModel(modelSawOsc);
|
|
|
|
//TOOLS
|
|
p->addModel(modelADSR);
|
|
p->addModel(modelVCA);
|
|
p->addModel(modelQuadVCA);
|
|
p->addModel(modelTriLFO);
|
|
p->addModel(modelAtNuVrTr);
|
|
p->addModel(modelBPMClock);
|
|
p->addModel(modelSEQ16);
|
|
p->addModel(modelMixer2ch);
|
|
p->addModel(modelMixer4ch);
|
|
p->addModel(modelMixer8ch);
|
|
p->addModel(modelMonoVUmeter);
|
|
p->addModel(modelStereoVUmeter);
|
|
p->addModel(modelMultiple2_5);
|
|
p->addModel(modelMerge2_5);
|
|
p->addModel(modelSteps);
|
|
p->addModel(modelLaunchGate);
|
|
p->addModel(modelKillGate);
|
|
p->addModel(modelFlow);
|
|
p->addModel(modelSignalDelay);
|
|
p->addModel(modelTriggersMKI);
|
|
p->addModel(modelTriggersMKII);
|
|
p->addModel(modelTriggersMKIII);
|
|
p->addModel(modelBPMCalc);
|
|
p->addModel(modelBPMCalc2);
|
|
p->addModel(modelCv2T);
|
|
p->addModel(modelZeroCV2T);
|
|
p->addModel(modelReScale);
|
|
|
|
//EFFECTS
|
|
p->addModel(modelDelayPlusFx);
|
|
p->addModel(modelDelayPlusStereoFx);
|
|
p->addModel(modelPhaserFx);
|
|
p->addModel(modelReverbFx);
|
|
p->addModel(modelReverbStereoFx);
|
|
p->addModel(modelSuperDriveFx);
|
|
p->addModel(modelSuperDriveStereoFx);
|
|
p->addModel(modelTremoloFx);
|
|
p->addModel(modelTremoloStereoFx);
|
|
p->addModel(modelWaveShaper);
|
|
p->addModel(modelWaveShaperStereo);
|
|
|
|
//BLANK PANELS
|
|
p->addModel(modelBlankPanel4);
|
|
p->addModel(modelBlankPanel6);
|
|
p->addModel(modelBlankPanel8);
|
|
p->addModel(modelBlankPanelSpecial);
|
|
#undef modelADSR
|
|
#undef modelVCA
|
|
}
|
|
}
|
|
|
|
static void initStatic__AudibleInstruments()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__AudibleInstruments = p;
|
|
|
|
const StaticPluginLoader spl(p, "AudibleInstruments");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelBraids);
|
|
p->addModel(modelPlaits);
|
|
p->addModel(modelElements);
|
|
p->addModel(modelTides);
|
|
p->addModel(modelTides2);
|
|
p->addModel(modelClouds);
|
|
p->addModel(modelWarps);
|
|
p->addModel(modelRings);
|
|
p->addModel(modelLinks);
|
|
p->addModel(modelKinks);
|
|
p->addModel(modelShades);
|
|
p->addModel(modelBranches);
|
|
p->addModel(modelBlinds);
|
|
p->addModel(modelVeils);
|
|
p->addModel(modelFrames);
|
|
p->addModel(modelMarbles);
|
|
p->addModel(modelStages);
|
|
p->addModel(modelRipples);
|
|
p->addModel(modelShelves);
|
|
p->addModel(modelStreams);
|
|
}
|
|
}
|
|
|
|
static void initStatic__Befaco()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__Befaco = p;
|
|
|
|
const StaticPluginLoader spl(p, "Befaco");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelEvenVCO);
|
|
p->addModel(modelRampage);
|
|
p->addModel(modelABC);
|
|
p->addModel(modelSpringReverb);
|
|
p->addModel(modelMixer);
|
|
p->addModel(modelSlewLimiter);
|
|
p->addModel(modelDualAtenuverter);
|
|
}
|
|
}
|
|
|
|
static void initStatic__Bidoo()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__Bidoo = p;
|
|
|
|
const StaticPluginLoader spl(p, "Bidoo");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelTOCANTE);
|
|
p->addModel(modelLATE);
|
|
p->addModel(modelDIKTAT);
|
|
p->addModel(modelDTROY);
|
|
p->addModel(modelBORDL);
|
|
p->addModel(modelZOUMAI);
|
|
p->addModel(modelMU);
|
|
p->addModel(modelCHUTE);
|
|
p->addModel(modelLOURDE);
|
|
p->addModel(modelACNE);
|
|
p->addModel(modelMS);
|
|
p->addModel(modelDUKE);
|
|
p->addModel(modelMOIRE);
|
|
p->addModel(modelPILOT);
|
|
p->addModel(modelHUITRE);
|
|
p->addModel(modelOUAIVE);
|
|
p->addModel(modelPOUPRE);
|
|
p->addModel(modelMAGMA);
|
|
p->addModel(modelOAI);
|
|
p->addModel(modelCANARD);
|
|
p->addModel(modelEMILE);
|
|
p->addModel(modelFORK);
|
|
p->addModel(modelTIARE);
|
|
//p->addModel(modelCLACOS);
|
|
//p->addModel(modelPENEQUE);
|
|
p->addModel(modelLIMONADE);
|
|
p->addModel(modelLIMBO);
|
|
p->addModel(modelPERCO);
|
|
p->addModel(modelBAFIS);
|
|
p->addModel(modelFFILTR);
|
|
p->addModel(modelBAR);
|
|
p->addModel(modelMINIBAR);
|
|
p->addModel(modelZINC);
|
|
p->addModel(modelFREIN);
|
|
p->addModel(modelHCTIP);
|
|
//p->addModel(modelCURT);
|
|
p->addModel(modelDFUZE);
|
|
p->addModel(modelREI);
|
|
p->addModel(modelRABBIT);
|
|
p->addModel(modelBISTROT);
|
|
p->addModel(modelSIGMA);
|
|
p->addModel(modelGARCON);
|
|
p->addModel(modelVOID);
|
|
|
|
// NOTE disabled in Cardinal due to curl usage
|
|
// p->addModel(modelANTN);
|
|
|
|
// intentionally remove known bad plugin
|
|
if (json_t* const modules = json_object_get(spl.rootJ, "modules"))
|
|
{
|
|
size_t i;
|
|
json_t* v;
|
|
json_array_foreach(modules, i, v)
|
|
{
|
|
if (json_t* const slug = json_object_get(v, "slug"))
|
|
{
|
|
if (const char* const value = json_string_value(slug))
|
|
{
|
|
if (std::strcmp(value, "antN") == 0)
|
|
{
|
|
json_array_remove(modules, i);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
static void initStatic__BogaudioModules()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__BogaudioModules = p;
|
|
|
|
const StaticPluginLoader spl(p, "BogaudioModules");
|
|
if (spl.ok())
|
|
{
|
|
#define modelADSR modelBogaudioADSR
|
|
#define modelLFO modelBogaudioLFO
|
|
#define modelNoise modelBogaudioNoise
|
|
#define modelVCA modelBogaudioVCA
|
|
#define modelVCF modelBogaudioVCF
|
|
#define modelVCO modelBogaudioVCO
|
|
p->addModel(modelVCO);
|
|
p->addModel(modelLVCO);
|
|
p->addModel(modelSine);
|
|
p->addModel(modelPulse);
|
|
p->addModel(modelXCO);
|
|
p->addModel(modelAdditator);
|
|
p->addModel(modelFMOp);
|
|
p->addModel(modelChirp);
|
|
p->addModel(modelLFO);
|
|
p->addModel(modelLLFO);
|
|
p->addModel(modelFourFO);
|
|
p->addModel(modelEightFO);
|
|
p->addModel(modelVCF);
|
|
p->addModel(modelLVCF);
|
|
p->addModel(modelFFB);
|
|
p->addModel(modelEQ);
|
|
p->addModel(modelEQS);
|
|
p->addModel(modelLPG);
|
|
p->addModel(modelLLPG);
|
|
p->addModel(modelMegaGate);
|
|
p->addModel(modelPEQ);
|
|
p->addModel(modelPEQ6);
|
|
p->addModel(modelPEQ6XF);
|
|
p->addModel(modelPEQ14);
|
|
p->addModel(modelPEQ14XF);
|
|
p->addModel(modelDADSRH);
|
|
p->addModel(modelDADSRHPlus);
|
|
p->addModel(modelShaper);
|
|
p->addModel(modelShaperPlus);
|
|
p->addModel(modelAD);
|
|
p->addModel(modelASR);
|
|
p->addModel(modelADSR);
|
|
p->addModel(modelVish);
|
|
p->addModel(modelFollow);
|
|
p->addModel(modelDGate);
|
|
p->addModel(modelRGate);
|
|
p->addModel(modelEdge);
|
|
p->addModel(modelNoise);
|
|
p->addModel(modelSampleHold);
|
|
p->addModel(modelWalk2);
|
|
p->addModel(modelWalk);
|
|
p->addModel(modelMix8);
|
|
p->addModel(modelMix8x);
|
|
p->addModel(modelMix4);
|
|
p->addModel(modelMix4x);
|
|
p->addModel(modelMix2);
|
|
p->addModel(modelMix1);
|
|
p->addModel(modelVCM);
|
|
p->addModel(modelMute8);
|
|
p->addModel(modelPan);
|
|
p->addModel(modelXFade);
|
|
p->addModel(modelVCA);
|
|
p->addModel(modelVCAmp);
|
|
p->addModel(modelVelo);
|
|
p->addModel(modelUMix);
|
|
p->addModel(modelMumix);
|
|
p->addModel(modelMatrix81);
|
|
p->addModel(modelMatrix18);
|
|
p->addModel(modelMatrix44);
|
|
p->addModel(modelMatrix44Cvm);
|
|
p->addModel(modelMatrix88);
|
|
p->addModel(modelMatrix88Cv);
|
|
p->addModel(modelMatrix88M);
|
|
p->addModel(modelSwitch81);
|
|
p->addModel(modelSwitch18);
|
|
p->addModel(modelSwitch44);
|
|
p->addModel(modelSwitch88);
|
|
p->addModel(modelSwitch1616);
|
|
p->addModel(modelAMRM);
|
|
p->addModel(modelPressor);
|
|
p->addModel(modelClpr);
|
|
p->addModel(modelLmtr);
|
|
p->addModel(modelNsgt);
|
|
p->addModel(modelCmpDist);
|
|
p->addModel(modelOneEight);
|
|
p->addModel(modelEightOne);
|
|
p->addModel(modelAddrSeq);
|
|
p->addModel(modelAddrSeqX);
|
|
p->addModel(modelPgmr);
|
|
p->addModel(modelPgmrX);
|
|
p->addModel(modelVU);
|
|
p->addModel(modelAnalyzer);
|
|
p->addModel(modelAnalyzerXL);
|
|
p->addModel(modelRanalyzer);
|
|
p->addModel(modelDetune);
|
|
p->addModel(modelStack);
|
|
p->addModel(modelReftone);
|
|
p->addModel(modelMono);
|
|
p->addModel(modelArp);
|
|
p->addModel(modelAssign);
|
|
p->addModel(modelUnison);
|
|
p->addModel(modelPolyCon8);
|
|
p->addModel(modelPolyCon16);
|
|
p->addModel(modelPolyOff8);
|
|
p->addModel(modelPolyOff16);
|
|
p->addModel(modelPolyMult);
|
|
p->addModel(modelBool);
|
|
p->addModel(modelCmp);
|
|
p->addModel(modelCVD);
|
|
p->addModel(modelFlipFlop);
|
|
p->addModel(modelInv);
|
|
p->addModel(modelManual);
|
|
p->addModel(modelFourMan);
|
|
p->addModel(modelMult);
|
|
p->addModel(modelOffset);
|
|
p->addModel(modelSlew);
|
|
p->addModel(modelSums);
|
|
p->addModel(modelSwitch);
|
|
p->addModel(modelLgsw);
|
|
p->addModel(modelBlank3);
|
|
p->addModel(modelBlank6);
|
|
#ifdef EXPERIMENTAL
|
|
p->addModel(modelLag);
|
|
p->addModel(modelPEQ14XR);
|
|
p->addModel(modelPEQ14XV);
|
|
#endif
|
|
#ifdef TEST
|
|
p->addModel(modelTest);
|
|
p->addModel(modelTest2);
|
|
p->addModel(modelTestExpanderBase);
|
|
p->addModel(modelTestExpanderExtension);
|
|
p->addModel(modelTestGl);
|
|
p->addModel(modelTestVCF);
|
|
#endif
|
|
#undef modelADSR
|
|
#undef modelLFO
|
|
#undef modelNoise
|
|
#undef modelVCA
|
|
#undef modelVCF
|
|
#undef modelVCO
|
|
}
|
|
}
|
|
|
|
static void initStatic__cf()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__cf = p;
|
|
|
|
const StaticPluginLoader spl(p, "cf");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelMETRO);
|
|
p->addModel(modelEACH);
|
|
p->addModel(modeltrSEQ);
|
|
p->addModel(modelLEDSEQ);
|
|
p->addModel(modelL3DS3Q);
|
|
p->addModel(modelSLIDERSEQ);
|
|
p->addModel(modelPLAYER);
|
|
p->addModel(modelPLAY);
|
|
p->addModel(modelMONO);
|
|
p->addModel(modelSTEREO);
|
|
p->addModel(modelSUB);
|
|
p->addModel(modelMASTER);
|
|
p->addModel(modelVARIABLE);
|
|
p->addModel(modelALGEBRA);
|
|
p->addModel(modelFUNKTION);
|
|
p->addModel(modelCHOKE);
|
|
p->addModel(modelFOUR);
|
|
p->addModel(modelSTEPS);
|
|
p->addModel(modelPEAK);
|
|
p->addModel(modelCUTS);
|
|
p->addModel(modelBUFFER);
|
|
p->addModel(modelDISTO);
|
|
p->addModel(modelCUBE);
|
|
p->addModel(modelPATCH);
|
|
p->addModel(modelLABEL);
|
|
p->addModel(modelDAVE);
|
|
}
|
|
}
|
|
|
|
static void initStatic__ESeries()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__ESeries = p;
|
|
|
|
const StaticPluginLoader spl(p, "ESeries");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelE340);
|
|
}
|
|
}
|
|
|
|
static void initStatic__Fundamental()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__Fundamental = p;
|
|
|
|
const StaticPluginLoader spl(p, "Fundamental");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelVCO);
|
|
p->addModel(modelVCO2);
|
|
p->addModel(modelVCF);
|
|
p->addModel(modelVCA_1);
|
|
p->addModel(modelVCA);
|
|
p->addModel(modelLFO);
|
|
p->addModel(modelLFO2);
|
|
p->addModel(modelDelay);
|
|
p->addModel(modelADSR);
|
|
p->addModel(modelVCMixer);
|
|
p->addModel(model_8vert);
|
|
p->addModel(modelUnity);
|
|
p->addModel(modelMutes);
|
|
p->addModel(modelPulses);
|
|
p->addModel(modelScope);
|
|
p->addModel(modelSEQ3);
|
|
p->addModel(modelSequentialSwitch1);
|
|
p->addModel(modelSequentialSwitch2);
|
|
p->addModel(modelOctave);
|
|
p->addModel(modelQuantizer);
|
|
p->addModel(modelSplit);
|
|
p->addModel(modelMerge);
|
|
p->addModel(modelSum);
|
|
p->addModel(modelViz);
|
|
p->addModel(modelMidSide);
|
|
p->addModel(modelNoise);
|
|
p->addModel(modelRandom);
|
|
}
|
|
}
|
|
|
|
static void initStatic__GrandeModular()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__GrandeModular = p;
|
|
|
|
const StaticPluginLoader spl(p, "GrandeModular");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelClip);
|
|
p->addModel(modelMergeSplit4);
|
|
p->addModel(modelMicrotonalChords);
|
|
p->addModel(modelMicrotonalNotes);
|
|
p->addModel(modelNoteMT);
|
|
p->addModel(modelPolyMergeResplit);
|
|
p->addModel(modelQuant);
|
|
p->addModel(modelQuantIntervals);
|
|
p->addModel(modelQuantMT);
|
|
p->addModel(modelSampleDelays);
|
|
p->addModel(modelScale);
|
|
p->addModel(modelTails);
|
|
p->addModel(modelVarSampleDelays);
|
|
}
|
|
}
|
|
|
|
static void initStatic__ImpromptuModular()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__ImpromptuModular = p;
|
|
|
|
const StaticPluginLoader spl(p, "ImpromptuModular");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelBigButtonSeq);
|
|
p->addModel(modelBigButtonSeq2);
|
|
p->addModel(modelChordKey);
|
|
p->addModel(modelChordKeyExpander);
|
|
p->addModel(modelClocked);
|
|
p->addModel(modelClockedExpander);
|
|
p->addModel(modelClkd);
|
|
p->addModel(modelCvPad);
|
|
p->addModel(modelFoundry);
|
|
p->addModel(modelFoundryExpander);
|
|
p->addModel(modelFourView);
|
|
p->addModel(modelGateSeq64);
|
|
p->addModel(modelGateSeq64Expander);
|
|
p->addModel(modelHotkey);
|
|
p->addModel(modelPart);
|
|
p->addModel(modelPhraseSeq16);
|
|
p->addModel(modelPhraseSeq32);
|
|
p->addModel(modelPhraseSeqExpander);
|
|
p->addModel(modelProbKey);
|
|
// p->addModel(modelProbKeyExpander);
|
|
p->addModel(modelSemiModularSynth);
|
|
p->addModel(modelTact);
|
|
p->addModel(modelTact1);
|
|
p->addModel(modelTactG);
|
|
p->addModel(modelTwelveKey);
|
|
p->addModel(modelWriteSeq32);
|
|
p->addModel(modelWriteSeq64);
|
|
p->addModel(modelBlankPanel);
|
|
}
|
|
}
|
|
|
|
static void initStatic__JW()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__JW = p;
|
|
|
|
const StaticPluginLoader spl(p, "JW-Modules");
|
|
if (spl.ok())
|
|
{
|
|
#define modelQuantizer modelJWQuantizer
|
|
p->addModel(modelAdd5);
|
|
p->addModel(modelBouncyBalls);
|
|
p->addModel(modelCat);
|
|
p->addModel(modelTree);
|
|
p->addModel(modelFullScope);
|
|
p->addModel(modelGridSeq);
|
|
p->addModel(modelEightSeq);
|
|
p->addModel(modelDivSeq);
|
|
p->addModel(modelMinMax);
|
|
p->addModel(modelNoteSeq);
|
|
p->addModel(modelNoteSeqFu);
|
|
p->addModel(modelNoteSeq16);
|
|
p->addModel(modelTrigs);
|
|
p->addModel(modelOnePattern);
|
|
p->addModel(modelPatterns);
|
|
p->addModel(modelQuantizer);
|
|
p->addModel(modelSimpleClock);
|
|
p->addModel(modelStr1ker);
|
|
p->addModel(modelD1v1de);
|
|
p->addModel(modelPres1t);
|
|
p->addModel(modelThingThing);
|
|
p->addModel(modelWavHead);
|
|
p->addModel(modelXYPad);
|
|
p->addModel(modelBlankPanel1hp);
|
|
p->addModel(modelBlankPanelSmall);
|
|
p->addModel(modelBlankPanelMedium);
|
|
p->addModel(modelBlankPanelLarge);
|
|
p->addModel(modelCoolBreeze);
|
|
p->addModel(modelPete);
|
|
#undef modelQuantizer
|
|
}
|
|
}
|
|
|
|
static void initStatic__MindMeld()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__MindMeld = p;
|
|
|
|
const StaticPluginLoader spl(p, "MindMeldModular");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelMixMasterJr);
|
|
p->addModel(modelAuxExpanderJr);
|
|
p->addModel(modelMixMaster);
|
|
p->addModel(modelAuxExpander);
|
|
p->addModel(modelMeld);
|
|
p->addModel(modelUnmeld);
|
|
p->addModel(modelEqMaster);
|
|
p->addModel(modelEqExpander);
|
|
p->addModel(modelBassMaster);
|
|
p->addModel(modelBassMasterJr);
|
|
p->addModel(modelShapeMaster);
|
|
}
|
|
}
|
|
|
|
static void initStatic__rackwindows()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__rackwindows = p;
|
|
|
|
const StaticPluginLoader spl(p, "rackwindows");
|
|
if (spl.ok())
|
|
{
|
|
// p->addModel(modelAcceleration);
|
|
p->addModel(modelBitshiftgain);
|
|
p->addModel(modelCapacitor);
|
|
p->addModel(modelCapacitor_stereo);
|
|
p->addModel(modelChorus);
|
|
p->addModel(modelConsole);
|
|
p->addModel(modelConsole_mm);
|
|
p->addModel(modelDistance);
|
|
p->addModel(modelGolem);
|
|
p->addModel(modelHolt);
|
|
p->addModel(modelHombre);
|
|
p->addModel(modelInterstage);
|
|
p->addModel(modelMonitoring);
|
|
p->addModel(modelMv);
|
|
p->addModel(modelRasp);
|
|
p->addModel(modelReseq);
|
|
p->addModel(modelTape);
|
|
p->addModel(modelTremolo);
|
|
p->addModel(modelVibrato);
|
|
}
|
|
}
|
|
|
|
static void initStatic__ValleyAudio()
|
|
{
|
|
Plugin* const p = new Plugin;
|
|
pluginInstance__ValleyAudio = p;
|
|
|
|
const StaticPluginLoader spl(p, "ValleyAudio");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelTopograph);
|
|
p->addModel(modelUGraph);
|
|
p->addModel(modelDexter);
|
|
p->addModel(modelPlateau);
|
|
p->addModel(modelInterzone);
|
|
p->addModel(modelAmalgam);
|
|
p->addModel(modelFeline);
|
|
p->addModel(modelTerrorform);
|
|
}
|
|
}
|
|
|
|
static void initStatic__ZetaCarinaeModules()
|
|
{
|
|
Plugin* p = new Plugin;
|
|
pluginInstance__ZetaCarinaeModules = p;
|
|
|
|
const StaticPluginLoader spl(p, "ZetaCarinaeModules");
|
|
if (spl.ok())
|
|
{
|
|
p->addModel(modelBrownianBridge);
|
|
p->addModel(modelOrnsteinUhlenbeck);
|
|
p->addModel(modelIOU);
|
|
p->addModel(modelWarbler);
|
|
p->addModel(modelRosenchance);
|
|
p->addModel(modelGuildensTurn);
|
|
p->addModel(modelRosslerRustler);
|
|
p->addModel(modelFirefly);
|
|
}
|
|
}
|
|
#endif // NOPLUGINS
|
|
|
|
void initStaticPlugins()
|
|
{
|
|
initStatic__Core();
|
|
initStatic__Cardinal();
|
|
#ifndef NOPLUGINS
|
|
initStatic__AmalgamatedHarmonics();
|
|
initStatic__AnimatedCircuits();
|
|
initStatic__AS();
|
|
initStatic__AudibleInstruments();
|
|
initStatic__Befaco();
|
|
initStatic__Bidoo();
|
|
initStatic__BogaudioModules();
|
|
initStatic__cf();
|
|
initStatic__ESeries();
|
|
initStatic__Fundamental();
|
|
initStatic__GrandeModular();
|
|
initStatic__ImpromptuModular();
|
|
initStatic__JW();
|
|
initStatic__MindMeld();
|
|
initStatic__rackwindows();
|
|
initStatic__ValleyAudio();
|
|
initStatic__ZetaCarinaeModules();
|
|
#endif // NOPLUGINS
|
|
}
|
|
|
|
void destroyStaticPlugins()
|
|
{
|
|
for (Plugin* p : plugins)
|
|
delete p;
|
|
plugins.clear();
|
|
}
|
|
|
|
}
|
|
}
|