Re: [livecode] impromptu v2.0 released

From: Click Nilson <clicksonnil_at_gmail.com>
Date: Mon, 7 Sep 2009 09:58:50 +0100

Congratulations Andrew, very impressive, and helpful screen cast.

LLVM definitely a great way to go.

It's a quick step from here to your N sines additive synthesis example
with independent amplitudes and frequencies for each sine controlled
from scheme. Though I guess the limit on complexity is that you have
to build a complex thing into one AudioUnit, rather than N AudioUnits,
for efficiency. But then the runtime compilation should make this more
efficient than N sines in an existing computer music language as
separate UGens.

Since the data input memory is shared, I guess you can update the
shared data at any rate from the scheme code, with effects happening
not delayed even by the blocksize of the audio calculations. But of
course, even if you update phase rate, you can still get
discontinuities in a higher derivative; so anticipating, how will
enveloping triggers work; two doubles of data storage, one switch and
one comparator to hold previous value? I assume you'll be gradually
refining all this to reduce the amount of code to be typed overall.

best,
Nick



On 7 Sep 2009, at 09:14, Andrew Sorensen wrote:

> Impromptu version 2.0 is now available for download at:
> http://impromptu.moso.com.au/downloads.html
>
> Impromptu v2.0 is a major release with three significant
> architectural changes.
>
> 1) A new impromptu x86 compiler
> 2) Audio signal processing directly in Impromptu.
> 3) A new concurrent garbage collector
>
> The new impromptu x86 compiler uses LLVM for backend code generation
> and supports runtime compilation of scheme functions to x86 machine
> code. In particular the compiler has been added to impromptu to
> support the efficient compilation of scheme code for data processing
> tasks such as image processing, audio signal processing and OpenGL.
> The compiler is exposed at runtime through the sys:compile call
> which accepts a scheme closure and returns a foreign function which
> may be called freely from scheme. (help sys:compile #t) will give
> you a bunch of examples.
>
> On-the-fly audio DSP programming is now supported directly within
> the impromptu scheme environment by allowing x86 code (i.e. compiled
> scheme code) to be hot-swapped into the kernel of a custom code
> AudioUnit. You may use one or more of these custom code audiounits
> anywhere in your audiounit chain - as both generators and or
> effects. Code is hot-swapped into an AU kernel by passing a given
> scheme closure to the au:code:load function. There is also a
> mechanism for sharing memory between the AU and the scheme runtime.
> (help au:code:load #t) will give you a bunch of examples.
>
> The primary motivation for the new GC is to provide greater
> performance with larger heap sizes.
>
> v2.0 also adds support for Snow Leopard but is no longer provided as
> a Universal Binary. Intel only from v2.0 forward.
>
> A brief screen-cast demonstrating the new on-the-fly audio
> functionality can be found at: http://www.vimeo.com/6096554
>
> Cheers,
> Andrew.
Received on Mon Sep 07 2009 - 10:32:55 BST

This archive was generated by hypermail 2.4.0 : Sun Aug 20 2023 - 16:02:23 BST