[racket] Small Racket-embedded dataflow DSP language

From: Tom Schouten (tom at zwizwa.be)
Date: Sun Aug 25 17:49:05 EDT 2013

On 08/25/2013 12:59 AM, Tom Schouten wrote:
> On 07/14/2013 09:20 AM, Tom Schouten wrote:
>> On 06/27/2013 02:15 PM, John Clements wrote:
>>> On Jun 12, 2013, at 9:24 AM, Tom Schouten wrote:
>>>
>>>> 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 change.
>>> Very cool.
>>>
>>> If only my students weren't all running windows….
>>>
>>> John
>>>
>>>
>> It already uses mingw on linux for cross compilation so it should 
>> work pretty much out of the box with mingw on windows.
>>
>
> Bare-bones build-mingw.bat to build the VST plugin DLLs using standard 
> install MinGW / MSYS on Windows:
> https://github.com/zwizwa/rai/blob/master/rai/build-mingw.bat
>
> The MSYS deps are only there to support Makefile + shell script + 
> small unix commands.
> I suppose that part could be replaced by a racket script, which might 
> be also be more useful for building & loading the native code VST 
> plugin into racket for testing after C code generation.
>
>

using (system "C:\MinGW\bin\mingw32-g++ ..."):
https://github.com/zwizwa/rai/blob/master/rai/stream-native.rkt


>
>
>
>
>
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users
>


Posted on the users mailing list.