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@iem.at http://lists.puredata.info/listinfo/pd-dev