Hi there, i’m in the same water here, and was thinking of two possible strategies.
NOTE: maybe trivial, but it’s an essential assumption for my reasoning below : it is possible to have subclasses of slider/button that display the valuetotext lambda passed in valuetreestate->createandaddparameter
(see this gist from @yairadix for a slider, it can be done for the button as well).
So the parameter <–> UI "chain” is :
Parameter <—> Attachment <—> Custom Widget using parameter Lambda for displaying text.
(strategy #1) Hacking the toggle state of a button (normally 0 || 1) and make it cycle in 1/N steps. The value to text lambda would take care of adjusting the text based on the float value of the Toggle state
(strategy #2) Hacking the “On mouse click” of the slider and having a custom LookAndFeel that makes it look like a button ( something like the incdec buttons slider style without the buttons) Mouse click would then advance the slider value (assuming a range with skew = 1 and integer steps) and some additional logic would be needed to make it cycle on the Range.
This might have the interesting property of a multi button supporting both click and drag (it’s a slider after all) so the mobile experience could be interestingly nice.
Still not decided on where to go deeper and still not a juce guru, so maybe (probably) someone has better ideas