Add placeholders for the rest of the core midi modules
This commit is contained in:
parent
461fbeb51d
commit
4fca34e875
7 changed files with 411 additions and 11 deletions
|
@ -31,7 +31,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "HostCV",
|
||||
"disabled": false,
|
||||
"name": "Host CV",
|
||||
"description": "Exposes host-provided CV ports in a module",
|
||||
"tags": [
|
||||
|
@ -40,7 +39,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "HostMIDI",
|
||||
"disabled": false,
|
||||
"name": "Host MIDI",
|
||||
"description": "Exposes host-provided MIDI in a module",
|
||||
"tags": [
|
||||
|
@ -49,9 +47,35 @@
|
|||
"Polyphonic"
|
||||
]
|
||||
},
|
||||
{
|
||||
"slug": "HostMIDICC",
|
||||
"name": "Host MIDI CC",
|
||||
"description": "Exposes host-provided MIDI CC in a module",
|
||||
"tags": [
|
||||
"External",
|
||||
"MIDI"
|
||||
]
|
||||
},
|
||||
{
|
||||
"slug": "HostMIDIGate",
|
||||
"name": "Host MIDI Gate",
|
||||
"description": "Exposes host-provided MIDI as gates in a module",
|
||||
"tags": [
|
||||
"External",
|
||||
"MIDI"
|
||||
]
|
||||
},
|
||||
{
|
||||
"slug": "HostMIDIMap",
|
||||
"name": "Host MIDI Map",
|
||||
"description": "Allows host-provided MIDI to control other module parameters",
|
||||
"tags": [
|
||||
"External",
|
||||
"MIDI"
|
||||
]
|
||||
},
|
||||
{
|
||||
"slug": "HostParameters",
|
||||
"disabled": false,
|
||||
"name": "Host Parameters",
|
||||
"description": "Exposes host-controlled plugin parameters in a module",
|
||||
"tags": [
|
||||
|
@ -60,7 +84,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "HostTime",
|
||||
"disabled": false,
|
||||
"name": "Host Time",
|
||||
"description": "Exposes host-provided time/transport information in a module",
|
||||
"tags": [
|
||||
|
@ -69,7 +92,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "glBars",
|
||||
"disabled": false,
|
||||
"name": "glBars",
|
||||
"description": "OpenGL bars visualization, as seen in XMMS and XBMC/Kodi",
|
||||
"tags": [
|
||||
|
@ -78,7 +100,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "Blank",
|
||||
"disabled": false,
|
||||
"name": "Blank",
|
||||
"description": "Cardinal's own blank panel, featuring Hatsune Miku",
|
||||
"tags": [
|
||||
|
@ -87,7 +108,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "AudioFile",
|
||||
"disabled": false,
|
||||
"name": "Audio File",
|
||||
"description": "Audio file player as a module",
|
||||
"tags": [
|
||||
|
@ -96,7 +116,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "Carla",
|
||||
"disabled": false,
|
||||
"name": "Carla Plugin Host",
|
||||
"description": "A modular plugin host within Cardinal",
|
||||
"tags": [
|
||||
|
@ -105,7 +124,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "Ildaeil",
|
||||
"disabled": false,
|
||||
"name": "Ildaeil Plugin Host",
|
||||
"description": "A mini plugin host within Cardinal for loading any FX",
|
||||
"tags": [
|
||||
|
@ -114,7 +132,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "MPV",
|
||||
"disabled": false,
|
||||
"name": "MPV",
|
||||
"description": "An embed video player inside Cardinal",
|
||||
"tags": [
|
||||
|
@ -123,7 +140,6 @@
|
|||
},
|
||||
{
|
||||
"slug": "TextEditor",
|
||||
"disabled": false,
|
||||
"name": "Text Editor",
|
||||
"description": "An embed text editor inside Cardinal",
|
||||
"tags": [
|
||||
|
|
125
plugins/Cardinal/src/HostMIDI-CC.cpp
Normal file
125
plugins/Cardinal/src/HostMIDI-CC.cpp
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file contains a substantial amount of code from VCVRack's core/....cpp and core/....cpp
|
||||
* Copyright (C) 2016-2021 VCV.
|
||||
*
|
||||
* 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 (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include "plugincontext.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
USE_NAMESPACE_DISTRHO;
|
||||
|
||||
struct HostMIDICC : Module {
|
||||
enum ParamIds {
|
||||
NUM_PARAMS
|
||||
};
|
||||
enum InputIds {
|
||||
NUM_INPUTS
|
||||
};
|
||||
enum OutputIds {
|
||||
NUM_OUTPUTS
|
||||
};
|
||||
enum LightIds {
|
||||
NUM_LIGHTS
|
||||
};
|
||||
|
||||
CardinalPluginContext* const pcontext;
|
||||
|
||||
HostMIDICC()
|
||||
: pcontext(static_cast<CardinalPluginContext*>(APP))
|
||||
{
|
||||
if (pcontext == nullptr)
|
||||
throw rack::Exception("Plugin context is null");
|
||||
|
||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
|
||||
}
|
||||
|
||||
void onReset() override
|
||||
{
|
||||
}
|
||||
|
||||
void process(const ProcessArgs& args) override
|
||||
{
|
||||
}
|
||||
|
||||
json_t* dataToJson() override
|
||||
{
|
||||
json_t* const rootJ = json_object();
|
||||
DISTRHO_SAFE_ASSERT_RETURN(rootJ != nullptr, nullptr);
|
||||
|
||||
return rootJ;
|
||||
}
|
||||
|
||||
void dataFromJson(json_t* rootJ) override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
struct HostMIDICCWidget : ModuleWidget {
|
||||
static constexpr const float startX_In = 14.0f;
|
||||
static constexpr const float startX_Out = 96.0f;
|
||||
static constexpr const float startY = 74.0f;
|
||||
static constexpr const float padding = 29.0f;
|
||||
static constexpr const float middleX = startX_In + (startX_Out - startX_In) * 0.5f + padding * 0.35f;
|
||||
|
||||
HostMIDICC* const module;
|
||||
|
||||
HostMIDICCWidget(HostMIDICC* const m)
|
||||
: module(m)
|
||||
{
|
||||
setModule(m);
|
||||
setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/HostMIDI.svg")));
|
||||
|
||||
addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, 0)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
|
||||
}
|
||||
|
||||
void draw(const DrawArgs& args) override
|
||||
{
|
||||
nvgBeginPath(args.vg);
|
||||
nvgRect(args.vg, 0, 0, box.size.x, box.size.y);
|
||||
nvgFillPaint(args.vg, nvgLinearGradient(args.vg, 0, 0, 0, box.size.y,
|
||||
nvgRGB(0x18, 0x19, 0x19), nvgRGB(0x21, 0x22, 0x22)));
|
||||
nvgFill(args.vg);
|
||||
|
||||
ModuleWidget::draw(args);
|
||||
}
|
||||
|
||||
void appendContextMenu(Menu* const menu) override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Model* modelHostMIDICC = createModel<HostMIDICC, HostMIDICCWidget>("HostMIDICC");
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
125
plugins/Cardinal/src/HostMIDI-Gate.cpp
Normal file
125
plugins/Cardinal/src/HostMIDI-Gate.cpp
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file contains a substantial amount of code from VCVRack's core/....cpp and core/....cpp
|
||||
* Copyright (C) 2016-2021 VCV.
|
||||
*
|
||||
* 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 (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include "plugincontext.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
USE_NAMESPACE_DISTRHO;
|
||||
|
||||
struct HostMIDIGate : Module {
|
||||
enum ParamIds {
|
||||
NUM_PARAMS
|
||||
};
|
||||
enum InputIds {
|
||||
NUM_INPUTS
|
||||
};
|
||||
enum OutputIds {
|
||||
NUM_OUTPUTS
|
||||
};
|
||||
enum LightIds {
|
||||
NUM_LIGHTS
|
||||
};
|
||||
|
||||
CardinalPluginContext* const pcontext;
|
||||
|
||||
HostMIDIGate()
|
||||
: pcontext(static_cast<CardinalPluginContext*>(APP))
|
||||
{
|
||||
if (pcontext == nullptr)
|
||||
throw rack::Exception("Plugin context is null");
|
||||
|
||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
|
||||
}
|
||||
|
||||
void onReset() override
|
||||
{
|
||||
}
|
||||
|
||||
void process(const ProcessArgs& args) override
|
||||
{
|
||||
}
|
||||
|
||||
json_t* dataToJson() override
|
||||
{
|
||||
json_t* const rootJ = json_object();
|
||||
DISTRHO_SAFE_ASSERT_RETURN(rootJ != nullptr, nullptr);
|
||||
|
||||
return rootJ;
|
||||
}
|
||||
|
||||
void dataFromJson(json_t* rootJ) override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
struct HostMIDIGateWidget : ModuleWidget {
|
||||
static constexpr const float startX_In = 14.0f;
|
||||
static constexpr const float startX_Out = 96.0f;
|
||||
static constexpr const float startY = 74.0f;
|
||||
static constexpr const float padding = 29.0f;
|
||||
static constexpr const float middleX = startX_In + (startX_Out - startX_In) * 0.5f + padding * 0.35f;
|
||||
|
||||
HostMIDIGate* const module;
|
||||
|
||||
HostMIDIGateWidget(HostMIDIGate* const m)
|
||||
: module(m)
|
||||
{
|
||||
setModule(m);
|
||||
setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/HostMIDI.svg")));
|
||||
|
||||
addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, 0)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
|
||||
}
|
||||
|
||||
void draw(const DrawArgs& args) override
|
||||
{
|
||||
nvgBeginPath(args.vg);
|
||||
nvgRect(args.vg, 0, 0, box.size.x, box.size.y);
|
||||
nvgFillPaint(args.vg, nvgLinearGradient(args.vg, 0, 0, 0, box.size.y,
|
||||
nvgRGB(0x18, 0x19, 0x19), nvgRGB(0x21, 0x22, 0x22)));
|
||||
nvgFill(args.vg);
|
||||
|
||||
ModuleWidget::draw(args);
|
||||
}
|
||||
|
||||
void appendContextMenu(Menu* const menu) override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Model* modelHostMIDIGate = createModel<HostMIDIGate, HostMIDIGateWidget>("HostMIDIGate");
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
125
plugins/Cardinal/src/HostMIDI-Map.cpp
Normal file
125
plugins/Cardinal/src/HostMIDI-Map.cpp
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file contains a substantial amount of code from VCVRack's core/....cpp
|
||||
* Copyright (C) 2016-2021 VCV.
|
||||
*
|
||||
* 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 (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include "plugincontext.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
USE_NAMESPACE_DISTRHO;
|
||||
|
||||
struct HostMIDIMap : Module {
|
||||
enum ParamIds {
|
||||
NUM_PARAMS
|
||||
};
|
||||
enum InputIds {
|
||||
NUM_INPUTS
|
||||
};
|
||||
enum OutputIds {
|
||||
NUM_OUTPUTS
|
||||
};
|
||||
enum LightIds {
|
||||
NUM_LIGHTS
|
||||
};
|
||||
|
||||
CardinalPluginContext* const pcontext;
|
||||
|
||||
HostMIDIMap()
|
||||
: pcontext(static_cast<CardinalPluginContext*>(APP))
|
||||
{
|
||||
if (pcontext == nullptr)
|
||||
throw rack::Exception("Plugin context is null");
|
||||
|
||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS);
|
||||
}
|
||||
|
||||
void onReset() override
|
||||
{
|
||||
}
|
||||
|
||||
void process(const ProcessArgs& args) override
|
||||
{
|
||||
}
|
||||
|
||||
json_t* dataToJson() override
|
||||
{
|
||||
json_t* const rootJ = json_object();
|
||||
DISTRHO_SAFE_ASSERT_RETURN(rootJ != nullptr, nullptr);
|
||||
|
||||
return rootJ;
|
||||
}
|
||||
|
||||
void dataFromJson(json_t* rootJ) override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
struct HostMIDIMapWidget : ModuleWidget {
|
||||
static constexpr const float startX_In = 14.0f;
|
||||
static constexpr const float startX_Out = 96.0f;
|
||||
static constexpr const float startY = 74.0f;
|
||||
static constexpr const float padding = 29.0f;
|
||||
static constexpr const float middleX = startX_In + (startX_Out - startX_In) * 0.5f + padding * 0.35f;
|
||||
|
||||
HostMIDIMap* const module;
|
||||
|
||||
HostMIDIMapWidget(HostMIDIMap* const m)
|
||||
: module(m)
|
||||
{
|
||||
setModule(m);
|
||||
setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/HostMIDI.svg")));
|
||||
|
||||
addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, 0)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
|
||||
addChild(createWidget<ScrewBlack>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
|
||||
}
|
||||
|
||||
void draw(const DrawArgs& args) override
|
||||
{
|
||||
nvgBeginPath(args.vg);
|
||||
nvgRect(args.vg, 0, 0, box.size.x, box.size.y);
|
||||
nvgFillPaint(args.vg, nvgLinearGradient(args.vg, 0, 0, 0, box.size.y,
|
||||
nvgRGB(0x18, 0x19, 0x19), nvgRGB(0x21, 0x22, 0x22)));
|
||||
nvgFill(args.vg);
|
||||
|
||||
ModuleWidget::draw(args);
|
||||
}
|
||||
|
||||
void appendContextMenu(Menu* const menu) override
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Model* modelHostMIDIMap = createModel<HostMIDIMap, HostMIDIMapWidget>("HostMIDIMap");
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
|
@ -35,6 +35,9 @@ extern Model* modelHostAudio2;
|
|||
extern Model* modelHostAudio8;
|
||||
extern Model* modelHostCV;
|
||||
extern Model* modelHostMIDI;
|
||||
extern Model* modelHostMIDICC;
|
||||
extern Model* modelHostMIDIGate;
|
||||
extern Model* modelHostMIDIMap;
|
||||
extern Model* modelHostParameters;
|
||||
extern Model* modelHostTime;
|
||||
extern Model* modelIldaeil;
|
||||
|
|
|
@ -191,6 +191,9 @@ PLUGIN_FILES += Cardinal/src/glBars.cpp
|
|||
PLUGIN_FILES += Cardinal/src/HostAudio.cpp
|
||||
PLUGIN_FILES += Cardinal/src/HostCV.cpp
|
||||
PLUGIN_FILES += Cardinal/src/HostMIDI.cpp
|
||||
PLUGIN_FILES += Cardinal/src/HostMIDI-CC.cpp
|
||||
PLUGIN_FILES += Cardinal/src/HostMIDI-Gate.cpp
|
||||
PLUGIN_FILES += Cardinal/src/HostMIDI-Map.cpp
|
||||
PLUGIN_FILES += Cardinal/src/HostParameters.cpp
|
||||
PLUGIN_FILES += Cardinal/src/HostTime.cpp
|
||||
PLUGIN_FILES += Cardinal/src/TextEditor.cpp
|
||||
|
|
|
@ -721,6 +721,9 @@ static void initStatic__Cardinal()
|
|||
p->addModel(modelHostAudio8);
|
||||
p->addModel(modelHostCV);
|
||||
p->addModel(modelHostMIDI);
|
||||
p->addModel(modelHostMIDICC);
|
||||
p->addModel(modelHostMIDIGate);
|
||||
p->addModel(modelHostMIDIMap);
|
||||
p->addModel(modelHostParameters);
|
||||
p->addModel(modelHostTime);
|
||||
p->addModel(modelTextEditor);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue