You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Xenakios — Yesterday at 5:22 PM
ah ok, is there some other way to express the bi-polarness in the ParamMetaData?
EvilDragon — Yesterday at 5:22 PM
you set the range -1...1
Xenakios — Yesterday at 5:22 PM
right, so it's has to be deduced elsewhere in the code? (like when drawing sliders)
EvilDragon — Yesterday at 5:23 PM
https://github.com/surge-synthesizer/surge/blob/main/doc/Dynamic%20Names%2C%20Deactivation%20and%20Bipolarity.md
baconpaul — Yesterday at 6:25 PM
I have to date used min == -max to infer bipolar yeah
We could change that. Add a polarity enum of inferred unipos unineg bipolar
Defaults to inferred
Add a as method
Add a query which uses rules for inferred
Happy to add that.
Would help with one bit of conduit too
Xenakios — Yesterday at 6:47 PM
cool!
what about quantization for the param values?
baconpaul — Yesterday at 7:52 PM
i've followed the idea that int and bool are quantized and float is not
would you like a quantized float too? is that the idea?
for the polarity here's my proposal not-on-phone
we add an enum
enum Polarity {
INFERRED,
UNIPOS,
UNINEG,
BIPOLAR,
NO_POLARITY
} polarity{INFERRED};
then we add an obvious withPolarity(Polarity p)
then we add
Polarity getPolarity() const {
if (polarity != INFERRED)
return polarity;
if (min == 0 && max > 0)
return UNIPOS;
if (max == 0 && min < 0)
return UNINEG;
if (min == -max)
return BIPOLAR;
return NO_POLARITY;
}
which I think covers all the cases
then I would make sst-jucegui knobs draw UNIPOS and NO_POLARITY from 0, UNINEG from top and BIPOLAR from middle
your thoughts on this design welcome before I code it up
EvilDragon — Yesterday at 7:57 PM
I'm not sure we really need the unipos and unineg distinction
it would draw visually the same way.
baconpaul — Yesterday at 7:58 PM
Not necessarily
You might choose to have unineg draw the ring from the top not th ebottom on a slider for instance
EvilDragon — Yesterday at 7:58 PM
I don't see the huge need tbh
ah for a slider. hm sure I guess
baconpaul — Yesterday at 7:58 PM
yeah
its easier to collapse them than to sprinkle ifs everywhere is my rough idea
EvilDragon — Yesterday at 7:58 PM
very rare cases I think
baconpaul — Yesterday at 7:59 PM
we can add an 'isUnipolar' which is 'getPolarity() == unipos || unineg' easily
EvilDragon — Yesterday at 7:59 PM
right
baconpaul — Yesterday at 7:59 PM
and more importantly an 'isBipolar'
Xenakios — Yesterday at 8:01 PM
regarding the quantization, for GUI, so that the GUI code doesn't need to guess what is the natural step for example when using the arrow keyboard shortcuts
EvilDragon — Yesterday at 8:01 PM
or mousewheel
Xenakios — Yesterday at 8:01 PM
yeah
EvilDragon — Yesterday at 8:05 PM
the problem is that a float parameter can be nonlinear
you cannot specify a quantization step then necessarily
Xenakios — Yesterday at 8:12 PM
std::vector<float> customquantizedvalues 😬 😂
baconpaul — Yesterday at 8:16 PM
Oh yeah so a jog rounding
I have that in the sst jucegui api
And couldn’t match it to Param metadata
Ok I will add both this week
But basically a set of jog up and down and round to jog options clearly needed
I needed them for the ally implementation. What does the arrow key do
And I just hacked it last week
Got it. Will add to list
The text was updated successfully, but these errors were encountered:
baconpaul
added a commit
to baconpaul/sst-basic-blocks
that referenced
this issue
Dec 4, 2023
mostly just remembering what we said
The text was updated successfully, but these errors were encountered: