# [PD] log function in slider

Alexandre Torres Porres porres at gmail.com
Wed Mar 19 03:37:30 CET 2014

```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/2b751dbf/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: log_slide-help.pd
Type: application/octet-stream
Size: 1389 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20140318/2b751dbf/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: log_slide.pd
Type: application/octet-stream
Size: 646 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20140318/2b751dbf/attachment-0003.obj>
```