Pd-0.43.1-double.app

------------------------------------------------------------------------
Double-precision Pd, compiled from the pd-double project on https://github.com/pd-projects/pd-double. Notice that this project is at the moment in alpha state: most is tested and bugfixed, but not all. Also mind that double-precision Pd is not compatible with single-precision externals! 

For illustrated examples of double precision Pd, see http://www.katjaas.nl/doubleprecision/doubleprecision.html.

------------------------------------------------------------------------

How to use the test patches:

Warning! Before listening to audio from double precision Pd for the first time on your system, turn down your amp very low. There are many different audio API's used for Pd and some of them may not function properly yet for double precision.

The patches in 1class-tests are functional tests for classes that have rewritten code in them. You can check if the objects behave normal under normal conditions, and how they behave with abnormal input (NaN, inf or excessively large numbers). 

Patches in 2perfo-tests can be used to profile classes with help of a performance profiler. I used Shark on OSX. In order to compare between single precision, double precision and original Pd, you best create a locally installed build of each.

Directory 3precision-tests has some patches illustrating common precision issues, and precision issues specific to Pd.

------------------------------------------------------------------------

Tests done:

I have tested the rewritten classes (phasor~, cos~, osc~, vcf~ and tabosc4~) for their functioning, robustness and performance. Issues in other classes were found and fixed as a by-effect of these tests. The functioning of all objects in vanilla Pd was superficially checked in their respective help files, which can be easily accessed from the included patch Pd-objects-reference.pd. Functional testing and performance profiling was done on OSX. Benchmarking was done on OSX and Linux.

------------------------------------------------------------------------

To do / known issue's:

Throughout Pd's code, math constants are often defined with only six digits of decimal precision, like 3.14159 for pi. I have not found and replaced all such occurrences yet.

I had the hope that the fft~ family could do frames longer than 2^17 samples in double precision, but this is not the case. Fourier transform is done via Fast Hartley Transform as written by Ron Mayer. I have no clue how this code works.

Ideally, a test environment should be developed to systematically test all classes and methods in Pd. But, considering the amount of work involved in a decent test patch, and the variety in requirements for the classes, I foresee incremental progress, rather than a one-size-fits-all automated test procedure. Not to mention the testing and fixing of Pd-extended classes...

--------------------------------------------------------------------------

Katja Vetter September 2011
katjavetter@gmail.com
www.katjaas.nl

--------------------------------------------------------------------------
C code and patches based on Pure Data, the work of Miller Puckette and others. Copyright Miller Puckette. 