[maxmsp] [ANN] lua~
apalomba at austin.rr.com
apalomba at austin.rr.com
Fri Oct 26 12:00:01 MDT 2007
- Previous message: [maxmsp] [ANN] lua~
- Next message: [maxmsp] Re: [ANN] lua~
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Sounds awesome Graham, I am really looking forward to giving the XP version a spin. Please keep us posted. Anthony ----- Original Message ----- From: Graham Wakefield <lists at grahamwakefield.net> Date: Friday, October 26, 2007 12:45 pm Subject: [maxmsp] [ANN] lua~ To: maxmsp at cycling74.com > Hi all, > > The lua~ external is back online: > > http://www.mat.ucsb.edu/%7Ewakefield/lua%7E/lua%7E.htm > > Lua~ is a Max/MSP external embedding the Lua language along with > some > DSP functions and a scheduler supporting sample-accurate function > calling using coroutines. A lua~ object embedded in a Max patch can > > load and interpret Lua scripts that receive, transform and produce > MSP signals and Max messages. Lua~ is particularly well suited to > granular synthesis, algorithmic microsound and accurate timing > needs, > helpfully circumventing some of the limitations of the Max/MSP > environment for such work by supporting highly dynamic signal > processing graphs in parallel processes according to timing > specifications below block rate. Using an interpreted scripting > language within a graphical programming environment such as Max > offers advantages of control flow, generality of data and > structure, > high precision and control, complexity of data and functional > interdependency and variable scoping. > > Here's a very simple code example: > > -- define a function > function beep(dur) > -- play a decaying sine to the signal outlet for dur seconds: > play(Out, dur, Sine(440) * Decay(dur)) > end > > -- repeat forever: > while true do > -- launch parallel coroutine, function beep with duration 0-200 ms > go(beep, math.random() * 0.2) > > -- wait for up to two seconds > wait(math.random() * 2) > end > > There are a few special advantages to using Lua - its memory > allocator/garbage collector and general efficiency supports > interpreting script code in the audio thread, which means that > sample- > accurate function calls and control logic are possible. Lua also > supports coroutines (collaborative multithreading), kind of like > deterministic threads that are very cheap to run. I've extended > them > to be aware of sample time, so they can be used like Routines or > Tasks in SuperCollider 3, but they can embed both control logic AND > > synthesis graphs like SuperCollider 2, and also like shreds in ChucK. > > The nicest aspect: you can generate, execute, change and remove any > > number of any types of unit generators to the signal processing > with > sample accuracy, below the block-size, at run-time, within > deterministic parallel execution flows. > > The not so nice aspect: Binding Lua to Max/MSP is much less simple > than binding to Jitter, because of the underlying object model in > the > SDK (Jitter objects have excellent reflection, while only the most > recently obexed' Max objects do). The main issue is that it is not > > workable to create, connect and modify MSP objects from within a > script binding. Unfortunately this means that I had to write a new > > set of elementary unit generators rather than re-using MSP object > code. I'm also in the process of binding the STK library, so a > standard, familiar set of ugens and so on will be available. > > Currently OSX only, but maybe I can get a windows box to compile > the > XP version in the next few weeks. > > Graham > > www.grahamwakefield.net > _______________________________________________ > maxmsp mailing list > maxmsp at cycling74.com > http://www.cycling74.com/mailman/listinfo/maxmsp >
- Previous message: [maxmsp] [ANN] lua~
- Next message: [maxmsp] Re: [ANN] lua~
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
