Was quite intrigued by this algorithm so I whipped an implementation up. Took me a while but I got it mostly right. Well... got something working. Haven't actually checked out the original to see how it compares.
There is one big difference though. I use a block size of 512 samples and fix the fundamental frequency to that size (comes out to about 86.13Hz). Then I scale the amplitude list proportionally to an arbitrarily chosen base frequency and the played frequency. This way it's easier to work with tabosc4~ and at 512 samples the computation time is short enough to play live (raise the sampling rate to get better results).
Requires PD-Extended and you need to unzip it onto your path.
On Mac OS X it would look like this:
~/Library/Pd/zynpadsynth/help-zynPadsynth.pd
~/Library/Pd/zynpadsynth/relF.pd
~/Library/Pd/zynpadsynth/waitblock.pd
~/Library/Pd/zynpadsynth/presets/melow.txt
~/Library/Pd/zynpadsynth/presets/reed.txt
~/Library/Pd/zynPadsynth.pd
~/Library/Pd/zynPadsynthGUI.pd
Open zynpadsynth/help-zynPadsynth.pd
Let me know what you think.
http://www.pdpatchrepo.info/hurleur/zynpadsynth.zip