Realtime music programming using Snd-Rt

View: New views
3 Messages — Rating Filter:   Alert me  

Realtime music programming using Snd-Rt

by Kjetil S. Matheussen-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Hi,

Here is my camera-ready paper for icmc 2008:
http://www.notam02.no/~kjetism/sndrt_icmc2008.pdf

Hopefully someone may find parts of it very interesting.

Abstract:
"
Snd-Rt is a system for realtime sound and music programming
whose most distinct features are sample by sample
processing and a very efficient realtime-safe conservative
garbage collector. This, combined with a framework
based on the S-expression syntax, makes it relatively easy
to plug in high level languages such as Haskell, ML or
Scheme to do realtime sample by sample processing. Using
such very high level languages for realtime audio processing
could provide previously unexplored possibilities.

Snd-Rt lives inside the Snd sound editor and currently
consists of a realtime sound engine, a built-in realtimesafe
Scheme-like sound programming language named
"RT", an interface for using the Faust compiler, and an
interface for using the Stalin Scheme compiler. Stalin and
"RT" can use CLM for DSP operations, while Faust uses
its own system.

An interactive Lisp interface is provided for all the compilers,
and they all support very efficient sample by sample
processing and strongly timed coroutines.

Snd-Rt has been used for custom DSP routine prototyping,
interactive sound installations, live improvisation
(including use of custom-built hardware), exploratory
music programming, surround mixing, and to make
general sound applications.
"

_______________________________________________
Cmdist mailing list
Cmdist@...
http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist

Re: [Faudiostream-devel] Realtime music programming using Snd-Rt

by Kjetil S. Matheussen-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message



On Sun, 1 Jun 2008, Kjetil S. Matheussen wrote:

>
> Hi,
>
> Here is my camera-ready paper for icmc 2008:
> http://www.notam02.no/~kjetism/sndrt_icmc2008.pdf

Oh, I forgot. There's a few thing here and there
not implemented yet. I'll fix that soon.

_______________________________________________
Cmdist mailing list
Cmdist@...
http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist

Re: Realtime music programming using Snd-Rt

by Kjetil S. Matheussen-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Current Snd contains code which is able to run
the examples in the paper without using
a minute to compile:

http://www.notam02.no/arkiv/doc/snd-rt/icmc2008_examples.txt


[The reason it's so much faster now is that I've added some
non-cps call/cc removal algorithms to the
stalin preprocessor in snd since call/cc and cps-ed code takes
a very long time to compile with stalin. (((The stalin
preprocessor knows about some functions which are continuations,
and the Stalin compiler itself doesn't know about those.)))
Some code with call/cc will of course still have to
be translated to cps code, but most of the most important ones
(those who are added by wait, spawn, block, etc) are removed.]


Here is an extended version of the midi softsynth w/adsr envelope:

(<rt-stalin>
 (while #t
   (wait-midi :command note-on
     (define adsr (make-adsr :a 20:-ms :d 20:-ms :s 0.2 :r 50:-ms))
     (define osc
       (make-oscil :freq (midi-to-freq (midi-note))))
     (spawn
       (block
         (define vol (adsr))
         (if vol
             (out (* 0.2 vol (midi-vol) (oscil osc)))
             (stop))))
     (spawn
       (wait-midi :command note-off :note (midi-note)
         (-> adsr stop))))))


I have also added stack checks, cpu checks and a very simple
backtrace to stalin code. This makes developing very
convenient, but the code also takes xx (maybe xxx) times
longer to execute.

To remove those checks, do:
(<rt-stalin> :runtime-checks #f ...)

_______________________________________________
Cmdist mailing list
Cmdist@...
http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist
LightInTheBox - Buy quality products at wholesale price