Hi Pd-ers,
I've been working off and on for a bit on a C++ library to implement a variant of Dynamic Stochastic Synthesis, a technique developed by Iannis Xenakis. For a great history and more details of the original algorithm check out Sergio Luque's thesis [1].
The library is still pretty rough around the edges and more or less completely undocumented, but the PD object that uses it should be pretty functional. Included with the code is a helpfile as well as a gui that should make it pretty easy to jump right in.
The basic idea of DSS is to describe a waveform with a set of "breakpoints" and interpolate between them to generate the actual audio signal. The set of breakpoints forms a single cycle of a waveform, and each time one cycle gets played, the breakpoints each move for the next cycle. So each breakpoint traverses a two-dimensional random walk.
One improvement I've made to some traditional DSS implementations is the use of cubic spline interpolation instead of linear, which improves the aliasing considerably. It's not a truly bandlimited signal, but is differentiable. "improves" is obviously subjective, and linear interpolation is also available by sending a "linear" message to the object.
The other modification is the introduction of selectable center waveforms that the breakpoints will gravitate towards. Right now I only have flat, square, and sine implemented, but I'm planning on including basic triangle and sawtooth as well. The "h_pull" and "v_pull" controls effect how much the breakpoints are pulled towards the center waveform.
The external requires Thomas Grill's Flext library. Once you have it installed simply run
FLEXTDIR/build.sh pd gcc
From the base gendy directory (Where FLEXTDIR is the location of your
flext install) and you should have a shiny new binary in the pd-linux directory. The arguments to build.sh will vary depending on your system, as will the directory containing the binaries.
Please report any bugs to http://code.airwav.es/projects/gendy/issues/new
Downloads:
Source Tarball - http://code.airwav.es/attachments/download/4/gendy-0.6.0.tar.gz
x86_64 PD Binary - http://code.airwav.es/attachments/download/3/gendy~.pd_linux
You can also get the code with git clone http://git.airwav.es/gendy.git gendy
[1] http://www.sergioluque.com/texts/luque_stochastic.pdf
Pd-announce mailing list Pd-announce@iem.at http://lists.puredata.info/listinfo/pd-announce