[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