@@ -28,21 +28,27 @@ void ModeLight::step() { | |||
} | |||
struct AudibleInstrumentsPlugin : Plugin { | |||
AudibleInstrumentsPlugin() { | |||
slug = "AudibleInstruments"; | |||
name = "Audible Instruments"; | |||
createModel<BraidsWidget>(this, "Braids", "Macro Oscillator"); | |||
createModel<ElementsWidget>(this, "Elements", "Modal Synthesizer"); | |||
createModel<TidesWidget>(this, "Tides", "Tidal Modulator"); | |||
// createModel<StreamsWidget>(this, "Streams", "Dual Dynamics Gate"); | |||
createModel<CloudsWidget>(this, "Clouds", "Texture Synthesizer"); | |||
createModel<WarpsWidget>(this, "Warps", "Meta Modulator"); | |||
createModel<RingsWidget>(this, "Rings", "Resonator"); | |||
createModel<LinksWidget>(this, "Links", "Multiples"); | |||
createModel<KinksWidget>(this, "Kinks", "Utilities"); | |||
createModel<ShadesWidget>(this, "Shades", "Mixer"); | |||
createModel<BranchesWidget>(this, "Branches", "Bernoulli Gate"); | |||
createModel<BlindsWidget>(this, "Blinds", "Quad VC-polarizer"); | |||
createModel<VeilsWidget>(this, "Veils", "Quad VCA"); | |||
} | |||
}; | |||
Plugin *init() { | |||
Plugin *plugin = createPlugin("Audible Instruments", "Audible Instruments"); | |||
createModel<BraidsWidget>(plugin, "Braids", "Macro Oscillator"); | |||
createModel<ElementsWidget>(plugin, "Elements", "Modal Synthesizer"); | |||
createModel<TidesWidget>(plugin, "Tides", "Tidal Modulator"); | |||
// createModel<StreamsWidget>(plugin, "Streams", "Dual Dynamics Gate"); | |||
createModel<CloudsWidget>(plugin, "Clouds", "Texture Synthesizer"); | |||
createModel<WarpsWidget>(plugin, "Warps", "Meta Modulator"); | |||
createModel<RingsWidget>(plugin, "Rings", "Resonator"); | |||
createModel<LinksWidget>(plugin, "Links", "Multiples"); | |||
createModel<KinksWidget>(plugin, "Kinks", "Utilities"); | |||
createModel<ShadesWidget>(plugin, "Shades", "Mixer"); | |||
createModel<BranchesWidget>(plugin, "Branches", "Bernoulli Gate"); | |||
createModel<BlindsWidget>(plugin, "Blinds", "Quad VC-polarizer"); | |||
createModel<VeilsWidget>(plugin, "Veils", "Quad VCA"); | |||
return plugin; | |||
return new AudibleInstrumentsPlugin(); | |||
} |
@@ -1,24 +1,13 @@ | |||
#include "Rack.hpp" | |||
#include "rack.hpp" | |||
using namespace rack; | |||
//////////////////// | |||
// helpers | |||
//////////////////// | |||
struct AudiblePanel : ModulePanel { | |||
AudiblePanel() { | |||
backgroundColor = nvgRGBf(0.85, 0.85, 0.85); | |||
highlightColor = nvgRGBf(0.90, 0.90, 0.90); | |||
} | |||
}; | |||
//////////////////// | |||
// knobs | |||
//////////////////// | |||
struct AudibleKnob : Knob { | |||
struct AudibleKnob : SpriteKnob { | |||
AudibleKnob() { | |||
minIndex = 44; | |||
maxIndex = -46; | |||
@@ -31,7 +20,7 @@ struct HugeGlowKnob : AudibleKnob { | |||
box.size = Vec(91, 91); | |||
spriteOffset = Vec(-10, -9); | |||
spriteSize = Vec(110, 110); | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_huge_glow.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_huge_glow.png"); | |||
minIndex = 44+5; | |||
maxIndex = -46-5; | |||
} | |||
@@ -47,19 +36,19 @@ struct LargeKnob : AudibleKnob { | |||
struct LargeWhiteKnob : LargeKnob { | |||
LargeWhiteKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_large_white.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_large_white.png"); | |||
} | |||
}; | |||
struct LargeRedKnob : LargeKnob { | |||
LargeRedKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_large_red.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_large_red.png"); | |||
} | |||
}; | |||
struct LargeGreenKnob : LargeKnob { | |||
LargeGreenKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_large_green.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_large_green.png"); | |||
} | |||
}; | |||
@@ -73,19 +62,19 @@ struct MediumKnob : AudibleKnob { | |||
struct MediumWhiteKnob : MediumKnob { | |||
MediumWhiteKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_medium_white.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_medium_white.png"); | |||
} | |||
}; | |||
struct MediumRedKnob : MediumKnob { | |||
MediumRedKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_medium_red.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_medium_red.png"); | |||
} | |||
}; | |||
struct MediumGreenKnob : MediumKnob { | |||
MediumGreenKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_medium_green.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_medium_green.png"); | |||
} | |||
}; | |||
@@ -99,19 +88,19 @@ struct SmallKnob : AudibleKnob { | |||
struct SmallWhiteKnob : SmallKnob { | |||
SmallWhiteKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_small_white.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_small_white.png"); | |||
} | |||
}; | |||
struct SmallRedKnob : SmallKnob { | |||
SmallRedKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_small_red.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_small_red.png"); | |||
} | |||
}; | |||
struct SmallGreenKnob : SmallKnob { | |||
SmallGreenKnob() { | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_small_green.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_small_green.png"); | |||
} | |||
}; | |||
@@ -120,7 +109,7 @@ struct TinyBlackKnob : AudibleKnob { | |||
box.size = Vec(18, 18); | |||
spriteOffset = Vec(-5, -3); | |||
spriteSize = Vec(31, 30); | |||
spriteFilename = "plugins/AudibleInstruments/res/knob_tiny_black.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/knob_tiny_black.png"); | |||
} | |||
}; | |||
@@ -133,7 +122,7 @@ struct LargeSwitch : virtual Switch { | |||
box.size = Vec(27, 27); | |||
spriteOffset = Vec(-3, -2); | |||
spriteSize = Vec(36, 36); | |||
spriteFilename = "plugins/AudibleInstruments/res/button_large_black.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/button_large_black.png"); | |||
} | |||
}; | |||
@@ -142,7 +131,7 @@ struct MediumSwitch : virtual Switch { | |||
box.size = Vec(15, 15); | |||
spriteOffset = Vec(-4, -2); | |||
spriteSize = Vec(25, 25); | |||
spriteFilename = "plugins/AudibleInstruments/res/button_medium_black.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/button_medium_black.png"); | |||
} | |||
}; | |||
@@ -156,7 +145,7 @@ struct SlideSwitch : Switch { | |||
box.size = Vec(11, 21); | |||
spriteOffset = Vec(-1, -1); | |||
spriteSize = Vec(12, 22); | |||
spriteFilename = "plugins/AudibleInstruments/res/slide_switch.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/slide_switch.png"); | |||
} | |||
void step() { | |||
@@ -194,7 +183,7 @@ struct SmallLight : virtual Light { | |||
box.size = Vec(7, 7); | |||
spriteOffset = Vec(-16, -16); | |||
spriteSize = Vec(38, 38); | |||
spriteFilename = "plugins/AudibleInstruments/res/light_small.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/light_small.png"); | |||
} | |||
}; | |||
@@ -203,7 +192,7 @@ struct MediumLight : virtual Light { | |||
box.size = Vec(14, 14); | |||
spriteOffset = Vec(-16, -15); | |||
spriteSize = Vec(45, 45); | |||
spriteFilename = "plugins/AudibleInstruments/res/light_medium.png"; | |||
spriteImage = Image::load("plugins/AudibleInstruments/res/light_medium.png"); | |||
} | |||
}; | |||
@@ -88,8 +88,8 @@ BlindsWidget::BlindsWidget() : ModuleWidget(new Blinds()) { | |||
box.size = Vec(15*12, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Blinds.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Blinds.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -109,20 +109,20 @@ BlindsWidget::BlindsWidget() : ModuleWidget(new Blinds()) { | |||
addParam(createParam<TinyBlackKnob>(Vec(72, 221), module, Blinds::MOD3_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(72, 300), module, Blinds::MOD4_PARAM, -1.0, 1.0, 0.0)); | |||
addInput(createInput(Vec(112, 43), module, Blinds::IN1_INPUT)); | |||
addInput(createInput(Vec(112, 122), module, Blinds::IN2_INPUT)); | |||
addInput(createInput(Vec(112, 200), module, Blinds::IN3_INPUT)); | |||
addInput(createInput(Vec(112, 279), module, Blinds::IN4_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 38), module, Blinds::IN1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 117), module, Blinds::IN2_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 195), module, Blinds::IN3_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 274), module, Blinds::IN4_INPUT)); | |||
addInput(createInput(Vec(112, 82), module, Blinds::CV1_INPUT)); | |||
addInput(createInput(Vec(112, 161), module, Blinds::CV2_INPUT)); | |||
addInput(createInput(Vec(112, 240), module, Blinds::CV3_INPUT)); | |||
addInput(createInput(Vec(112, 318), module, Blinds::CV4_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 77), module, Blinds::CV1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 156), module, Blinds::CV2_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 235), module, Blinds::CV3_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 313), module, Blinds::CV4_INPUT)); | |||
addOutput(createOutput(Vec(146, 43), module, Blinds::OUT1_OUTPUT)); | |||
addOutput(createOutput(Vec(146, 122), module, Blinds::OUT2_OUTPUT)); | |||
addOutput(createOutput(Vec(146, 200), module, Blinds::OUT3_OUTPUT)); | |||
addOutput(createOutput(Vec(146, 279), module, Blinds::OUT4_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(141, 38), module, Blinds::OUT1_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(141, 117), module, Blinds::OUT2_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(141, 195), module, Blinds::OUT3_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(141, 274), module, Blinds::OUT4_OUTPUT)); | |||
Blinds *blinds = dynamic_cast<Blinds*>(module); | |||
addChild(createValueLight<MediumValueLight>(Vec(149, 86), &blinds->lights[0])); | |||
@@ -91,7 +91,7 @@ void Braids::step() { | |||
for (int i = 0; i < 24; i++) { | |||
in[i] = render_buffer[i] / 32768.0; | |||
} | |||
src.setRatio(gRack->sampleRate / 96000.0); | |||
src.setRatio(gSampleRate / 96000.0); | |||
int inLen = 24; | |||
int outLen = outputBuffer.capacity(); | |||
@@ -157,12 +157,17 @@ static const char *algo_values[] = { | |||
struct BraidsDisplay : TransparentWidget { | |||
float *value; | |||
std::shared_ptr<Font> font; | |||
BraidsDisplay() { | |||
font = Font::load("plugins/AudibleInstruments/res/hdad-segment14-1.002/Segment14.ttf"); | |||
} | |||
void draw(NVGcontext *vg) { | |||
int shape = roundf(getf(value)); | |||
int font = loadFont("plugins/AudibleInstruments/res/hdad-segment14-1.002/Segment14.ttf"); | |||
nvgFontSize(vg, 36); | |||
nvgFontFaceId(vg, font); | |||
nvgFontFaceId(vg, font->handle); | |||
nvgTextLetterSpacing(vg, 2.5); | |||
NVGcolor color = nvgRGB(0xaf, 0xd2, 0x2c); | |||
@@ -178,8 +183,8 @@ BraidsWidget::BraidsWidget() : ModuleWidget(new Braids()) { | |||
box.size = Vec(15*16, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Braids.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Braids.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -198,18 +203,18 @@ BraidsWidget::BraidsWidget() : ModuleWidget(new Braids()) { | |||
addParam(createParam<MediumWhiteKnob>(Vec(187-10, 71-11), module, Braids::SHAPE_PARAM, 0.0, braids::MACRO_OSC_SHAPE_LAST-2, 0.0)); | |||
addParam(createParam<MediumWhiteKnob>(Vec(30-10, 150-11), module, Braids::FINE_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<MediumWhiteKnob>(Vec(108-10, 150-11), module, Braids::COARSE_PARAM, -2.0, 2.0, 0.0)); | |||
addParam(createParam<MediumWhiteKnob>(Vec(187-10, 150-11), module, Braids::FM_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<MediumWhiteKnob>(Vec(20, 139), module, Braids::FINE_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<MediumWhiteKnob>(Vec(98, 139), module, Braids::COARSE_PARAM, -2.0, 2.0, 0.0)); | |||
addParam(createParam<MediumWhiteKnob>(Vec(177, 139), module, Braids::FM_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<MediumGreenKnob>(Vec(30-10, 229-11), module, Braids::TIMBRE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<MediumGreenKnob>(Vec(108-10, 229-11), module, Braids::MODULATION_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<MediumRedKnob>(Vec(187-10, 229-11), module, Braids::COLOR_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<MediumGreenKnob>(Vec(20, 218), module, Braids::TIMBRE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<MediumGreenKnob>(Vec(98, 218), module, Braids::MODULATION_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<MediumRedKnob>(Vec(177, 218), module, Braids::COLOR_PARAM, 0.0, 1.0, 0.5)); | |||
addInput(createInput(Vec(12, 318), module, Braids::TRIG_INPUT)); | |||
addInput(createInput(Vec(50, 318), module, Braids::PITCH_INPUT)); | |||
addInput(createInput(Vec(87, 318), module, Braids::FM_INPUT)); | |||
addInput(createInput(Vec(125, 318), module, Braids::TIMBRE_INPUT)); | |||
addInput(createInput(Vec(162, 318), module, Braids::COLOR_INPUT)); | |||
addOutput(createOutput(Vec(207, 318), module, Braids::OUT_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(7, 313), module, Braids::TRIG_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(45, 313), module, Braids::PITCH_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(82, 313), module, Braids::FM_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(120, 313), module, Braids::TIMBRE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(157, 313), module, Braids::COLOR_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(202, 313), module, Braids::OUT_OUTPUT)); | |||
} |
@@ -77,8 +77,8 @@ BranchesWidget::BranchesWidget() : ModuleWidget(new Branches()) { | |||
box.size = Vec(15*6, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Branches.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Branches.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -86,19 +86,19 @@ BranchesWidget::BranchesWidget() : ModuleWidget(new Branches()) { | |||
addChild(createScrew(Vec(15, 0))); | |||
addChild(createScrew(Vec(15, 365))); | |||
addParam(createParam<SmallRedKnob>(Vec(44-20, 84-20), module, Branches::THRESHOLD1_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallRedKnob>(Vec(24, 64), module, Branches::THRESHOLD1_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<MediumToggleSwitch>(Vec(69, 58), module, Branches::MODE1_PARAM, 0.0, 1.0, 0.0)); | |||
addInput(createInput(Vec(11, 125-1), module, Branches::IN1_INPUT)); | |||
addInput(createInput(Vec(58, 125-1), module, Branches::P1_INPUT)); | |||
addOutput(createOutput(Vec(11, 163-1), module, Branches::OUT1A_OUTPUT)); | |||
addOutput(createOutput(Vec(58, 163-1), module, Branches::OUT1B_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(5, 119), module, Branches::IN1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(52, 119), module, Branches::P1_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(5, 157), module, Branches::OUT1A_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(52, 157), module, Branches::OUT1B_OUTPUT)); | |||
addParam(createParam<SmallGreenKnob>(Vec(44-20, 240-20), module, Branches::THRESHOLD2_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallGreenKnob>(Vec(24, 220), module, Branches::THRESHOLD2_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<MediumToggleSwitch>(Vec(69, 214), module, Branches::MODE2_PARAM, 0.0, 1.0, 0.0)); | |||
addInput(createInput(Vec(11, 281-1), module, Branches::IN2_INPUT)); | |||
addInput(createInput(Vec(58, 281-1), module, Branches::P2_INPUT)); | |||
addOutput(createOutput(Vec(11, 319-1), module, Branches::OUT2A_OUTPUT)); | |||
addOutput(createOutput(Vec(58, 319-1), module, Branches::OUT2B_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(5, 275), module, Branches::IN2_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(52, 275), module, Branches::P2_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(5, 313), module, Branches::OUT2A_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(52, 313), module, Branches::OUT2B_OUTPUT)); | |||
Branches *branches = dynamic_cast<Branches*>(module); | |||
addChild(createValueLight<SmallValueLight>(Vec(42, 170), &branches->light[0])); | |||
@@ -91,7 +91,7 @@ void Clouds::step() { | |||
clouds::ShortFrame input[32] = {}; | |||
// Convert input buffer | |||
{ | |||
inputSrc.setRatio(32000.0 / gRack->sampleRate); | |||
inputSrc.setRatio(32000.0 / gSampleRate); | |||
Frame<2> inputFrames[32]; | |||
int inLen = inputBuffer.size(); | |||
int outLen = 32; | |||
@@ -137,7 +137,7 @@ void Clouds::step() { | |||
outputFrames[i].samples[1] = output[i].r / 32768.0; | |||
} | |||
outputSrc.setRatio(gRack->sampleRate / 32000.0); | |||
outputSrc.setRatio(gSampleRate / 32000.0); | |||
int inLen = 32; | |||
int outLen = outputBuffer.capacity(); | |||
outputSrc.process((const float*) outputFrames, &inLen, (float*) outputBuffer.endData(), &outLen); | |||
@@ -160,8 +160,8 @@ CloudsWidget::CloudsWidget() : ModuleWidget(new Clouds()) { | |||
box.size = Vec(15*18, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Clouds.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Clouds.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -175,26 +175,26 @@ CloudsWidget::CloudsWidget() : ModuleWidget(new Clouds()) { | |||
// addParam(createParam<MediumMomentarySwitch>(Vec(211, 51), module, Clouds::POSITION_PARAM, 0.0, 1.0, 0.5)); | |||
// addParam(createParam<MediumMomentarySwitch>(Vec(239, 51), module, Clouds::POSITION_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeRedKnob>(Vec(42-14, 108-14), module, Clouds::POSITION_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeGreenKnob>(Vec(123-14, 108-14), module, Clouds::SIZE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeWhiteKnob>(Vec(205-14, 108-14), module, Clouds::PITCH_PARAM, -2.0, 2.0, 0.0)); | |||
addParam(createParam<SmallRedKnob>(Vec(25-10, 191-10), module, Clouds::IN_GAIN_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallRedKnob>(Vec(92-10, 191-10), module, Clouds::DENSITY_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallGreenKnob>(Vec(157-10, 191-10), module, Clouds::TEXTURE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(224-10, 191-10), module, Clouds::BLEND_PARAM, 0.0, 1.0, 0.5)); | |||
addInput(createInput(Vec(17, 275), module, Clouds::FREEZE_INPUT)); | |||
addInput(createInput(Vec(60, 275), module, Clouds::TRIG_INPUT)); | |||
addInput(createInput(Vec(103, 275), module, Clouds::POSITION_INPUT)); | |||
addInput(createInput(Vec(146, 275), module, Clouds::SIZE_INPUT)); | |||
addInput(createInput(Vec(190, 275), module, Clouds::PITCH_INPUT)); | |||
addInput(createInput(Vec(233, 275), module, Clouds::BLEND_INPUT)); | |||
addInput(createInput(Vec(17, 318), module, Clouds::IN_L_INPUT)); | |||
addInput(createInput(Vec(60, 318), module, Clouds::IN_R_INPUT)); | |||
addInput(createInput(Vec(103, 318), module, Clouds::DENSITY_INPUT)); | |||
addInput(createInput(Vec(146, 318), module, Clouds::TEXTURE_INPUT)); | |||
addOutput(createOutput(Vec(190, 318), module, Clouds::OUT_L_OUTPUT)); | |||
addOutput(createOutput(Vec(233, 318), module, Clouds::OUT_R_OUTPUT)); | |||
addParam(createParam<LargeRedKnob>(Vec(28, 94), module, Clouds::POSITION_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeGreenKnob>(Vec(109, 94), module, Clouds::SIZE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeWhiteKnob>(Vec(191, 94), module, Clouds::PITCH_PARAM, -2.0, 2.0, 0.0)); | |||
addParam(createParam<SmallRedKnob>(Vec(15, 181), module, Clouds::IN_GAIN_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallRedKnob>(Vec(82, 181), module, Clouds::DENSITY_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallGreenKnob>(Vec(147, 181), module, Clouds::TEXTURE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(214, 181), module, Clouds::BLEND_PARAM, 0.0, 1.0, 0.5)); | |||
addInput(createInput<InputPortPJ3410>(Vec(11, 270), module, Clouds::FREEZE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(54, 270), module, Clouds::TRIG_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(97, 270), module, Clouds::POSITION_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(140, 270), module, Clouds::SIZE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(184, 270), module, Clouds::PITCH_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(227, 270), module, Clouds::BLEND_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(11, 313), module, Clouds::IN_L_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(54, 313), module, Clouds::IN_R_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(97, 313), module, Clouds::DENSITY_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(140, 313), module, Clouds::TEXTURE_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(184, 313), module, Clouds::OUT_L_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(227, 313), module, Clouds::OUT_R_OUTPUT)); | |||
} |
@@ -117,7 +117,7 @@ void Elements::step() { | |||
// Convert input buffer | |||
{ | |||
inputSrc.setRatio(32000.0 / gRack->sampleRate); | |||
inputSrc.setRatio(32000.0 / gSampleRate); | |||
Frame<2> inputFrames[16]; | |||
int inLen = inputBuffer.size(); | |||
int outLen = 16; | |||
@@ -168,7 +168,7 @@ void Elements::step() { | |||
outputFrames[i].samples[1] = aux[i]; | |||
} | |||
outputSrc.setRatio(gRack->sampleRate / 32000.0); | |||
outputSrc.setRatio(gSampleRate / 32000.0); | |||
int inLen = 16; | |||
int outLen = outputBuffer.capacity(); | |||
outputSrc.process((float*) outputFrames, &inLen, (float*) outputBuffer.endData(), &outLen); | |||
@@ -193,8 +193,8 @@ ElementsWidget::ElementsWidget() : ModuleWidget(new Elements()) { | |||
box.size = Vec(15*34, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Elements.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Elements.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -204,60 +204,59 @@ ElementsWidget::ElementsWidget() : ModuleWidget(new Elements()) { | |||
addChild(createScrew(Vec(15, 365))); | |||
addChild(createScrew(Vec(480, 365))); | |||
addParam(createParam<SmallWhiteKnob>(Vec(49-20, 63-20), module, Elements::CONTOUR_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(120-20, 63-20), module, Elements::BOW_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallRedKnob>(Vec(190-20, 63-20), module, Elements::BLOW_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallGreenKnob>(Vec(260-20, 63-20), module, Elements::STRIKE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(331-20, 63-20), module, Elements::COARSE_PARAM, -30.0, 30.0, 0.0)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(402-20, 63-20), module, Elements::FINE_PARAM, -2.0, 2.0, 0.0)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(472-20, 63-20), module, Elements::FM_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<LargeRedKnob>(Vec(142-26, 143-26), module, Elements::FLOW_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeGreenKnob>(Vec(239-26, 143-26), module, Elements::MALLET_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeWhiteKnob>(Vec(353-26, 143-26), module, Elements::GEOMETRY_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeWhiteKnob>(Vec(450-26, 143-26), module, Elements::BRIGHTNESS_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(120-20, 223-20), module, Elements::BOW_TIMBRE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallRedKnob>(Vec(191-20, 223-20), module, Elements::BLOW_TIMBRE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallGreenKnob>(Vec(260-20, 223-20), module, Elements::STRIKE_TIMBRE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(331-20, 223-20), module, Elements::DAMPING_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(401-20, 223-20), module, Elements::POSITION_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(472-20, 223-20), module, Elements::SPACE_PARAM, 0.0, 2.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(113-9, 283-9), module, Elements::BOW_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(152-9, 283-9), module, Elements::FLOW_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(190-9, 283-9), module, Elements::BLOW_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(229-9, 283-9), module, Elements::MALLET_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(267-9, 283-9), module, Elements::STRIKE_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(325-9, 283-9), module, Elements::DAMPING_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(363-9, 283-9), module, Elements::GEOMETRY_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(402-9, 283-9), module, Elements::POSITION_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(440-9, 283-9), module, Elements::BRIGHTNESS_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(479-9, 283-9), module, Elements::SPACE_MOD_PARAM, -2.0, 2.0, 0.0)); | |||
addInput(createInput(Vec(32-10, 190-10), module, Elements::NOTE_INPUT)); | |||
addInput(createInput(Vec(68-10, 190-10), module, Elements::FM_INPUT)); | |||
addInput(createInput(Vec(32-10, 236-10), module, Elements::GATE_INPUT)); | |||
addInput(createInput(Vec(68-10, 236-10), module, Elements::STRENGTH_INPUT)); | |||
addInput(createInput(Vec(32-10, 282-10), module, Elements::BLOW_INPUT)); | |||
addInput(createInput(Vec(68-10, 282-10), module, Elements::STRIKE_INPUT)); | |||
addOutput(createOutput(Vec(32-10, 328-10), module, Elements::AUX_OUTPUT)); | |||
addOutput(createOutput(Vec(68-10, 328-10), module, Elements::MAIN_OUTPUT)); | |||
addInput(createInput(Vec(113-10, 328-10), module, Elements::BOW_TIMBRE_MOD_INPUT)); | |||
addInput(createInput(Vec(152-10, 328-10), module, Elements::FLOW_MOD_INPUT)); | |||
addInput(createInput(Vec(190-10, 328-10), module, Elements::BLOW_TIMBRE_MOD_INPUT)); | |||
addInput(createInput(Vec(229-10, 328-10), module, Elements::MALLET_MOD_INPUT)); | |||
addInput(createInput(Vec(267-10, 328-10), module, Elements::STRIKE_TIMBRE_MOD_INPUT)); | |||
addInput(createInput(Vec(325-10, 328-10), module, Elements::DAMPING_MOD_INPUT)); | |||
addInput(createInput(Vec(363-10, 328-10), module, Elements::GEOMETRY_MOD_INPUT)); | |||
addInput(createInput(Vec(402-10, 328-10), module, Elements::POSITION_MOD_INPUT)); | |||
addInput(createInput(Vec(440-10, 328-10), module, Elements::BRIGHTNESS_MOD_INPUT)); | |||
addInput(createInput(Vec(479-10, 328-10), module, Elements::SPACE_MOD_INPUT)); | |||
// addInputPort(createInputPort(Vec(479-10, 328-10), module, Elements::SPACE_MOD_INPUT)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(29, 43), module, Elements::CONTOUR_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(100, 43), module, Elements::BOW_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallRedKnob>(Vec(170, 43), module, Elements::BLOW_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallGreenKnob>(Vec(240, 43), module, Elements::STRIKE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(311, 43), module, Elements::COARSE_PARAM, -30.0, 30.0, 0.0)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(382, 43), module, Elements::FINE_PARAM, -2.0, 2.0, 0.0)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(452, 43), module, Elements::FM_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<LargeRedKnob>(Vec(116, 117), module, Elements::FLOW_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeGreenKnob>(Vec(213, 117), module, Elements::MALLET_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeWhiteKnob>(Vec(327, 117), module, Elements::GEOMETRY_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<LargeWhiteKnob>(Vec(424, 117), module, Elements::BRIGHTNESS_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(100, 203), module, Elements::BOW_TIMBRE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallRedKnob>(Vec(171, 203), module, Elements::BLOW_TIMBRE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallGreenKnob>(Vec(240, 203), module, Elements::STRIKE_TIMBRE_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(311, 203), module, Elements::DAMPING_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(381, 203), module, Elements::POSITION_PARAM, 0.0, 1.0, 0.5)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(452, 203), module, Elements::SPACE_PARAM, 0.0, 2.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(104, 274), module, Elements::BOW_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(143, 274), module, Elements::FLOW_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(181, 274), module, Elements::BLOW_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(220, 274), module, Elements::MALLET_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(258, 274), module, Elements::STRIKE_TIMBRE_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(316, 274), module, Elements::DAMPING_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(354, 274), module, Elements::GEOMETRY_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(393, 274), module, Elements::POSITION_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(431, 274), module, Elements::BRIGHTNESS_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(470, 274), module, Elements::SPACE_MOD_PARAM, -2.0, 2.0, 0.0)); | |||
addInput(createInput<InputPortPJ3410>(Vec(16, 175), module, Elements::NOTE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(52, 175), module, Elements::FM_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(16, 221), module, Elements::GATE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(52, 221), module, Elements::STRENGTH_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(16, 267), module, Elements::BLOW_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(52, 267), module, Elements::STRIKE_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(16, 313), module, Elements::AUX_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(52, 313), module, Elements::MAIN_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(97, 313), module, Elements::BOW_TIMBRE_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(136, 313), module, Elements::FLOW_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(174, 313), module, Elements::BLOW_TIMBRE_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(213, 313), module, Elements::MALLET_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(251, 313), module, Elements::STRIKE_TIMBRE_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(309, 313), module, Elements::DAMPING_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(347, 313), module, Elements::GEOMETRY_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(386, 313), module, Elements::POSITION_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(424, 313), module, Elements::BRIGHTNESS_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(463, 313), module, Elements::SPACE_MOD_INPUT)); | |||
addParam(createParam<LargeMomentarySwitch>(Vec(36, 116), module, Elements::PLAY_PARAM, 0.0, 2.0, 0.0)); | |||
@@ -49,7 +49,7 @@ void Kinks::step() { | |||
// S&H | |||
float trig = getf(inputs[TRIG_INPUT]); | |||
float dtrig = (trig - lastTrig) * gRack->sampleRate; | |||
float dtrig = (trig - lastTrig) * gSampleRate; | |||
if (dtrig > DTRIG) { | |||
sample = getf(inputs[SH_INPUT], noise); | |||
} | |||
@@ -89,8 +89,8 @@ KinksWidget::KinksWidget() : ModuleWidget(new Kinks()) { | |||
box.size = Vec(15*4, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Kinks.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Kinks.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -98,20 +98,20 @@ KinksWidget::KinksWidget() : ModuleWidget(new Kinks()) { | |||
addChild(createScrew(Vec(15, 0))); | |||
addChild(createScrew(Vec(15, 365))); | |||
addInput(createInput(Vec(6-1, 78-1), module, Kinks::SIGN_INPUT)); | |||
addOutput(createOutput(Vec(34-1, 78-1), module, Kinks::INVERT_OUTPUT)); | |||
addOutput(createOutput(Vec(6-1, 116-1), module, Kinks::HALF_RECTIFY_OUTPUT)); | |||
addOutput(createOutput(Vec(34-1, 116-1), module, Kinks::FULL_RECTIFY_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(0, 72), module, Kinks::SIGN_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(29, 72), module, Kinks::INVERT_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(0, 110), module, Kinks::HALF_RECTIFY_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(29, 110), module, Kinks::FULL_RECTIFY_OUTPUT)); | |||
addInput(createInput(Vec(6-1, 180-1), module, Kinks::LOGIC_A_INPUT)); | |||
addInput(createInput(Vec(34-1, 180-1), module, Kinks::LOGIC_B_INPUT)); | |||
addOutput(createOutput(Vec(6-1, 217-1), module, Kinks::MAX_OUTPUT)); | |||
addOutput(createOutput(Vec(34-1, 217-1), module, Kinks::MIN_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(0, 174), module, Kinks::LOGIC_A_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(29, 174), module, Kinks::LOGIC_B_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(0, 211), module, Kinks::MAX_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(29, 211), module, Kinks::MIN_OUTPUT)); | |||
addInput(createInput(Vec(6-1, 281-1), module, Kinks::SH_INPUT)); | |||
addInput(createInput(Vec(34-1, 281-1), module, Kinks::TRIG_INPUT)); | |||
addOutput(createOutput(Vec(6-1, 319-1), module, Kinks::NOISE_OUTPUT)); | |||
addOutput(createOutput(Vec(34-1, 319-1), module, Kinks::SH_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(0, 275), module, Kinks::SH_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(29, 275), module, Kinks::TRIG_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(0, 313), module, Kinks::NOISE_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(29, 313), module, Kinks::SH_OUTPUT)); | |||
Kinks *kinks = dynamic_cast<Kinks*>(module); | |||
addChild(createValueLight<SmallValueLight>(Vec(12, 61), &kinks->lights[0])); | |||
@@ -58,8 +58,8 @@ LinksWidget::LinksWidget() : ModuleWidget(new Links()) { | |||
box.size = Vec(15*4, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Links.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Links.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -67,20 +67,20 @@ LinksWidget::LinksWidget() : ModuleWidget(new Links()) { | |||
addChild(createScrew(Vec(15, 0))); | |||
addChild(createScrew(Vec(15, 365))); | |||
addInput(createInput(Vec(6-1, 78-1), module, Links::A1_INPUT)); | |||
addOutput(createOutput(Vec(34-1, 78-1), module, Links::A1_OUTPUT)); | |||
addOutput(createOutput(Vec(6-1, 116-1), module, Links::A2_OUTPUT)); | |||
addOutput(createOutput(Vec(34-1, 116-1), module, Links::A3_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(0, 72), module, Links::A1_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(29, 72), module, Links::A1_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(0, 110), module, Links::A2_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(29, 110), module, Links::A3_OUTPUT)); | |||
addInput(createInput(Vec(6-1, 180-1), module, Links::B1_INPUT)); | |||
addInput(createInput(Vec(34-1, 180-1), module, Links::B2_INPUT)); | |||
addOutput(createOutput(Vec(6-1, 217-1), module, Links::B1_OUTPUT)); | |||
addOutput(createOutput(Vec(34-1, 217-1), module, Links::B2_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(0, 174), module, Links::B1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(29, 174), module, Links::B2_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(0, 211), module, Links::B1_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(29, 211), module, Links::B2_OUTPUT)); | |||
addInput(createInput(Vec(6-1, 281-1), module, Links::C1_INPUT)); | |||
addInput(createInput(Vec(34-1, 281-1), module, Links::C2_INPUT)); | |||
addInput(createInput(Vec(6-1, 319-1), module, Links::C3_INPUT)); | |||
addOutput(createOutput(Vec(34-1, 319-1), module, Links::C1_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(0, 275), module, Links::C1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(29, 275), module, Links::C2_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(0, 313), module, Links::C3_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(29, 313), module, Links::C1_OUTPUT)); | |||
Links *links = dynamic_cast<Links*>(module); | |||
addChild(createValueLight<SmallValueLight>(Vec(26, 61), &links->lights[0])); | |||
@@ -95,7 +95,7 @@ void Rings::step() { | |||
float in[24] = {}; | |||
// Convert input buffer | |||
{ | |||
inputSrc.setRatio(48000.0 / gRack->sampleRate); | |||
inputSrc.setRatio(48000.0 / gSampleRate); | |||
int inLen = inputBuffer.size(); | |||
int outLen = 24; | |||
inputSrc.process(inputBuffer.startData(), &inLen, (float*) in, &outLen); | |||
@@ -169,7 +169,7 @@ void Rings::step() { | |||
outputFrames[i].samples[1] = aux[i]; | |||
} | |||
outputSrc.setRatio(gRack->sampleRate / 48000.0); | |||
outputSrc.setRatio(gSampleRate / 48000.0); | |||
int inLen = 24; | |||
int outLen = outputBuffer.capacity(); | |||
outputSrc.process((const float*) outputFrames, &inLen, (float*) outputBuffer.endData(), &outLen); | |||
@@ -199,8 +199,8 @@ RingsWidget::RingsWidget() : ModuleWidget(new Rings()) { | |||
box.size = Vec(15*14, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Rings.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Rings.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -226,17 +226,17 @@ RingsWidget::RingsWidget() : ModuleWidget(new Rings()) { | |||
addParam(createParam<TinyBlackKnob>(Vec(134, 229), module, Rings::STRUCTURE_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(172, 229), module, Rings::POSITION_MOD_PARAM, -1.0, 1.0, 0.0)); | |||
addInput(createInput(Vec(18, 275), module, Rings::BRIGHTNESS_MOD_INPUT)); | |||
addInput(createInput(Vec(56, 275), module, Rings::FREQUENCY_MOD_INPUT)); | |||
addInput(createInput(Vec(95, 275), module, Rings::DAMPING_MOD_INPUT)); | |||
addInput(createInput(Vec(133, 275), module, Rings::STRUCTURE_MOD_INPUT)); | |||
addInput(createInput(Vec(171, 275), module, Rings::POSITION_MOD_INPUT)); | |||
addInput(createInput(Vec(18, 318), module, Rings::STRUM_INPUT)); | |||
addInput(createInput(Vec(56, 318), module, Rings::PITCH_INPUT)); | |||
addInput(createInput(Vec(95, 318), module, Rings::IN_INPUT)); | |||
addOutput(createOutput(Vec(133, 318), module, Rings::ODD_OUTPUT)); | |||
addOutput(createOutput(Vec(171, 318), module, Rings::EVEN_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(12, 270), module, Rings::BRIGHTNESS_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(51, 270), module, Rings::FREQUENCY_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(89, 270), module, Rings::DAMPING_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(128, 270), module, Rings::STRUCTURE_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(166, 270), module, Rings::POSITION_MOD_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(12, 313), module, Rings::STRUM_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(51, 313), module, Rings::PITCH_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(89, 313), module, Rings::IN_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(128, 313), module, Rings::ODD_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(166, 313), module, Rings::EVEN_OUTPUT)); | |||
Rings *rings = dynamic_cast<Rings*>(module); | |||
addChild(createValueLight<SmallModeLight>(Vec(39, 45), &rings->params[Rings::POLYPHONY_PARAM])); | |||
@@ -79,8 +79,8 @@ ShadesWidget::ShadesWidget() : ModuleWidget(new Shades()) { | |||
box.size = Vec(15*6, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Shades.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Shades.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -96,13 +96,13 @@ ShadesWidget::ShadesWidget() : ModuleWidget(new Shades()) { | |||
addParam(createParam<SlideSwitch>(Vec(11, 118), module, Shades::MODE2_PARAM, 0.0, 1.0, 0.0)); | |||
addParam(createParam<SlideSwitch>(Vec(11, 184), module, Shades::MODE3_PARAM, 0.0, 1.0, 0.0)); | |||
addInput(createInput(Vec(11, 247), module, Shades::IN1_INPUT)); | |||
addInput(createInput(Vec(11, 283), module, Shades::IN2_INPUT)); | |||
addInput(createInput(Vec(11, 319), module, Shades::IN3_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(5, 242), module, Shades::IN1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(5, 278), module, Shades::IN2_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(5, 314), module, Shades::IN3_INPUT)); | |||
addOutput(createOutput(Vec(58, 247), module, Shades::OUT1_OUTPUT)); | |||
addOutput(createOutput(Vec(58, 283), module, Shades::OUT2_OUTPUT)); | |||
addOutput(createOutput(Vec(58, 319), module, Shades::OUT3_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(52, 242), module, Shades::OUT1_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(52, 278), module, Shades::OUT2_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(52, 314), module, Shades::OUT3_OUTPUT)); | |||
Shades *shades = dynamic_cast<Shades*>(module); | |||
addChild(createValueLight<SmallValueLight>(Vec(42, 256), &shades->lights[0])); | |||
@@ -50,8 +50,8 @@ StreamsWidget::StreamsWidget() : ModuleWidget(new Streams()) { | |||
box.size = Vec(15*12, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Streams.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Streams.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -68,15 +68,15 @@ StreamsWidget::StreamsWidget() : ModuleWidget(new Streams()) { | |||
// addParam(createParam<TinyBlackKnob>(Vec(15, 214), module, Streams::LEVEL1_PARAM, 0.0, 1.0, 1.0)); | |||
// addParam(createParam<TinyBlackKnob>(Vec(53, 214), module, Streams::LEVEL2_PARAM, 0.0, 1.0, 1.0)); | |||
// addInput(createInput(Vec(11, 275), module, Streams::LEVEL1_INPUT)); | |||
// addInput(createInput(Vec(47, 275), module, Streams::LEVEL2_INPUT)); | |||
// addInput(createInput(Vec(83, 275), module, Streams::ALGORITHM_INPUT)); | |||
// addInput(createInput(Vec(119, 275), module, Streams::TIMBRE_INPUT)); | |||
// addInput(createInput<InputPortPJ3410>(Vec(11, 275), module, Streams::LEVEL1_INPUT)); | |||
// addInput(createInput<InputPortPJ3410>(Vec(47, 275), module, Streams::LEVEL2_INPUT)); | |||
// addInput(createInput<InputPortPJ3410>(Vec(83, 275), module, Streams::ALGORITHM_INPUT)); | |||
// addInput(createInput<InputPortPJ3410>(Vec(119, 275), module, Streams::TIMBRE_INPUT)); | |||
// addInput(createInput(Vec(11, 318), module, Streams::CARRIER_INPUT)); | |||
// addInput(createInput(Vec(47, 318), module, Streams::MODULATOR_INPUT)); | |||
// addOutput(createOutput(Vec(83, 318), module, Streams::MODULATOR_OUTPUT)); | |||
// addOutput(createOutput(Vec(119, 318), module, Streams::AUX_OUTPUT)); | |||
// addInput(createInput<InputPortPJ3410>(Vec(11, 318), module, Streams::CARRIER_INPUT)); | |||
// addInput(createInput<InputPortPJ3410>(Vec(47, 318), module, Streams::MODULATOR_INPUT)); | |||
// addOutput(createOutput<OutputPortPJ3410>(Vec(83, 318), module, Streams::MODULATOR_OUTPUT)); | |||
// addOutput(createOutput<OutputPortPJ3410>(Vec(119, 318), module, Streams::AUX_OUTPUT)); | |||
// Streams *streams = dynamic_cast<Streams*>(module); | |||
// addChild(createValueLight<SmallModeLight>(Vec(21, 168), &streams->lights[0])); | |||
@@ -83,7 +83,7 @@ void Tides::step() { | |||
pitch += params[FM_PARAM] * getf(inputs[FM_INPUT], 0.1) / 5.0; | |||
pitch += 60.0; | |||
// Scale to the global sample rate | |||
pitch += log2f(48000.0 / gRack->sampleRate) * 12.0; | |||
pitch += log2f(48000.0 / gSampleRate) * 12.0; | |||
generator.set_pitch(clampf(pitch*0x80, -0x8000, 0x7fff)); | |||
// Slope, smoothness, pitch | |||
@@ -145,8 +145,8 @@ TidesWidget::TidesWidget() : ModuleWidget(new Tides()) { | |||
box.size = Vec(15*14, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Tides.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Tides.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -166,21 +166,21 @@ TidesWidget::TidesWidget() : ModuleWidget(new Tides()) { | |||
addParam(createParam<SmallWhiteKnob>(Vec(85, 155), module, Tides::SLOPE_PARAM, -1.0, 1.0, 0.0)); | |||
addParam(createParam<SmallWhiteKnob>(Vec(156, 155), module, Tides::SMOOTHNESS_PARAM, -1.0, 1.0, 0.0)); | |||
addInput(createInput(Vec(23, 221), module, Tides::SHAPE_INPUT)); | |||
addInput(createInput(Vec(95, 221), module, Tides::SLOPE_INPUT)); | |||
addInput(createInput(Vec(166, 221), module, Tides::SMOOTHNESS_INPUT)); | |||
addInput(createInput(Vec(23, 275), module, Tides::TRIG_INPUT)); | |||
addInput(createInput(Vec(59, 275), module, Tides::FREEZE_INPUT)); | |||
addInput(createInput(Vec(95, 275), module, Tides::PITCH_INPUT)); | |||
addInput(createInput(Vec(130, 275), module, Tides::FM_INPUT)); | |||
addInput(createInput(Vec(166, 275), module, Tides::LEVEL_INPUT)); | |||
addInput(createInput(Vec(23, 318), module, Tides::CLOCK_INPUT)); | |||
addOutput(createOutput(Vec(59, 318), module, Tides::HIGH_OUTPUT)); | |||
addOutput(createOutput(Vec(95, 318), module, Tides::LOW_OUTPUT)); | |||
addOutput(createOutput(Vec(130, 318), module, Tides::UNI_OUTPUT)); | |||
addOutput(createOutput(Vec(166, 318), module, Tides::BI_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(18, 216), module, Tides::SHAPE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(90, 216), module, Tides::SLOPE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(161, 216), module, Tides::SMOOTHNESS_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(18, 270), module, Tides::TRIG_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(54, 270), module, Tides::FREEZE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(90, 270), module, Tides::PITCH_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(125, 270), module, Tides::FM_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(161, 270), module, Tides::LEVEL_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(18, 313), module, Tides::CLOCK_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(54, 313), module, Tides::HIGH_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(90, 313), module, Tides::LOW_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(125, 313), module, Tides::UNI_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(161, 313), module, Tides::BI_OUTPUT)); | |||
Tides *tides = dynamic_cast<Tides*>(module); | |||
addChild(createValueLight<SmallValueLight>(Vec(58, 63), &tides->lights[0])); | |||
@@ -97,8 +97,8 @@ VeilsWidget::VeilsWidget() : ModuleWidget(new Veils()) { | |||
box.size = Vec(15*12, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Veils.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Veils.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -118,20 +118,20 @@ VeilsWidget::VeilsWidget() : ModuleWidget(new Veils()) { | |||
addParam(createParam<TinyBlackKnob>(Vec(72, 214), module, Veils::RESPONSE3_PARAM, 0.0, 1.0, 1.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(72, 292), module, Veils::RESPONSE4_PARAM, 0.0, 1.0, 1.0)); | |||
addInput(createInput(Vec(112, 43), module, Veils::IN1_INPUT)); | |||
addInput(createInput(Vec(112, 122), module, Veils::IN2_INPUT)); | |||
addInput(createInput(Vec(112, 200), module, Veils::IN3_INPUT)); | |||
addInput(createInput(Vec(112, 279), module, Veils::IN4_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 38), module, Veils::IN1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 117), module, Veils::IN2_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 195), module, Veils::IN3_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 274), module, Veils::IN4_INPUT)); | |||
addInput(createInput(Vec(112, 82), module, Veils::CV1_INPUT)); | |||
addInput(createInput(Vec(112, 161), module, Veils::CV2_INPUT)); | |||
addInput(createInput(Vec(112, 240), module, Veils::CV3_INPUT)); | |||
addInput(createInput(Vec(112, 318), module, Veils::CV4_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 77), module, Veils::CV1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 156), module, Veils::CV2_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 235), module, Veils::CV3_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(107, 313), module, Veils::CV4_INPUT)); | |||
addOutput(createOutput(Vec(146, 43), module, Veils::OUT1_OUTPUT)); | |||
addOutput(createOutput(Vec(146, 122), module, Veils::OUT2_OUTPUT)); | |||
addOutput(createOutput(Vec(146, 200), module, Veils::OUT3_OUTPUT)); | |||
addOutput(createOutput(Vec(146, 279), module, Veils::OUT4_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(141, 38), module, Veils::OUT1_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(141, 117), module, Veils::OUT2_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(141, 195), module, Veils::OUT3_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(141, 274), module, Veils::OUT4_OUTPUT)); | |||
Veils *veils = dynamic_cast<Veils*>(module); | |||
addChild(createValueLight<MediumValueLight>(Vec(149, 86), &veils->lights[0])); | |||
@@ -61,7 +61,7 @@ void Warps::step() { | |||
p->frequency_shift_cv = clampf(getf(inputs[ALGORITHM_INPUT]) / 5.0, -1.0, 1.0); | |||
p->phase_shift = p->modulation_algorithm; | |||
p->note = 60.0 * params[LEVEL1_PARAM] + 12.0 * getf(inputs[LEVEL1_INPUT], 2.0) + 12.0; | |||
p->note += log2f(96000.0 / gRack->sampleRate) * 12.0; | |||
p->note += log2f(96000.0 / gSampleRate) * 12.0; | |||
float state = roundf(params[STATE_PARAM]); | |||
p->carrier_shape = (int32_t)state; | |||
lights[0] = state - 1.0; | |||
@@ -80,8 +80,8 @@ WarpsWidget::WarpsWidget() : ModuleWidget(new Warps()) { | |||
box.size = Vec(15*10, 380); | |||
{ | |||
AudiblePanel *panel = new AudiblePanel(); | |||
panel->imageFilename = "plugins/AudibleInstruments/res/Warps.png"; | |||
Panel *panel = new LightPanel(); | |||
panel->backgroundImage = Image::load("plugins/AudibleInstruments/res/Warps.png"); | |||
panel->box.size = box.size; | |||
addChild(panel); | |||
} | |||
@@ -98,15 +98,15 @@ WarpsWidget::WarpsWidget() : ModuleWidget(new Warps()) { | |||
addParam(createParam<TinyBlackKnob>(Vec(15, 214), module, Warps::LEVEL1_PARAM, 0.0, 1.0, 1.0)); | |||
addParam(createParam<TinyBlackKnob>(Vec(53, 214), module, Warps::LEVEL2_PARAM, 0.0, 1.0, 1.0)); | |||
addInput(createInput(Vec(11, 275), module, Warps::LEVEL1_INPUT)); | |||
addInput(createInput(Vec(47, 275), module, Warps::LEVEL2_INPUT)); | |||
addInput(createInput(Vec(83, 275), module, Warps::ALGORITHM_INPUT)); | |||
addInput(createInput(Vec(119, 275), module, Warps::TIMBRE_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(5, 270), module, Warps::LEVEL1_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(41, 270), module, Warps::LEVEL2_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(77, 270), module, Warps::ALGORITHM_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(113, 270), module, Warps::TIMBRE_INPUT)); | |||
addInput(createInput(Vec(11, 318), module, Warps::CARRIER_INPUT)); | |||
addInput(createInput(Vec(47, 318), module, Warps::MODULATOR_INPUT)); | |||
addOutput(createOutput(Vec(83, 318), module, Warps::MODULATOR_OUTPUT)); | |||
addOutput(createOutput(Vec(119, 318), module, Warps::AUX_OUTPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(5, 313), module, Warps::CARRIER_INPUT)); | |||
addInput(createInput<InputPortPJ3410>(Vec(41, 313), module, Warps::MODULATOR_INPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(77, 313), module, Warps::MODULATOR_OUTPUT)); | |||
addOutput(createOutput<OutputPortPJ3410>(Vec(113, 313), module, Warps::AUX_OUTPUT)); | |||
Warps *warps = dynamic_cast<Warps*>(module); | |||
addChild(createValueLight<SmallModeLight>(Vec(21, 168), &warps->lights[0])); | |||