Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Param MetaData Polarity and Jog #73

Open
baconpaul opened this issue Dec 3, 2023 · 0 comments
Open

Param MetaData Polarity and Jog #73

baconpaul opened this issue Dec 3, 2023 · 0 comments

Comments

@baconpaul
Copy link
Contributor

mostly just remembering what we said

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
baconpaul added a commit to baconpaul/sst-basic-blocks that referenced this issue Dec 4, 2023
gets a polarity api and an inferred default and isBi and isUni
methods.

Addresses surge-synthesizer#73
baconpaul added a commit that referenced this issue Dec 4, 2023
gets a polarity api and an inferred default and isBi and isUni
methods.

Addresses #73
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant