Wow, never mind-- it's a veritable Rube Goldberg machine of code to get from an incoming float to an outgoing one in g_vslider.c. There's even more math to draw the tick and I can't figure out how it works at the moment.
I also love how tempting "log" is for a volume control, but then it silently changes a minimum of "0" to max / 100, so you get a runtime error where you can't turn the volume down all the way. Then when you figure out what it did you have to add an object to subtract that last little bit, at which point you might as well have used [rms] or coded your own algorithm.
-Jonathan
On Tuesday, March 11, 2014 8:08 PM, Alexandre Torres Porres porres@gmail.com wrote:
Thanks Jonathan. Unfortunately, my C expertise is kinda poor and I'm still lost. I see it's got something to do with [exp] but haven't got my head around the function needed to emulate it. I'm making extensive documentation about Pd, so I'd like to write about it. I find it worth noting.
In the patch I'm sending, which was my attempt to get this right before reaching the list, I was able to emulate a bit reasonably with [expr pow($f1, 0.25)].
Cheers
2014-03-06 21:56 GMT-03:00 Jonathan Wilkes jancsika@yahoo.com:
From g_vslider.c:
if(x->x_lin0_log1) out = x->x_min*exp(x->x_k*(double)(x->x_val)*0.01);
Where x->x_k is: log(x->x_max/x->x_min)/(double)(x->x_gui.x_h - 1);
And x->x_gui.x_h is the height of the slider
-Jonathan
On Thursday, March 6, 2014 7:37 PM, Alexandre Torres Porres porres@gmail.com wrote:
hi folks, out of curiosity, what's the exact log function used in the slider? I'd like to emulate it.
cheers _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list