From the original SynthMaker forum (2004–2014), with its members’ names and dates.
moham ·
Hi there
I installed SM a couple of days ago and i'm having a blast. However there's a modification i'd like to do to the knob module, but as math isn' my strongest point i have no idea how to pull it off.
What i'd like to accomplish is to put a few in's on the knob so i have better
control of the output. I'm thinking "Min, Max, Steps and Add"
Let's say i want the knob to start at -12, in the center i want the value 0 and far right would give 12. While every tick inbetween adds 1.
( -12, -11, -10, -9, -8, -7, -6. -5. -4. -3. -2. -1. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 )
I would then set Min: -12, Max: 12, Steps: 25 and Add: 1.
Any advice on how I can accomplish this? If i'm unclear, just shout and i shall try again 🙂
infuzion ·
This post about value ranges should be a good place to start. To get negitive numbers, change the "ValueMax" input to range, then subtract the end result by half.
skOre ·
The long story short:
multiply the output by 24. Then, instead of 0 to 1, you have 0 to 24.
then, subtract 12, so now you have -12 to 12
now the quick solution to have only integrer numbers is to put it into an integrer field:
moham ·
Awesome, thanks.
Next thing would be to make the knob act like more like a switch.
Instead of having multiple positions for every value it "snaps" to them.
I've got it to work, however not flawlessly by testing different values in
DragY Scale (Knob -> Knob Section -> Knob Dial -> Knob Control).
The value I use at the moment is -0.32, but how would one mathemagicly
calculate the correct one?
Tom7777 ·
skOre posted first 🙂 also to define the quantized like steps more if you like you can multiply the number by 10 or 100 or something similar and then feed this through another Int and then divide by the same number you used to multiply.
infuzion ·
skOre's version is more elegant, but you may find yourself needing to add a 0.5 for rounding off. or may not.
The above methods are great if you want to use stock knobs/value editors that have a [0,1] float range. An alternate way, if you don't mind hacking, is to directly edit the DragX/Y inputs:
Remember to rename your version to so you know what you did to it a year later, & save it in another file (I have a toolbox.osm that I copy/paste from) or save it as a module (Tom's meathod).
moham wrote: Next thing would be to make the knob act like more like a switch.
Instead of having multiple positions for every value it "snaps" to them.
Yea, it's something I haven't perfected yet either after many attempts. I did a version posted elsewhere in the link I provided above which click-jumped to each whole value, but it was very flaky. Plus, how data flows/updated has changed drasticly since then; everytime you move the knob (using DragX/Y), a value "bump" will occour, even if the same value is re-sent. (Techincal note: Meaning, if you change the output for a DragX/Y to an Int, even if the value doesn't change, the same value will be pushed again regardless. You can see this if you attach DragX/Y Current Value -> your range multiplier -> Int -> Trigger; the trigger will set off 2-9 times before the value will change. )
You'll need to see inside my IntDebouncer, which won't allow any values to be transmitted unless they change:
(If anyone can come up with a better solution, please post here. This looks so ugly to me, but after hours of trial & error, this is all I can come up with.)
Try disconnecting everything from the Redraws triggers & then connect the output of my IntDeboucer to the Redraws. Hopefully, the knob's GUI will only move (update) when the int values change, & you'll get your clicks. If it does work, please give credits 😉
infuzion ·
moham wrote: Next thing would be to make the knob act like more like a switch.
Instead of having multiple positions for every value it "snaps" to them.
Sift takes another approach for clicking knobs. Works well too.
moham ·
Thanks alot infuzion, i'll give it a shot.
Wrote something here? To have a post removed or your name hidden, write to [email protected].