Signed-off-by: falkTX <falktx@falktx.com>tags/22.02
| @@ -1 +1 @@ | |||||
| Subproject commit f56d13280baee304ebcb6eb92aaaa0409f8674a9 | |||||
| Subproject commit e9f41ad9979d35d7f747ec25652e5ff25da8e853 | |||||
| @@ -619,7 +619,14 @@ struct AudioFileWidget : ModuleWidget { | |||||
| DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AudioFileWidget) | DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AudioFileWidget) | ||||
| }; | }; | ||||
| #else | #else | ||||
| typedef ModuleWidget AudioFileWidget; | |||||
| struct AudioFileWidget : ModuleWidget { | |||||
| AudioFileWidget(CarlaInternalPluginModule* const module) { | |||||
| setModule(module); | |||||
| addOutput(createOutput<PJ301MPort>({}, module, 0)); | |||||
| addOutput(createOutput<PJ301MPort>({}, module, 1)); | |||||
| } | |||||
| }; | |||||
| #endif | #endif | ||||
| // -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -652,7 +652,17 @@ static void host_ui_closed(NativeHostHandle handle) | |||||
| } | } | ||||
| #else | #else | ||||
| static void host_ui_closed(NativeHostHandle) {} | static void host_ui_closed(NativeHostHandle) {} | ||||
| typedef ModuleWidget CarlaModuleWidget; | |||||
| struct CarlaModuleWidget : ModuleWidget { | |||||
| CarlaModuleWidget(CarlaModule* const module) { | |||||
| setModule(module); | |||||
| for (uint i=0; i<CarlaModule::NUM_INPUTS; ++i) | |||||
| addInput(createInput<PJ301MPort>({}, module, i)); | |||||
| for (uint i=0; i<CarlaModule::NUM_OUTPUTS; ++i) | |||||
| addOutput(createOutput<PJ301MPort>({}), module, i)); | |||||
| } | |||||
| }; | |||||
| #endif | #endif | ||||
| @@ -775,7 +775,17 @@ struct HostMIDICCWidget : ModuleWidget { | |||||
| } | } | ||||
| }; | }; | ||||
| #else | #else | ||||
| typedef ModuleWidget HostMIDICCWidget; | |||||
| struct HostMIDICCWidget : ModuleWidget { | |||||
| HostMIDICCWidget(HostMIDICC* const module) { | |||||
| setModule(module); | |||||
| for (int i=0; i<18; ++i) | |||||
| { | |||||
| addInput(createInput<PJ301MPort>({}, module, i)); | |||||
| addOutput(createOutput<PJ301MPort>({}, module, i)); | |||||
| } | |||||
| } | |||||
| }; | |||||
| #endif | #endif | ||||
| // -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -689,7 +689,17 @@ struct HostMIDIGateWidget : ModuleWidget { | |||||
| } | } | ||||
| }; | }; | ||||
| #else | #else | ||||
| typedef ModuleWidget HostMIDIGateWidget; | |||||
| struct HostMIDIGateWidget : ModuleWidget { | |||||
| HostMIDIGateWidget(HostMIDIGate* const module) { | |||||
| setModule(module); | |||||
| for (int i=0; i<18; ++i) | |||||
| { | |||||
| addInput(createInput<PJ301MPort>({}, module, i)); | |||||
| addOutput(createOutput<PJ301MPort>({}, module, i)); | |||||
| } | |||||
| } | |||||
| }; | |||||
| #endif | #endif | ||||
| // -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -734,7 +734,11 @@ struct HostMIDIMapWidget : ModuleWidget { | |||||
| } | } | ||||
| }; | }; | ||||
| #else | #else | ||||
| typedef ModuleWidget HostMIDIMapWidget; | |||||
| struct HostMIDIMapWidget : ModuleWidget { | |||||
| HostMIDIMapWidget(HostMIDIMap* const module) { | |||||
| setModule(module); | |||||
| } | |||||
| }; | |||||
| #endif | #endif | ||||
| // -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -35,19 +35,19 @@ struct HostParameters : Module { | |||||
| NUM_LIGHTS | NUM_LIGHTS | ||||
| }; | }; | ||||
| CardinalPluginContext* const pcontext; | |||||
| rack::dsp::SlewLimiter parameters[kModuleParameters]; | rack::dsp::SlewLimiter parameters[kModuleParameters]; | ||||
| bool parametersConnected[kModuleParameters] = {}; | bool parametersConnected[kModuleParameters] = {}; | ||||
| float sampleTime = 0.0f; | float sampleTime = 0.0f; | ||||
| HostParameters() | HostParameters() | ||||
| : pcontext(static_cast<CardinalPluginContext*>(APP)) | |||||
| { | { | ||||
| config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | |||||
| const CardinalPluginContext* const pcontext = static_cast<CardinalPluginContext*>(APP); | |||||
| if (pcontext == nullptr) | if (pcontext == nullptr) | ||||
| throw rack::Exception("Plugin context is null."); | throw rack::Exception("Plugin context is null."); | ||||
| config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | |||||
| const float fsampleRate = static_cast<float>(pcontext->sampleRate); | const float fsampleRate = static_cast<float>(pcontext->sampleRate); | ||||
| SampleRateChangeEvent e = { | SampleRateChangeEvent e = { | ||||
| fsampleRate, | fsampleRate, | ||||
| @@ -58,38 +58,32 @@ struct HostParameters : Module { | |||||
| void process(const ProcessArgs&) override | void process(const ProcessArgs&) override | ||||
| { | { | ||||
| if (const CardinalPluginContext* const pcontext = static_cast<CardinalPluginContext*>(APP)) | |||||
| for (uint32_t i=0; i<kModuleParameters; ++i) | |||||
| { | { | ||||
| for (uint32_t i=0; i<kModuleParameters; ++i) | |||||
| { | |||||
| const bool connected = outputs[i].isConnected(); | |||||
| const bool connected = outputs[i].isConnected(); | |||||
| if (parametersConnected[i] != connected) | |||||
| { | |||||
| parametersConnected[i] = connected; | |||||
| parameters[i].reset(); | |||||
| } | |||||
| if (connected) | |||||
| outputs[i].setVoltage(parameters[i].process(sampleTime, pcontext->parameters[i])); | |||||
| if (parametersConnected[i] != connected) | |||||
| { | |||||
| parametersConnected[i] = connected; | |||||
| parameters[i].reset(); | |||||
| } | } | ||||
| if (connected) | |||||
| outputs[i].setVoltage(parameters[i].process(sampleTime, pcontext->parameters[i])); | |||||
| } | } | ||||
| } | } | ||||
| void onSampleRateChange(const SampleRateChangeEvent& e) override | void onSampleRateChange(const SampleRateChangeEvent& e) override | ||||
| { | { | ||||
| if (const CardinalPluginContext* const pcontext = static_cast<CardinalPluginContext*>(APP)) | |||||
| { | |||||
| const double fall = 1.0 / (double(pcontext->bufferSize) / e.sampleRate); | |||||
| const double fall = 1.0 / (double(pcontext->bufferSize) / e.sampleRate); | |||||
| for (uint32_t i=0; i<kModuleParameters; ++i) | |||||
| { | |||||
| parameters[i].reset(); | |||||
| parameters[i].setRiseFall(fall, fall); | |||||
| } | |||||
| sampleTime = e.sampleTime; | |||||
| for (uint32_t i=0; i<kModuleParameters; ++i) | |||||
| { | |||||
| parameters[i].reset(); | |||||
| parameters[i].setRiseFall(fall, fall); | |||||
| } | } | ||||
| sampleTime = e.sampleTime; | |||||
| } | } | ||||
| }; | }; | ||||
| @@ -166,8 +160,14 @@ struct HostParametersWidget : ModuleWidget { | |||||
| } | } | ||||
| }; | }; | ||||
| #else | #else | ||||
| typedef ModuleWidget HostParametersWidget; | |||||
| #endif | |||||
| struct HostParametersWidget : ModuleWidget { | |||||
| HostParametersWidget(HostParameters* const module) { | |||||
| setModule(module); | |||||
| for (int i=0; i<24; ++i) | |||||
| addOutput(createOutput<PJ301MPort>({}, module, i)); | |||||
| } | |||||
| }; | |||||
| #endif | |||||
| Model* modelHostParameters = createModel<HostParameters, HostParametersWidget>("HostParameters"); | Model* modelHostParameters = createModel<HostParameters, HostParametersWidget>("HostParameters"); | ||||
| @@ -184,8 +184,6 @@ struct HostTimeWidget : ModuleWidget { | |||||
| nvgRoundedRect(vg, startX - 1.0f, y - 2.0f, box.size.x - (startX + 1) * 2, 28.0f, 4); | nvgRoundedRect(vg, startX - 1.0f, y - 2.0f, box.size.x - (startX + 1) * 2, 28.0f, 4); | ||||
| nvgFillColor(vg, nvgRGB(0xd0, 0xd0, 0xd0)); | nvgFillColor(vg, nvgRGB(0xd0, 0xd0, 0xd0)); | ||||
| nvgFill(vg); | nvgFill(vg); | ||||
| // nvgStrokeColor(vg, nvgRGBA(0x4a, 0x4a, 0x4a, 0xc0)); | |||||
| // nvgStroke(vg); | |||||
| nvgBeginPath(vg); | nvgBeginPath(vg); | ||||
| nvgFillColor(vg, color::BLACK); | nvgFillColor(vg, color::BLACK); | ||||
| nvgText(vg, startX + 36, y + 16, text, nullptr); | nvgText(vg, startX + 36, y + 16, text, nullptr); | ||||
| @@ -1714,7 +1714,23 @@ struct IldaeilModuleWidget : ModuleWidget { | |||||
| static void host_ui_parameter_changed(NativeHostHandle, uint32_t, float) {} | static void host_ui_parameter_changed(NativeHostHandle, uint32_t, float) {} | ||||
| static const char* host_ui_open_file(NativeHostHandle, bool, const char*, const char*) { return nullptr; } | static const char* host_ui_open_file(NativeHostHandle, bool, const char*, const char*) { return nullptr; } | ||||
| static void projectLoadedFromDSP(void*) {} | static void projectLoadedFromDSP(void*) {} | ||||
| typedef ModuleWidget IldaeilModuleWidget; | |||||
| struct IldaeilModuleWidget : ModuleWidget { | |||||
| IldaeilModuleWidget(HostParameters* const module) { | |||||
| setModule(module); | |||||
| addInput(createInput<PJ301MPort>(Vec(3, 54), module, IldaeilModule::INPUT1)); | |||||
| addInput(createInput<PJ301MPort>(Vec(3, 54 + 30), module, IldaeilModule::INPUT2)); | |||||
| addOutput(createOutput<PJ301MPort>(Vec(3, 54 + 60), module, IldaeilModule::OUTPUT1)); | |||||
| addOutput(createOutput<PJ301MPort>(Vec(3, 54 + 90), module, IldaeilModule::OUTPUT2)); | |||||
| addInput(createInput<PJ301MPort>(Vec(3, 54 + 135), module, IldaeilModule::PITCH_INPUT)); | |||||
| addInput(createInput<PJ301MPort>(Vec(3, 54 + 165), module, IldaeilModule::GATE_INPUT)); | |||||
| addInput(createInput<PJ301MPort>(Vec(3, 54 + 195), module, IldaeilModule::VEL_INPUT)); | |||||
| addInput(createInput<PJ301MPort>(Vec(3, 54 + 225), module, IldaeilModule::AFT_INPUT)); | |||||
| addInput(createInput<PJ301MPort>(Vec(3, 54 + 255), module, IldaeilModule::PW_INPUT)); | |||||
| addInput(createInput<PJ301MPort>(Vec(3, 54 + 285), module, IldaeilModule::MW_INPUT)); | |||||
| } | |||||
| }; | |||||
| #endif | #endif | ||||
| // -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -380,7 +380,11 @@ struct TextEditorModuleWidget : ModuleWidget { | |||||
| DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(TextEditorModuleWidget) | DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(TextEditorModuleWidget) | ||||
| }; | }; | ||||
| #else | #else | ||||
| typedef ModuleWidget TextEditorModuleWidget; | |||||
| struct TextEditorModuleWidget : ModuleWidget { | |||||
| TextEditorModuleWidget(TextEditorModule* const module) { | |||||
| setModule(module); | |||||
| } | |||||
| }; | |||||
| #endif | #endif | ||||
| // -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -160,7 +160,13 @@ struct glBarsWidget : ModuleWidget { | |||||
| } | } | ||||
| }; | }; | ||||
| #else | #else | ||||
| typedef ModuleWidget glBarsWidget; | |||||
| struct glBarsWidget : ModuleWidget { | |||||
| glBarsWidget(glBarsModule* const module) { | |||||
| setModule(module); | |||||
| addInput(createInput<PJ301MPort>({}, module, glBarsModule::IN1_INPUT)); | |||||
| } | |||||
| }; | |||||
| #endif | #endif | ||||
| Model* modelGlBars = createModel<glBarsModule, glBarsWidget>("glBars"); | Model* modelGlBars = createModel<glBarsModule, glBarsWidget>("glBars"); | ||||