Creating selection menus on the front panel?

Hello! I could use some direction on how to create a selection menu on a front panel. For example:

I know that this module is open-source, but the code behind this particular module is complex. I’m looking for the most simple implementation possible for me to learn from. :slight_smile:


Please try to keep all module functionality accessible for modules like VCV MIDI-MAP, TheModularMind OSCelot, Stoermelder CV-MAP, PILE etc.

Not sure if a selection menu falls in the category.

Some sort of knob + CV-input + a display is better IMO. Or a series of leds + graphic symbols or text to show what is selected.

Although I agree in theory, in this specific situation a drop-down menu would be more appropriate than other strategies. If you’d like to debate the user experience, let me know and I’ll start a new thread to focus on that. I think that that conversation would be best addressed separately. :bowing_man:

The code in that module is hard to figure out, but that widget is easy to just take and re-use. I used it in a zillion modules without changing it. I guess you don’t use params, so you might have to modify it or make up a dummy param:

        std::vector<std::string> labels = Comp::modes();
        PopupMenuParamWidget* p = createParam<PopupMenuParamWidget>(
            Vec(10, 30),
        p->box.size.x = 100;  // width
        p->box.size.y = 22;
        p->text = labels[3];

Ahhh… I’m assuming that this is the code that you’re referring to? It looks like you may have coded your own selection menu essentially “from scratch”? Very interesting.

Thanks for the information.

Sorry @Squinky , one follow up question. Can you show me where this is added to your front panel?

sure. I don’t work on those module any more, but @robert.kock does. Anyways, I went over to his repo and used the search function on my text editor. Got a lot of hits. If you try that you will probably get want you want:

The particular one you took a picture of, in “Comp”, that’s in CompressorModule.cpp.

I think it does. I think any ParamWidget can be controlled. I don’t know if you’ve ever tried any of my modules, but I’ve never heard of someone having troubles like that. I hope @stoermelder would have told me if there was a problem like that. He’s a pretty nice guy.

Yeah, it’s so long ago I don’t remember why I did that. but this is probably like three years ago and there wasn’t much in the SDK for that. Don’t know if that’s changed or not.

The knobs and buttons can be mapped - but not the drop-down-menu. Not sure if others see it as a problem, but as someone who likes to remote-control Rack using OSC - I’m a bit disappointed when I can’t reach all functions of a module from remote interfaces.

It’s not a problem or malfunction per se - I just move on to other modules.

oh, interesting. You are right - I never knew that. Is “It’s not a problem per se - I just move on to other modules” sarcasm? Because I think most ppl think Comp is the best all around compressor in VCV, so it seems a shame all this time you weren’t using it because of some issue that was never reported by anyone ;-(

I have no reason to dislike SqinkyLabs - the person or the plugins. Just my “I Have Spoken” way of putting things.

I have mentioned it a few times in the forum. Not in relation to your modules specifically.

UI your opinion and advice appreciated - #6 by Jens.Peter.Nielsen
Sequencer idea like ER-101: what would you want to see? - #10 by Jens.Peter.Nielsen

VCV has recommendations

Design recommendations from VCV:

* Design panels as if you are designing hardware.
  * Make sure there is enough space between knobs and ports to put your thumbs between them.
  * Use an inverted background for output ports (see Fundamental VCO-1 panel above).
  * Labels should succinctly state the purpose of knobs, switches, and ports.
* Roughly follow the graphical density and text sizes of Fundamental modules.
  * Text should be readable at 100% on a non-high-DPI monitor.

but hardware can have menus and screens too.

This thread is getting a bit off-topic. Can we rope it in? No offense to anyone.

1 Like

On RPJs evolution of KitchenSink he replaced the original drop down with +/- selectable menu. Those +/- Buttons are mappable.


Items in drop down menus are generally not mappable.

In the MindMeld mixer we have Low Pass and High Pass filter sliders in the track settings dropdown menus and we wanted to be able to map them. We also have small LEDs below the track labels which are lit when a track’s LPF or HPF is active.

We found that we could use the little LEDs as mapping targets for the filter sliders in the dropdown menus enabling them to be externally controlled.

Just mentioning that in case it might be useful.


Let me know if you need help. I should be able to help on both implementations , the SL and the RPJ one as I maintain both.


Yes, he did. One reason I don’t like these is that while mappable, you need to map them to two button right? Whereas you would probably prefer to map “wave” and “stepping” to continuous voltage source?

Also, with the two button method you can’t get a reasonable tooltip. I know @robert.kock prefers the buttons, because they are more like hardware. I prefer the dropdowns. With the bug fixed especially.

Oh, wait, I just discovered that undo doesn’t work with either of these… another thing to look into. maybe…

1 Like

That’s not true, steve. See my other post about this.

I actually like them, but I think that is just taste. You don’t need to map both, they are starting at the first option once you hit + on the last. When I think of menus on the front panel, i think of parameters you might want to set while sound designing, but not necessarily modulate them. So an option to toggle through them (by pressing a button) seems to be more natural for me than to twist a knob. But again, both options are valid.

makes sense. (of course assuming that both are working :wink: