Quick on here, I can compile but it core dump Rack when I try to load my plugin:
Rack: src/app/ModuleWidget.cpp:130: void rack::app::ModuleWidget::addOutput(rack::app::PortWidget*): Assertion `!output2' failed.
Aborted (core dumped)
code from the plugin:
#include "plugin.hpp"
struct Sun : Module {
float phase = 0.f;
enum ParamId {
VOLUME_PARAM,
PARAMS_LEN
};
enum InputId {
PITCH_INPUT,
INPUTS_LEN
};
enum OutputId {
LEFTOUT_OUTPUT,
OUTPUTS_LEN
};
enum LightId {
LIGHTS_LEN
};
Sun() {
config(PARAMS_LEN, INPUTS_LEN, OUTPUTS_LEN, LIGHTS_LEN);
configParam(VOLUME_PARAM, 0.f, 1.f, 0.f, "");
configParam(VOLUME_PARAM, 0.f, 1.f, 0.f, "");
configInput(PITCH_INPUT, "");
configOutput(LEFTOUT_OUTPUT, "");
}
void process(const ProcessArgs& args) override {
float pitch = 126.27;
float freq = dsp::FREQ_C4 * std::pow(2.f, pitch);
// Accumulate the phase
phase += freq * args.sampleTime;
if (phase >= 0.5f)
phase -= 1.f;
// Compute the sine output
float sine = std::sin(2.f * M_PI * phase);
// Audio signals are typically +/-5V
// https://vcvrack.com/manual/VoltageStandards
outputs[LEFTOUT_OUTPUT].setVoltage(5.f * sine);
}
};
struct SunWidget : ModuleWidget {
SunWidget(Sun* module) {
setModule(module);
setPanel(createPanel(asset::plugin(pluginInstance, "res/Sun.svg")));
addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
addParam(createParamCentered<RoundBlackKnob>(mm2px(Vec(5.211, 4.756)), module, Sun::VOLUME_PARAM));
addParam(createParamCentered<RoundBlackKnob>(mm2px(Vec(5.211, 14.308)), module, Sun::VOLUME_PARAM));
addInput(createInputCentered<PJ301MPort>(mm2px(Vec(3.723, 32.994)), module, Sun::PITCH_INPUT));
addOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(6.181, 32.994)), module, Sun::LEFTOUT_OUTPUT));
addOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(6.181, 35.953)), module, Sun::LEFTOUT_OUTPUT));
}
};
Model* modelSun = createModel<Sun, SunWidget>("Sun");