[racket] Small Racket-embedded dataflow DSP language

From: Tom Schouten (tom at zwizwa.be)
Date: Wed Jun 12 12:24:34 EDT 2013

On 05/30/2013 08:21 PM, Tom Schouten wrote:
> On 05/30/2013 05:30 PM, John Clements wrote:
>> On May 30, 2013, at 1:21 PM, Tom Schouten wrote:
>>> Hi List,
>>> Here's a tiny experimental tool I've been working on the last couple 
>>> of months:
>>> http://zwizwa.be/rai/rai.html
>>> It's mostly aimed at the music DSP world (sound synthesizers and 
>>> effects) where feedback structures are very important, but it could 
>>> be fairly generic in its use.  I tried to stay as close to Scheme as 
>>> possible.
>>> The basic idea is to use Racket as replacement for Matlab, i.e. to 
>>> analyze algorithms specified in a high level format, and use it to 
>>> generate dependency-free C or ASM code for deeply embedded targets.
>>> Currently it can generate binary plugins for Windows VSTi, Pure Data 
>>> and Jack Audio.
>> This looks totally awesome.  Would you consider making a Racket 
>> Package out of this? My fall class could definitely be interested.
> Cool :)
> Here's the package:
> raco pkg install github://github.com/zwizwa/rai/master
> That will run all the Racket code.
> For the C code gen, the Makefile is the best point of entry.
> Currently Linux only, and might need some tweaking.

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 

Posted on the users mailing list.