[PD-dev] Functional Programming & C code generation

Tom Schouten tom at zwizwa.be
Wed Jun 12 18:30:25 CEST 2013


Hi Pd devs,

been cleaning it up a bit. still quite raw in the details, but it 
basically works.

added synth-lib.rkt basic synth kit and synth.rkt example synthesizer:

- envelopes
- parameter control dezippers
- parameter control scales (exponential, "squashed" exponential, ...)
- SVF filter
- supersaw osc
- anti-aliased saw osc
- saturation functions
- FDN reverb tail

How I use it at this time, Linux + Pd:

make sp_host.pd_linux # build binary Pd wrapper
pd sp_test.pd & # run Pd patch built around sp_host
make livecode # continuously compile synth.rkt -> synth.sp binary module

then edit synth.rkt or any of its dependencies and the binary code 
running in Pd will be updated, leaving state intact if the type didn't 
change.

some docs at http://zwizwa.be/rai


For headless Windows VST plugin:  "make synth.dll"
This needs a Linux->Windows cross compiler; follow the error messages.

Cheers
Tom



On 05/14/2013 12:18 PM, Tom Schouten wrote:
> Hi Pd devs
>
> Is there anyone here interested in Functional Programming and C code
> generation for DSP code?
>
> I'm working on a system for DSP code development based on the principle
> of Abstract Interpretation
> http://en.wikipedia.org/wiki/Abstract_interpretation
>
> Basically, it will allow several interpretations of a single
> specification program:
> - specification as a pure functional program
> - imperative C code generation (for passing to C compiler or LLVM)
> - Z transform for frequency plots of (linearized) transfer function
> - automatic differentiation for all kinds of derivative-based tricks
> - ...
>
> It is written in Racket
> http://racket-lang.org/
>
> It's starting to get to a point where it is actually useful (there is a
> basic synth core) and could use some feedback, but please note it is
> very experimental and still needs a lot of work. Familiarity with Racket
> is probably a prerequisite at this point to make sense of it. Current
> code is here:
> http://zwizwa.be/darcs/meta/rai/
>
> It is part of a darcs archive that can be fetched using
> darcs gethttp://zwizwa.be/darcs/meta
>
> I use Pd for most of the experiments.
> There is a generator for Pd externs, and a "live coding" reload mechanism
> that can reload recompiled processing code without messing up internal 
> state,
> as long as the types are compatible.
>
> Cheers
> Tom
>
>
>
>
>
>
> _______________________________________________
> Pd-dev mailing list
> Pd-dev at iem.at
> http://lists.puredata.info/listinfo/pd-dev
>




More information about the Pd-dev mailing list