@@ -336,7 +336,7 @@ struct BraidsWidget : ModuleWidget { | |||||
Braids *braids = dynamic_cast<Braids*>(module); | Braids *braids = dynamic_cast<Braids*>(module); | ||||
assert(braids); | assert(braids); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Options")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Options")); | ||||
menu->addChild(construct<BraidsSettingItem>(&MenuItem::text, "META", &BraidsSettingItem::setting, &braids->settings.meta_modulation)); | menu->addChild(construct<BraidsSettingItem>(&MenuItem::text, "META", &BraidsSettingItem::setting, &braids->settings.meta_modulation)); | ||||
menu->addChild(construct<BraidsSettingItem>(&MenuItem::text, "DRFT", &BraidsSettingItem::setting, &braids->settings.vco_drift, &BraidsSettingItem::onValue, 4)); | menu->addChild(construct<BraidsSettingItem>(&MenuItem::text, "DRFT", &BraidsSettingItem::setting, &braids->settings.vco_drift, &BraidsSettingItem::onValue, 4)); | ||||
@@ -155,7 +155,7 @@ struct BranchesWidget : ModuleWidget { | |||||
} | } | ||||
}; | }; | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Channels")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Channels")); | ||||
menu->addChild(construct<BranchesModeItem>(&MenuItem::text, "Channel 1 modes", &BranchesModeItem::branches, branches, &BranchesModeItem::channel, 0)); | menu->addChild(construct<BranchesModeItem>(&MenuItem::text, "Channel 1 modes", &BranchesModeItem::branches, branches, &BranchesModeItem::channel, 0)); | ||||
@@ -380,21 +380,21 @@ struct CloudsWidget : ModuleWidget { | |||||
Clouds *module = dynamic_cast<Clouds*>(this->module); | Clouds *module = dynamic_cast<Clouds*>(this->module); | ||||
assert(module); | assert(module); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Blend knob")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Blend knob")); | ||||
menu->addChild(construct<CloudsBlendItem>(&MenuItem::text, "Wet/dry", &CloudsBlendItem::module, module, &CloudsBlendItem::blendMode, 0)); | menu->addChild(construct<CloudsBlendItem>(&MenuItem::text, "Wet/dry", &CloudsBlendItem::module, module, &CloudsBlendItem::blendMode, 0)); | ||||
menu->addChild(construct<CloudsBlendItem>(&MenuItem::text, "Spread", &CloudsBlendItem::module, module, &CloudsBlendItem::blendMode, 1)); | menu->addChild(construct<CloudsBlendItem>(&MenuItem::text, "Spread", &CloudsBlendItem::module, module, &CloudsBlendItem::blendMode, 1)); | ||||
menu->addChild(construct<CloudsBlendItem>(&MenuItem::text, "Feedback", &CloudsBlendItem::module, module, &CloudsBlendItem::blendMode, 2)); | menu->addChild(construct<CloudsBlendItem>(&MenuItem::text, "Feedback", &CloudsBlendItem::module, module, &CloudsBlendItem::blendMode, 2)); | ||||
menu->addChild(construct<CloudsBlendItem>(&MenuItem::text, "Reverb", &CloudsBlendItem::module, module, &CloudsBlendItem::blendMode, 3)); | menu->addChild(construct<CloudsBlendItem>(&MenuItem::text, "Reverb", &CloudsBlendItem::module, module, &CloudsBlendItem::blendMode, 3)); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Alternative mode")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Alternative mode")); | ||||
menu->addChild(construct<CloudsPlaybackItem>(&MenuItem::text, "Granular", &CloudsPlaybackItem::module, module, &CloudsPlaybackItem::playback, clouds::PLAYBACK_MODE_GRANULAR)); | menu->addChild(construct<CloudsPlaybackItem>(&MenuItem::text, "Granular", &CloudsPlaybackItem::module, module, &CloudsPlaybackItem::playback, clouds::PLAYBACK_MODE_GRANULAR)); | ||||
menu->addChild(construct<CloudsPlaybackItem>(&MenuItem::text, "Pitch-shifter/time-stretcher", &CloudsPlaybackItem::module, module, &CloudsPlaybackItem::playback, clouds::PLAYBACK_MODE_STRETCH)); | menu->addChild(construct<CloudsPlaybackItem>(&MenuItem::text, "Pitch-shifter/time-stretcher", &CloudsPlaybackItem::module, module, &CloudsPlaybackItem::playback, clouds::PLAYBACK_MODE_STRETCH)); | ||||
menu->addChild(construct<CloudsPlaybackItem>(&MenuItem::text, "Looping delay", &CloudsPlaybackItem::module, module, &CloudsPlaybackItem::playback, clouds::PLAYBACK_MODE_LOOPING_DELAY)); | menu->addChild(construct<CloudsPlaybackItem>(&MenuItem::text, "Looping delay", &CloudsPlaybackItem::module, module, &CloudsPlaybackItem::playback, clouds::PLAYBACK_MODE_LOOPING_DELAY)); | ||||
menu->addChild(construct<CloudsPlaybackItem>(&MenuItem::text, "Spectral madness", &CloudsPlaybackItem::module, module, &CloudsPlaybackItem::playback, clouds::PLAYBACK_MODE_SPECTRAL)); | menu->addChild(construct<CloudsPlaybackItem>(&MenuItem::text, "Spectral madness", &CloudsPlaybackItem::module, module, &CloudsPlaybackItem::playback, clouds::PLAYBACK_MODE_SPECTRAL)); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Quality")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Quality")); | ||||
menu->addChild(construct<CloudsQualityItem>(&MenuItem::text, "1s 32kHz 16-bit stereo", &CloudsQualityItem::module, module, &CloudsQualityItem::quality, 0)); | menu->addChild(construct<CloudsQualityItem>(&MenuItem::text, "1s 32kHz 16-bit stereo", &CloudsQualityItem::module, module, &CloudsQualityItem::quality, 0)); | ||||
menu->addChild(construct<CloudsQualityItem>(&MenuItem::text, "2s 32kHz 16-bit mono", &CloudsQualityItem::module, module, &CloudsQualityItem::quality, 1)); | menu->addChild(construct<CloudsQualityItem>(&MenuItem::text, "2s 32kHz 16-bit mono", &CloudsQualityItem::module, module, &CloudsQualityItem::quality, 1)); | ||||
@@ -330,7 +330,7 @@ struct ElementsWidget : ModuleWidget { | |||||
Elements *elements = dynamic_cast<Elements*>(module); | Elements *elements = dynamic_cast<Elements*>(module); | ||||
assert(elements); | assert(elements); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Alternative models")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Alternative models")); | ||||
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Original", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 0)); | menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Original", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 0)); | ||||
menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Non-linear string", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 1)); | menu->addChild(construct<ElementsModalItem>(&MenuItem::text, "Non-linear string", &ElementsModalItem::elements, elements, &ElementsModalItem::model, 1)); | ||||
@@ -372,7 +372,7 @@ struct FramesWidget : ModuleWidget { | |||||
Menu *menu = new Menu(); | Menu *menu = new Menu(); | ||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, string::f("Channel %d", channel + 1))); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, string::f("Channel %d", channel + 1))); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Interpolation Curve")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Interpolation Curve")); | ||||
menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Step", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_STEP)); | menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Step", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_STEP)); | ||||
@@ -381,7 +381,7 @@ struct FramesWidget : ModuleWidget { | |||||
menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Decelerating", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_OUT_QUARTIC)); | menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Decelerating", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_OUT_QUARTIC)); | ||||
menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Smooth Departure/Arrival", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_SINE)); | menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Smooth Departure/Arrival", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_SINE)); | ||||
menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Bouncing", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_BOUNCE)); | menu->addChild(construct<FramesCurveItem>(&MenuItem::text, "Bouncing", &FramesCurveItem::frames, frames, &FramesCurveItem::channel, channel, &FramesCurveItem::curve, frames::EASING_CURVE_BOUNCE)); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Response Curve")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Response Curve")); | ||||
menu->addChild(construct<FramesResponseItem>(&MenuItem::text, "Linear", &FramesResponseItem::frames, frames, &FramesResponseItem::channel, channel, &FramesResponseItem::response, 0)); | menu->addChild(construct<FramesResponseItem>(&MenuItem::text, "Linear", &FramesResponseItem::frames, frames, &FramesResponseItem::channel, channel, &FramesResponseItem::response, 0)); | ||||
menu->addChild(construct<FramesResponseItem>(&MenuItem::text, "Exponential", &FramesResponseItem::frames, frames, &FramesResponseItem::channel, channel, &FramesResponseItem::response, 255)); | menu->addChild(construct<FramesResponseItem>(&MenuItem::text, "Exponential", &FramesResponseItem::frames, frames, &FramesResponseItem::channel, channel, &FramesResponseItem::response, 255)); | ||||
@@ -409,14 +409,14 @@ struct FramesWidget : ModuleWidget { | |||||
} | } | ||||
}; | }; | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Channel Settings")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Channel Settings")); | ||||
for (int i = 0; i < 4; i++) { | for (int i = 0; i < 4; i++) { | ||||
menu->addChild(construct<FramesChannelSettingsItem>(&MenuItem::text, string::f("Channel %d", i + 1), &FramesChannelSettingsItem::frames, frames, &FramesChannelSettingsItem::channel, i)); | menu->addChild(construct<FramesChannelSettingsItem>(&MenuItem::text, string::f("Channel %d", i + 1), &FramesChannelSettingsItem::frames, frames, &FramesChannelSettingsItem::channel, i)); | ||||
} | } | ||||
menu->addChild(construct<FramesClearItem>(&MenuItem::text, "Clear Keyframes", &FramesClearItem::frames, frames)); | menu->addChild(construct<FramesClearItem>(&MenuItem::text, "Clear Keyframes", &FramesClearItem::frames, frames)); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Mode")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Mode")); | ||||
menu->addChild(construct<FramesModeItem>(&MenuItem::text, "Keyframer", &FramesModeItem::frames, frames, &FramesModeItem::poly_lfo_mode, false)); | menu->addChild(construct<FramesModeItem>(&MenuItem::text, "Keyframer", &FramesModeItem::frames, frames, &FramesModeItem::poly_lfo_mode, false)); | ||||
menu->addChild(construct<FramesModeItem>(&MenuItem::text, "Poly LFO", &FramesModeItem::frames, frames, &FramesModeItem::poly_lfo_mode, true)); | menu->addChild(construct<FramesModeItem>(&MenuItem::text, "Poly LFO", &FramesModeItem::frames, frames, &FramesModeItem::poly_lfo_mode, true)); | ||||
@@ -596,7 +596,7 @@ struct MarblesWidget : ModuleWidget { | |||||
} | } | ||||
}; | }; | ||||
menu->addChild(new MenuEntry); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(createMenuLabel("Scales")); | menu->addChild(createMenuLabel("Scales")); | ||||
const std::string scaleLabels[] = { | const std::string scaleLabels[] = { | ||||
"Major", | "Major", | ||||
@@ -621,7 +621,7 @@ struct MarblesWidget : ModuleWidget { | |||||
} | } | ||||
}; | }; | ||||
menu->addChild(new MenuEntry); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(createMenuLabel("Internal X clock source")); | menu->addChild(createMenuLabel("Internal X clock source")); | ||||
const std::string sourceLabels[] = { | const std::string sourceLabels[] = { | ||||
"T₁ → X₁, T₂ → X₂, T₃ → X₃", | "T₁ → X₁, T₂ → X₂, T₃ → X₃", | ||||
@@ -672,7 +672,7 @@ struct MarblesWidget : ModuleWidget { | |||||
} | } | ||||
}; | }; | ||||
menu->addChild(new MenuEntry); | |||||
menu->addChild(new MenuSeparator); | |||||
YDividerItem *yDividerItem = createMenuItem<YDividerItem>("Y divider ratio"); | YDividerItem *yDividerItem = createMenuItem<YDividerItem>("Y divider ratio"); | ||||
yDividerItem->module = module; | yDividerItem->module = module; | ||||
menu->addChild(yDividerItem); | menu->addChild(yDividerItem); | ||||
@@ -53,8 +53,8 @@ struct Plaits : Module { | |||||
bool lowCpu = false; | bool lowCpu = false; | ||||
bool lpg = false; | bool lpg = false; | ||||
dsp::SchmittTrigger model1Trigger; | |||||
dsp::SchmittTrigger model2Trigger; | |||||
dsp::BooleanTrigger model1Trigger; | |||||
dsp::BooleanTrigger model2Trigger; | |||||
Plaits() { | Plaits() { | ||||
config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | config(NUM_PARAMS, NUM_INPUTS, NUM_OUTPUTS, NUM_LIGHTS); | ||||
@@ -307,7 +307,7 @@ struct PlaitsWidget : ModuleWidget { | |||||
} | } | ||||
}; | }; | ||||
menu->addChild(new MenuEntry); | |||||
menu->addChild(new MenuSeparator); | |||||
PlaitsLowCpuItem *lowCpuItem = createMenuItem<PlaitsLowCpuItem>("Low CPU", CHECKMARK(module->lowCpu)); | PlaitsLowCpuItem *lowCpuItem = createMenuItem<PlaitsLowCpuItem>("Low CPU", CHECKMARK(module->lowCpu)); | ||||
lowCpuItem->module = module; | lowCpuItem->module = module; | ||||
menu->addChild(lowCpuItem); | menu->addChild(lowCpuItem); | ||||
@@ -315,7 +315,7 @@ struct PlaitsWidget : ModuleWidget { | |||||
lpgItem->module = module; | lpgItem->module = module; | ||||
menu->addChild(lpgItem); | menu->addChild(lpgItem); | ||||
menu->addChild(new MenuEntry()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(createMenuLabel("Models")); | menu->addChild(createMenuLabel("Models")); | ||||
for (int i = 0; i < 16; i++) { | for (int i = 0; i < 16; i++) { | ||||
PlaitsModelItem *modelItem = createMenuItem<PlaitsModelItem>(modelLabels[i], CHECKMARK(module->patch.engine == i)); | PlaitsModelItem *modelItem = createMenuItem<PlaitsModelItem>(modelLabels[i], CHECKMARK(module->patch.engine == i)); | ||||
@@ -316,7 +316,7 @@ struct RingsWidget : ModuleWidget { | |||||
} | } | ||||
}; | }; | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Resonator")); | menu->addChild(construct<MenuLabel>(&MenuLabel::text, "Resonator")); | ||||
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Modal resonator", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_MODAL)); | menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Modal resonator", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_MODAL)); | ||||
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Sympathetic strings", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_SYMPATHETIC_STRING)); | menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Sympathetic strings", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_SYMPATHETIC_STRING)); | ||||
@@ -325,7 +325,7 @@ struct RingsWidget : ModuleWidget { | |||||
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Quantized sympathetic strings", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_SYMPATHETIC_STRING_QUANTIZED)); | menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Quantized sympathetic strings", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_SYMPATHETIC_STRING_QUANTIZED)); | ||||
menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Reverb string", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_STRING_AND_REVERB)); | menu->addChild(construct<RingsModelItem>(&MenuItem::text, "Reverb string", &RingsModelItem::rings, rings, &RingsModelItem::model, rings::RESONATOR_MODEL_STRING_AND_REVERB)); | ||||
menu->addChild(construct<MenuLabel>()); | |||||
menu->addChild(new MenuSeparator); | |||||
menu->addChild(construct<RingsEasterEggItem>(&MenuItem::text, "Disastrous Peace", &RingsEasterEggItem::rings, rings)); | menu->addChild(construct<RingsEasterEggItem>(&MenuItem::text, "Disastrous Peace", &RingsEasterEggItem::rings, rings)); | ||||
} | } | ||||
}; | }; | ||||
@@ -271,7 +271,7 @@ struct TidesWidget : ModuleWidget { | |||||
} | } | ||||
}; | }; | ||||
menu->addChild(new MenuEntry); | |||||
menu->addChild(new MenuSeparator); | |||||
SheepItem *sheepItem = createMenuItem<SheepItem>("Sheep", CHECKMARK(module->sheep)); | SheepItem *sheepItem = createMenuItem<SheepItem>("Sheep", CHECKMARK(module->sheep)); | ||||
sheepItem->module = module; | sheepItem->module = module; | ||||
menu->addChild(sheepItem); | menu->addChild(sheepItem); | ||||