[PD] log function in slider
Alexandre Torres Porres
porres at gmail.com
Wed Mar 19 03:39:16 CET 2014
there's a bug in one of the number boxes, sorry
2014-03-18 23:37 GMT-03:00 Alexandre Torres Porres <porres at gmail.com>:
> here's what I got as an abstraction
>
>
> 2014-03-18 21:12 GMT-03:00 Alexandre Torres Porres <porres at gmail.com>:
>
> Hey, a few things have made sense to me now.
>>
>> The minimum and maximum values in PD are in a 100 / 1 ratio. This ratio
>> is important and it's a key in the formula. In the sense that if you have
>> 10 and 1000, the plotting curve looks always the same. So if you forget
>> about the minimum and maximum values, you can just work with this ratio
>> variable.
>>
>> Something like:
>>
>> [expr exp($f1 * log(ratio))]
>>
>> Now this will give you a value from 1 to the value of "ratio". And I
>> thought it'd be cool to scale it from 0 to 1.
>>
>> One thing that annoys me a lot is that the log function will not allow
>> you to start at zero. So I wanted to tweak this in order to make it so.
>>
>> Not hard, something like this does the trick.
>>
>> [expr exp($f1 * log(ratio) - 1) / (ratio -1)]
>>
>> You can always rescale this by multiplying to any factor and summing to a
>> constant.
>>
>> cheers
>>
>>
>> 2014-03-18 19:27 GMT-03:00 Alexandre Torres Porres <porres at gmail.com>:
>>
>> cool, looks great
>>>
>>> by the way, this guy was helping me out with the math, so I don't really
>>> know what's going on that well.
>>>
>>> Apparently he couldn't figure out the slider height variable. And Roman
>>> didn't use that too.
>>>
>>> The formula was behaving the same as Roman's patch, but we simplified
>>> the formula now so it's more related to Roman's patch.
>>>
>>> It's something like this now
>>>
>>> [expr~ min_$0 * exp($v1 * log(max_$0 / min_$0))]
>>>
>>> then doing the inverse is not too complicated, just use "ln"
>>>
>>> I still have not much clue about the original code, the slider height
>>> variable and other things, but, anyhow, these were the equations I was
>>> looking for ;)
>>>
>>> cheers
>>>
>>>
>>> 2014-03-18 18:32 GMT-03:00 Jonathan Wilkes <jancsika at yahoo.com>:
>>>
>>> On 03/18/2014 04:05 PM, Alexandre Torres Porres wrote:
>>>>
>>>> and as I was checking before, not too far from raising to the power of
>>>> 0.25 (thicker line in the graph from the picture attached)
>>>>
>>>>
>>>> Btw-- here's what that patch looks like in Pd-l2ork (attached).
>>>>
>>>> The array rectangle is orange because it's selected. I also changed
>>>> the size of the garray by click-dragging with the mouse.
>>>>
>>>> -Jonathan
>>>>
>>>>
>>>>
>>>>
>>>> 2014-03-18 16:48 GMT-03:00 Alexandre Torres Porres <porres at gmail.com>:
>>>>
>>>>> the solution is as I thought, to just invert the given formula in the
>>>>> code. Someone helped me with the math, is something like
>>>>>
>>>>> expr ln($f1 / 1.27) / (((log(127 / 1.27) / 1.27)) * 0.01)
>>>>>
>>>>> here's a patch attached
>>>>>
>>>>> I'm finally gonna check what kind of curve this thing gives :)
>>>>>
>>>>> Thanks everyone
>>>>>
>>>>> Cheers
>>>>>
>>>>>
>>>>> 2014-03-18 5:13 GMT-03:00 Jonathan Wilkes <jancsika at yahoo.com>:
>>>>>
>>>>> No, the code I ported is from vslider_set and vslider_draw_update
>>>>>> (might be different in Vanilla).
>>>>>>
>>>>>> In vslider_bang, math is done to output the proper value. Without
>>>>>> looking at the code I would have guessed vslider_bang simply outputs a
>>>>>> stored value like [float] does. Then just do math to set the slider
>>>>>> position or calculate a new stored value from mouse input.
>>>>>>
>>>>>> -Jonathan
>>>>>>
>>>>>>
>>>>>> On Monday, March 17, 2014 1:21 AM, Alexandre Torres Porres <
>>>>>> porres at gmail.com> wrote:
>>>>>> Hi Roman. This is turning out trickier than I thought. A friend
>>>>>> explained the code to me and got to the following equation, with min/max
>>>>>> values as 0.01 and 1 respectively.
>>>>>>
>>>>>> [expr 0.01 * exp((log(1 / 0.01) / 0.01) * $f1 * 0.01)]
>>>>>>
>>>>>> For what I've checked, it seems to behave like your patch. But it
>>>>>> doesn't do the trick I'm looking for yet. I sent a patch earlier, and I'm
>>>>>> sending it back again.
>>>>>>
>>>>>> The goal is to connect a linear slider to an [expr] (with this so
>>>>>> called "log" function) and then to another linear slider. The idea then is
>>>>>> that this second slider behaves as one that was set as being "log".
>>>>>>
>>>>>> In the patch attached I was able to emulate it poorly with [pow
>>>>>> 0.25], but that was before reaching the list. See that if I use this expr
>>>>>> function from the code or your patch it presents quite a different behavior.
>>>>>>
>>>>>> maybe it is some sort of inversion of this equation, not sure.
>>>>>> Apparently this code converts the "log" function values to linear and I'm
>>>>>> hoping to get the exact opposite. Got it?
>>>>>>
>>>>>> Thanks for looking into this
>>>>>>
>>>>>>
>>>>>> 2014-03-12 4:38 GMT-03:00 Roman Haefeli <reduzent at gmail.com>:
>>>>>>
>>>>>> On Don, 2014-03-06 at 21:37 -0300, Alexandre Torres Porres wrote:
>>>>>> > hi folks, out of curiosity, what's the exact log function used in
>>>>>> the
>>>>>> > slider? I'd like to emulate it.
>>>>>>
>>>>>> I am not sure, if this is what you want. It converts the incoming
>>>>>> linear
>>>>>> range between 0 and 1 to a logarithmic range specified by $1 and $2,
>>>>>> respectively by the second and third inlet. They behave like the lower
>>>>>> and upper bound specified in the [vslider]/[hslider] classes.
>>>>>>
>>>>>>
>>>>>> https://raw.github.com/reduzent/netpd2-patches/master/abs/rh_scalelog.pd
>>>>>>
>>>>>>
>>>>>> Roman
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pd-list at iem.at mailing list
>>>>>> UNSUBSCRIBE and account-management ->
>>>>>> http://lists.puredata.info/listinfo/pd-list
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pd-list at iem.at mailing list
>>>>>> UNSUBSCRIBE and account-management ->
>>>>>> http://lists.puredata.info/listinfo/pd-list
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20140318/c3eacf89/attachment.htm>
More information about the Pd-list
mailing list