Anton Hörnquist wrote:
Here is a dll of Frank's moogladder~ v.02 compiled against pd 0.40_2 The code should go in svn somewhere. ( I replaced 2*M_PI in the code with TWO_PI to avoid a multiply (compiler optimisation maybe does that already)).
Thanks, Martin!
Out of curiosity - what compiler did you use? I've never compiled externals on win xp but would like to learn how. Is it possible to use the free version of MS Developer Studio? Other alternatives?
Yes I used the free VisualC++ 2005 Express Edition. I use pd.lib from Miller's pd, to link against when building an external as a dll. The setup function is the only symbol that needs to be exported..
You can also do it using MinGW (pd-extended is built that way) but I haven't yet found the patience to jump through all the hoops to get it working. Cygwin's gcc should work as well for externals.
I'd like to try to make a stereo version of moogladder~ and also try tanh optimizations to reduce the cpu load.
I'm not sure tanh can be optimized much more. If your CPU has a floating point unit built in, which they all do nowadays, that ought to be the fastest way to calculate it apart from having a huge lookup table.
If tanh(x) = (e^x - (1/e^x)) / (e^x + (1/e^x)) the e^x only needs to be calculated once, a = e^x, then b = 1/(e^x), then tanh = (a-b)/(a+b). I would imagine that the FPU already does it that way but I don't know.
Probably it could be approximated faster, but isn't the idea to have the most accurate value?
Martin