[linux-audio-user] chuck-1.2.0.1 (dracula) released

Ge Wang gewang at CS.Princeton.EDU
Fri Sep 30 23:45:53 EDT 2005


Dear all,

chuck-1.2.0.1 (dracula), the second major release of the 
strongly-timed, concurrent, and on-the-fly audio programming language, 
is available.  it contains support for arrays (finally), classes, 
events, as well as many other additions, bugs fixes, and new bugs!

For linux: real-time audio now defaults to using a callback model 
(blocking functionality still available via command line flag), which 
greatly increases stability under Jack (and for much lower buffer sizes 
across the board).  Many thanks to Dave Robillard, Florian Schmidt, 
Leonard "paniq" Ritter and others for their suggestions, ideas, and 
testing.

Home lair:

     http://chuck.cs.princeton.edu/

Improved documentation and language specification (finally):

     http://chuck.cs.princeton.edu/doc/
     http://chuck.cs.princeton.edu/doc/language/

Happy ChucKing!  (and let us know if you run into any issues)

Best,
chuck team
(Perry, Ananya, Phil, Adam, Ajay, Ge ...)

mailing lists and forums:

     http://chuck.cs.princeton.edu/community.html

---
what's new:
---
1.2.0.1 - 2005.9.27
   - (added) full callback capability for real-time audio
     - blocking functionality still available
     - select via flags: --blocking and --callback
     - improves latency and stability, especially on linux
     - use --callback (default) for low latency / small buffer size
     - use --blocking for higher throughput
   - (fixed) crash when doing on-the-fly 'replace' : chuck --replace 0 
foo.ck
   - (fixed) OSC event function now correctly named ("event")
   - (fixed) removed debug output in OSC
   - (fixed) implicit cast is now correct when sporking (thanks to 
Manfred Brockhaus)
   - (fixed) examples code reformatted, cleaned, and commented
   - (fixed) nested class definitions can now have same name as outer 
class
   - (fixed) nested class bug in scan1 (thanks to Robin Davies)
   - (fixed) variable resolution in parent class now visible (thanks to 
Robin Davies)
   - (fixed) variable resolution ordering
     - local, class, parent, global (thanks to Robin Davies)
   - (fixed) emitter now asserts inheritance instead of equality (thanks 
to Robin Davies)
   - (fixed) string comparison ==, !=
   - (added) string operations <, <=, >, >=


---
1.2.0.0

   SYNTAX and OPERATORS:
   - (added) +=>, operator : 2 +=> i; (also) -=>, *=>, /=>, %=>
   - (added) @=> for explicit assignment
     this is the only way to make object reference assignments
   - (added) implicit int to float casting
   - (changed) cast now look like: 1.1 $ (int) => int i;
   - (added) function call by chucking :
     // call
     (1,4) => math.rand2f => result;
     // same as
     math.rand2f(1,4) => result;

   LANGUAGE:
   - (fixed) type system for existing types
   - (added) forward lookup of classes and functions (mutual recursion)
   - (added) stack overflow detection for massive recursion

   DOCUMENTATION:
   - (added) language specification:
         http://chuck.cs.princeton.edu/doc/language

   COMMAND-LINE:
   - (added) --probe prints all audio and MIDI devices
   - (added) --log or --verbose logs compiler and virtual machine
   - (added) --logN or --verboseN multi level logging
     1 - least verbose
     10 - most verbose

   OBJECTS:
   - (added) 'class' definitions : class X { int i; }
   - (added) 'extends' keyword : class Y extends Event { int i; }
   - (added) virtual/polymorphic inheritance
   - (added) added pre-constructors - code at class level
     gets run when object is instantiated
   - (added) function overloading :
     class X { fun void foo() { }  fun void foo( int y ) { } }
   - (added) base classes (can be extended):
     Object, Event, UGen
     see below
   - (added) base classes (cannot be extended):
     array, string
     see below
   - (added) member data
   - (added) static data
   - (added) member functions
   - (added) static functions

   EVENTS:
   - (added) base Event class : Event e;
     can be used directly
     can be extended to custom events
     (see one_event_many_shreds.ck)
   - (added) waiting on event, chuck to now :
     e => now; // wait on e
   - (added) e.signal() wakes up 1 shred, if any
   - (added) e.broadcast() wakes up all shreds waiting on e
   - (added) class MidiEvent (see gomidi2.ck)
     alternative to polling.
   - (added) class OSCEvent

   ARRAYS:
   - (added) arrays : int a[10]; float b[20]; Event e[2];
   - (added) multidimensional arrays : int a[2][2][2];
   - (added) associative arrays : int a[10]; 0 => a["foo"];
     all arrays are both int-indexed and associative
   - (added) array initialization : [ 1, 2, 3 ] @=> int a[];
   - (added) .cap() for array capacity
   - (added) .find() test if item is associative array
   - (added) .erase() erase item in associative array

   UGENS:
   - (added) class UGen
     can be extended
   - (changed) all ugen parameters are now also functions:
     // set freq
     440 => s.freq => val;
     // same as...
     s.freq( 440 ) => val;
   - (changed) left-most parameters must now be called as functions
     // no longer valid
     f.freq => float val;
     // valid
     f.freq() => float val;
     // still ok
     440 => s.freq => float val;

   SHREDS:
   - (added) class Shred
   - (added) .yield() .id()

   STRINGS:
   - (added) class string

   AUDIO:
   - (added) stereo
     all stereo unit generators have .left, .right, .pan functions
   - (changed) stereo ugen: dac (2 in, 2 out)
   - (changed) stereo ugen: adc (0 in, 2 out)
   - (added) stereo ugen: pan2 take mono or stereo input and pans
   - (added) stereo ugen: mix2 mix stereo input into mono




More information about the Linux-audio-user mailing list