3 - (added) dynamic, resizable arrays
4 .size( int ) resizes array
5 << operator appends new elements into array
9 - (fixed) dac amplitude no longer halved!
10 NOTE: this increases the gain from before by
11 a factor of 2, or roughly 6 dB!! BEWARE!!
12 - (fixed) corrected order of shred/ugen dealloc in VM destructor,
13 preventing a potential crash during shutdown
14 - (fixed) UAna can now upchuck() at now=0
15 - (fixed) STK Chorus UGen now has reasonable defaults
16 .max( dur, float ) for initializing to delay/depth limits
17 .baseDelay( dur ) sets current base delay
18 - (fixed) dur +=> now no longer crashes
19 - (fixed) unsporked Shred instances now given id == 0
23 - (fixed) ctrl-c no longer causes crash on shutdown
24 (was due to memory deallocation bug)
25 - (fixed) incorrect code generation for multiple expressions in 3rd clause
26 of for loops (thanks to Eduard for tracking!)
27 - (fixed) Envelope now is able to ramp down (contributed by Kassen, Dr. Spankenstein,
28 kijjaz, and others on electro-music!)
32 1.2.1.0 : codename spectral
33 - (added) Unit Analyzers (UAna: prounced U-Wanna, plural UAnae)
34 (primary creators: Rebecca and Ge)
35 provides support for spectral processing,
36 information retrieval, generalized + precise audio analysis
38 - (added) new datatypes:
40 complex: (real,imaginary)
41 example: #(3,4) is complex literal (3,4)
42 example: #(3,4) => complex value;
43 access components via value.re and value.im
46 polar: (modulus, phase)
47 example: %(.5, pi/4) is magnitude .5 and phase pi/4
48 example: %(.5, pi/4) => polar bear;
49 access components via bear.mag and bear.phase
52 example: can cast between complex and polar via standard $ casting
56 (authors: Rebecca and Ge)
57 FFT: Fast Fourier Transform
58 input: from UGen (manually input float vector)
59 output: complex spectrum (.cval()/.cvals())
60 magnitude spectrum (.cval()/.fvals())
61 (see examples/analysis/)
63 input: UAna/Blob complex vector (spectrum)
64 output: to UGen (as samples)
65 (see examples/analysis/)
66 Centroid: Centroid feature extractor
67 input: UAna/Blob float vector (mag spectrum)
68 output: single centroid value per frame
69 (see examples/analysis/features/)
70 Flux: Flux feature extractor
71 input: UAna/Blob float vector (mag spectrum)
72 output: single flux value between current and previous frame
73 (see examples/analysis/features/)
74 RMS: RMS feature extractor
75 input: UAna/Blob float vector (mag spectrum)
76 output: single RMS value of frame
77 (see examples/analysis/features/)
78 RollOff: RollOff feature extractor
79 input: UAna/Blob float vector (mag spectrum)
81 output: single RollOff value of frame
82 (see examples/analysis/features/)
85 - (added) capability to externally abort "infinite loop" shreds
86 (this deals with hanging shreds due to potentially
87 infinite loops that don't advance time)
88 - (added) OTF command: chuck --abort.shred sends network OTF
89 to server to remove current shred if there is one
90 - (added) default .toString() method to all Object's
91 - (added) adding an Object to string will first cast object to string;
93 - (added) LiSa.duration() get method, and .voiceGain() set/get
95 - (added) alternate line comment: <-- same as //
97 SinOsc s => dac; <-- here is a comment
98 - (fixed) NullPointerException when instantiating array of objects
99 containing arrays of objects
100 (thanks to chuck-users!!)
101 - (fixed) Machine.remove() on parent shred id no longer crashes
102 - (fixed) Machine.remove() on 'me' now works correctly
103 - (fixed) rounding when writing files via WvOut
104 (thanks to Chris Chafe for discovering and reporting this)
105 - (changed) default frequencies (220/440) added for various STK instruments
108 (there is no version 1.2.0.9!)
113 - (added) command line argument support
114 e.g. %> chuck foo.ck:1:hello bar:2.5:"with space"
115 also works with OTF commands
116 e.g. %> chuck + foo:1:yo
117 also works with Machine.add( ... )
119 Machine.add( "foo:1:2:yo" );
120 (see examples/basic/args.ck for accessing from code)
121 - (added) OS X: watchdog enabled
122 win32: watchdog implemented and enabled
123 (combats chuck infinite empty loop implosion)
124 - (added) OTF server/listener now ON by default...
125 to enable, specify --loop or --server
126 to disable, specify --standalone
129 Dynamics: dynamics processor (compressor, expander, etc.)
130 (author Matt Hoffman and Graham Coleman)
131 (see examples/special/)
133 GenX: classic + new lookup table functions base class
134 (author Dan Trueman, ported from RTCMix)
135 (see examples/special/)
137 float .lookup( float ) : lookup table value
138 float[] .coeffs( float[] ) : load the table
144 CurveTable (extends GenX)
145 WarpTable (extends GenX)
147 LiSa: (Li)ve (Sa)mpling!
148 (author Dan Trueman, partly based on Dan's munger~)
151 - (added) (prototype) string catenation
152 (for now will leak memory! use wisely!!!)
158 - (added) string escape sequences
159 \0 \n \t \a \" \b \f \r \v \\
160 \nnn (3 digit octal ascii)
161 - (added) new Objects:
163 StringTokenizer: uh string tokenizer (by whitespace)
164 (use to be hidden PRC object)
165 see examples/string/token.ck
167 ConsoleInput: interim console input (until file I/O)
168 (use to be hidden Skot object)
169 see examples/string/readline.ck
173 - (api) API additions
174 -------- (also see API modifications below)
175 ADSR: dur attackTime()
178 WvOut: void closeFile()
179 Hid: void openTiltSensor()
180 int read( int, int, HidMsg )
181 HidMsg: int isWheelMotion()
182 (support for mouse scroll wheels)
184 (cross-platform USB HID Keyboard Usage code)
186 (ASCII value of key, where appropriate)
188 - (api) API modifications (sorry!)
190 ADSR: float attackTime( float ) -> dur attackTime( dur )
191 float decayTime( float ) -> dur decayTime( dur )
192 float releaseTime( float ) -> dur releaseTime( dur )
194 - (api) deprecated --> new classes
195 --------------------------
198 - (fixed) adc.last() now returns correct value (was returning 0)
199 - (fixed) array is now subclass of Object
200 - (fixed) accessing null array no longer crashes (instead: exception)
201 - (fixed) allow: 0 length float arrays
202 - (fixed) check for negative array size
203 - (fixed) accessing null map no longer crashes (instead: exception)
204 - (fixed) connecting null UGen references no longer crashes
205 - (fixed) trivial (null == null) no longer evaluated as string
206 - (fixed) strict (x,y) => z type checking
207 - (fixed) UGens no longer able to make duplicate connections
208 - (fixed) && now terminates early if an operand evaluates to 0
209 || terminates early if an operand evaluates to 1
210 - (fixed) bug accessing static members of built-in classes
211 - (fixed) OscSend.startMsg no longer silently fails when
212 using a single string message specification
213 - (fixed) Math.atan2 now accepts the proper arguments
214 - (fixed) increased OTF command network fail-safe measures
215 - (fixed) STK BlitSquare now produces correct frequency
216 (applied fix from STK release)
217 - (fixed) no longer spontaneously crashes when HidIn and
218 other event based input mechanisms are firing rapidly
219 - (fixed) using non-static variables from inside static functions
220 - (fixed) variables must be declared before being used
225 - added: (all) HidIn.name() now returns meaningful device name
226 - fixed: (all) fixed STK Envelope bug
227 - fixed: (osx) mouse motion now correctly returns delta Y
228 - fixed: (win32) joystick hat messages now properly reported
229 - fixed: (win32) fixed bug where joysticks of same model/product
230 id would send messages through the same HidIn object
231 - fixed: (all) seg fault in OSCSend.startMsg() with single
232 string message specification
237 - (api) deprecated --> new classes
238 --------------------------
243 pulseosc --> PulseOsc
250 halfrect --> HalfRect
251 fullrect --> FullRect
260 polezero --> PoleZero
268 --------------------------
269 - (added) --deprecate:X flag
270 X can be stop, warn, or ignore - default is warn
271 - (added) STK BiQuad get functions pfreq, prad, zfreq, zrad
272 - (added) ADSR functions:
273 void .set( dur a, dur d, float s, dur r );
274 void .set( float a, float d, float s, float r );
275 - (added) new UGens (adapted from SC3 Server, Pure Data, CSound)
276 --------------------------
277 LPF : resonant lowpass filter (2nd order butterworth)
278 HPF : resonant highpass filter (2nd order butterworth)
279 BPF : bandpass filter (2nd order butterworth)
280 BRF : bandreject filter (2nd order butterworth)
281 ResonZ : resonant filter (BiQuad with equal-gain zeros)
282 FilterBasic : base class to above filters
283 --------------------------
284 - (added) new HidIn static variables for HidMsg message and device types
285 - (added) HidMsg fields to determine device type and number
286 - (added) HidMsg functions with capitalization rather than underscores
287 (underscored functions deprecated)
288 - (added) .period for all oscillators
289 - (fixed) floating point denormals no longer cause potentially
290 massive CPU usage on intel processors, this includes
291 BiQuad, OnePole, TwoPole, PoleZero, JCRev, PRCRev, NRev
292 - (fixed) STK Echo.max no longer gives incorrect warnings
293 - (fixed) linux makefiles now respects CC/CFLAGS/CXX (Cedric Krier)
294 - (fixed) SinOsc/TriOsc/PulseOsc/SqrOsc/Phasor.sync now unified:
295 .sync == 0 : sync frequency to input
296 .sync == 1 : sync phase to input
297 .sync == 2 : fm synth
299 NOTE: the above changes may break/affect existing patches
300 using TriOsc, PulseOsc, or SqrOsc
301 - (fixed) TriOsc/PulseOsc/SqrOsc phase consistent with convention
302 - (fixed) ADSR now handles keyOff() before sustain state
303 - (fixed) ADSR now correctly inherits Envelope
308 - (added) support for Mac OS X universal binary
309 - (added) executable now reports targets:
313 chuck version: 1.2.0.6 (dracula)
314 exe target: mac os x : universal binary
315 http://chuck.cs.princeton.edu/
319 - (added) support for Mac OS X on Intel: (make osx-intel)
320 - (added) win32 - boost thread priority default from 0 to 5
321 - (added) Mandolin.bodyIR( string path ): set body impulse response
322 - (added) HID: support for mouse input on OS X, Windows, Linux
323 through 'HidIn' class
324 - (added) HID: support for keyboard input on OS X, Windows
325 through 'HidIn' class
326 - (added) new HID examples:
329 - (added) OS X: --probe human-readable MIDI names
330 (thanks to Bruce Murphy)
331 - (fixed) multiple declarations now behave correctly:
332 (example: int a, b, c;)
333 - (fixed) now possible to spork non-static member functions
334 (example: Foo foo; spork ~ foo.go();)
335 - (fixed) sporking fixed in general
336 - (fixed) pre/post ++/-- now work correctly
337 (example: int i; <<< i++ + i++ * ++i >>>;)
338 - (fixed) public classes can now internally reference non-public
339 classes in the same file
340 - (fixed) obj @=> obj now ref counts correctly
341 - (fixed) STK Mandolin.detune( float f ) changed
342 - (fixed) STK Mandolin.damping( float f ) changed
353 - (added) multi-channel audio
354 - use --channels<N> or -c<N> set number of channels
355 for both input and output
356 - use --out<N>/-o<N> and --in<N>/-i<N> to request
357 # of input and output channels separately
358 - stereo is default (for now)
359 - (added) UGen.channels()
360 - (added) class UGen -> class UGen_Multi -> class UGen_Stereo
361 - (added) UGen UGen_Multi.chan( int )
362 use this to address individual channels
363 - (added) examples in examples/multi
364 - n.ck : n channels detuned sine
365 - i.ck : n channels impulse
366 - (added) HID support (author: Spencer Salazar)
367 - (added) 'HidIn' event class (see examples/hid/*.ck)
368 - (added) Terminal Keyboard Input (immediate mode, separate from HID)
369 - (added) 'KBHit' event class (see examples/event/kb*.ck)
370 - (added) sndbuf.chunks : better real-time behavior
371 - can be set to arbitrary integers
372 (before the .read happens)
373 - default is 0 frames (no chunk)
374 - set .chunks to 0 to read in entire file
376 - (added) int math.isinf( float ) // infinity test
377 - (added) int math.isnan( float ) // NaN test
378 (see examples/basic/infnan.ck)
379 - (added) sndbuf.valueAt( int ) for returning sample at arbitrary pos
380 (see examples/basic/valueat.ck)
381 - (added) MASSIVE STK UPDATE
382 - (added) 'StkInstrument' class
385 .freq( float ) / .freq()
386 .controlChange( int, float )
387 - (added) the following now extend 'StkInstrument'
388 (most of them have additional parameters)
396 - FM (and all its subclasses: BeeThree, FMVoices,
397 HevyMetl, PercFlut, Rhodey, TubeBell, Wurley)
406 - (added) better STK documentation
407 http://chuck.cs.princeton.edu/doc/program/ugen.html
408 - (added) examples/stk/modulate.ck
409 - (added) --watchdog and --nowatchdog flags
410 (very experiment watchdog for real-time audio)
411 - (added) () => function; // calls function();
412 (thanks to Mike McGonagle for reporting)
413 - (added) if exp: ( cond ? if_cond : else_cond )
414 (thanks to Mike McGonagle for reporting)
415 - (added) math.abs( int ), math.fabs( float ), math.sgn( float )
416 (std version unchanged)
417 - (added) new examples
442 - (fixed) sinsoc, triosc, sqrosc, phasor:
443 - .sync( 0 ) uses input signal to modulate frequency
444 - .sync( 2 ) uses input signal to modulate phase
446 - (fixed) impulse.last() no longer has extra samp delay
447 (thanks to Mike McGonagle for reporting)
448 - (fixed) class inheritance now handles the first overloaded
449 function of a parent correctly when called using a
450 subclass instance. in other words, this part sucks
452 (thanks to Mike McGonagle for reporting)
453 - (fixed) (internal) type checker re-instantiation patched
454 - (fixed) (internal) detach_all() moved to chuck_globals.cpp
455 - (fixed) (internal) global variables moved to chuck_globals.cpp
456 - (fixed) file handles close in compiler and parser
457 - (fixed) syntax error causing syntax errors
462 - (added) The ChucK Manual (pdf)
463 fantastic work by Adam Tindale and other documentors
464 see doc/Chuck_manual.pdf
465 - (added) Envelope.duration( dur ), Envelope.duration()
466 - (added) Envelope.keyOn(), Envelope.keyOff();
467 - (added) PitShift.mix( float ), PitShift.mix()
468 (originally effectMix)
469 - (added) std.srand( int ) : seed random number generator
470 - (added) update to RtAudio 3.2.0 -> much lower latency: Window DS
471 (thanks to Gary Scavone and Robin Davies)
472 - (added) update to RtMidi 1.0.4 -> improved midi: linux ALSA
473 (thanks to Gary Scavone and Pedro Lopez-Cabanillas)
474 - (added) bandlimited ugens: Blit, BlitSaw, BlitSquare
475 (thanks to Robin Davies for implementation,
476 Gary Scavone for putting them in STK)
477 - (added) examples/basic/foo.ck foo2.ck tick.ck tick2.ck
478 (foo2 shows using Blit, tick.ck is a simple counter)
479 - (added) examples/class/dinky.ck try.ck
480 (creating and using class to make instruments)
481 - (fixed) sndbuf.read now closes file handle and sets curf
482 - (fixed) default bufsize=256 under OSX and 512 under all other
483 - (fixed) chuck + foof garbled error message
484 - (fixed) chuck.lex compatibility under some linux
485 - (fixed) waiting on null event: no longer crashes VM
486 - (fixed) function arguments: no longer allow reference to primitive types
487 - (fixed) function: correctly select overloaded functions w/ implicit cast
488 - (fixed) std.atoi() std.atof(): no longer crash on null string
489 - (fixed) std.fabs(): now works correctly
490 - (fixed) basic/moe.ck larry.ck currly.ck use fabs
491 - (fixed) missing base class virtual destructors;
492 FreeBSD/g++ compatibility (thanks rasmus)
493 - (fixed) most -Wall warnings
494 - (fixed) CK_LOG_SYSTEM_ERROR now CK_LOG_CORE
500 (syntax change - 'loop' -> 'repeat')
501 - loop( ... ) construct (see 1.2.0.2) changed to repeat( ... )
502 - usage and semantics same as before
503 - this is also an experimental language feature
504 (let us know if it's good or bad)
505 - float std.abs( float ) changed -> int std.abs( int )
506 - use std.fabs( ... ) for floating point absolute value
508 - (added) /* block comments */
510 - closing '*/' not necessary if commenting out rest of the file
511 - (fixed) arrays of null object references correctly allocated
512 : Event @ events[128];
513 - (fixed) DEFAULT sndbuf rate now set correctly to interpolate
514 for files outside of chuck sample rate (no longer have to
515 explicit do 1 => buf.rate)
516 - (fixed) examples/midi/polyfony*.ck no longer creates 128
517 unnecessary events...
518 - (changed) examples/stk/wurley.ck -> examples/stk/wurley2.ck
519 - (changed) examples/stk/wurley.ck (wacky version)
524 (sorry for the API changes)
525 - (API change) OSC_Send class name changed to 'OscSend'
526 (also): .startMesg(...) name changed to startMsg(...)
527 - (API change) OSC_Recv class name changed to 'OscRecv'
528 - (API change) OSC_Addr class name changed to 'OscEvent'
529 (also): .hasMesg() name changed to .hasMsg()
530 (also): .nextMesg() name changed to .nextMsg()
531 - (API change) STK Shakers.freq now expect Hz instead of MIDI number
533 - (moved) examples/event/opensound*.ck moved to examples/osc/OSC*.ck
534 (see OSC_send.ck and OSC_recv.ck for examples on OpenSoundControl)
535 - (moved) examples/event/polyfony*.ck to examples/midi/
537 - (added) 'loop(...){ }' control structure :
538 example: loop( 8 ) { ... } // executes body 8 times
539 example: loop( foo ) { ... } // executes body foo times
540 (foo is evaluated exactly once entering the loop, the
541 value at that time is used as a constant to control
542 loop iteration - even if foo is changed in the loop
544 - supports break and continue
545 - important: one fundamantal difference between the loop
546 semantic and for/while/until semantic is that the argument
547 expression 'exp' in loop( exp ) is evaluated exactly once
548 when the loop is first entered.
549 - (added) MidiIn and MidiOut member functions:
550 .good() : whether the thing is good to go (int)
551 .num() : the device number (int)
552 .name() : the device name (string)
553 .printerr( int ) : whether to auto print errors (default YES)
554 - (added) --version command line flag (Graham)
556 - (changed) chuck --status now prints shreds sorted by id
557 (previously it was the current shreduling order + blocked)
558 - (changed) a udp port may now be shared by many OSC_Recv (phil)
559 : the incoming messages are broadcast to all
560 - (changed) address/type string in OSC: comma now optional (phil)
562 - (fixed) events are now 0-sample synchronous (instead of 1)
563 - (fixed) startup audio stability for --callback mode
564 - (fixed) incorrect 'continue' behavior in for loops
565 - (fixed) improved OSC stability (phil)
566 - (fixed) OSC shreduling sanity check failed now resolved
567 - (fixed) math.round for negative numbers (win32)
568 - (fixed) std.mtof and std.ftom now internally double precision
569 - (fixed) removed extra console output in STK Flute
570 - (fixed) multiple delete/assertion failure on type rollback
571 - (fixed) chuck --kill now closes WvOut and MidiRW file handles
572 - (added) examples/midi/gomidi.ck : very useful sometimes
573 - (added) examples/midi/gomidi2.ck
574 - (added) examples/basic/rec-auto.ck (rec2.ck back in action)
575 - (added) examples/basic/fmsynth.ck (from v1)
576 - (added) examples/sitar.ck
577 - (fixed) examples/stk/*-o-matic.ck now uses array
582 - (added) full callback capability for real-time audio
583 - blocking functionality still available
584 - select via flags: --blocking and --callback
585 - improves latency and stability, especially on linux
586 - use --callback (default) for low latency / small buffer size
587 - use --blocking for higher throughput
588 - (fixed) crash when doing on-the-fly 'replace' : chuck --replace 0 foo.ck
589 - (fixed) OSC event function now correctly named ("event")
590 - (fixed) removed debug output in OSC
591 - (fixed) implicit cast is now correct when sporking (thanks to Manfred Brockhaus)
592 - (fixed) examples code reformatted, cleaned, and commented
593 - (fixed) nested class definitions can now have same name as outer class
594 - (fixed) nested class bug in scan1 (thanks to Robin Davies)
595 - (fixed) variable resolution in parent class now visible (thanks to Robin Davies)
596 - (fixed) variable resolution ordering
597 - local, class, parent, global (thanks to Robin Davies)
598 - (fixed) emitter now asserts inheritance instead of equality (thanks to Robin Davies)
599 - (fixed) string comparison ==, !=
600 - (added) string operations <, <=, >, >=
606 SYNTAX and OPERATORS:
607 - (added) +=>, operator : 2 +=> i; (also) -=>, *=>, /=>, %=>
608 - (added) @=> for explicit assignment
609 this is the only way to make object reference assignments
610 - (added) implicit int to float casting
611 - (changed) cast now look like: 1.1 $ (int) => int i;
612 - (added) function call by chucking :
614 (1,4) => math.rand2f => result;
616 math.rand2f(1,4) => result;
619 - (fixed) type system for existing types
620 - (added) forward lookup of classes and functions (mutual recursion)
621 - (added) stack overflow detection for massive recursion
624 - (added) language specification:
625 http://chuck.cs.princeton.edu/doc/language
628 - (added) --probe prints all audio and MIDI devices
629 - (added) --log or --verbose logs compiler and virtual machine
630 - (added) --logN or --verboseN multi level logging
635 - (added) 'class' definitions : class X { int i; }
636 - (added) 'extends' keyword : class Y extends Event { int i; }
637 - (added) virtual/polymorphic inheritance
638 - (added) added pre-constructors - code at class level
639 gets run when object is instantiated
640 - (added) function overloading :
641 class X { fun void foo() { } fun void foo( int y ) { } }
642 - (added) base classes (can be extended):
645 - (added) base classes (cannot be extended):
648 - (added) member data
649 - (added) static data
650 - (added) member functions
651 - (added) static functions
654 - (added) base Event class : Event e;
656 can be extended to custom events
657 (see one_event_many_shreds.ck)
658 - (added) waiting on event, chuck to now :
659 e => now; // wait on e
660 - (added) e.signal() wakes up 1 shred, if any
661 - (added) e.broadcast() wakes up all shreds waiting on e
662 - (added) class MidiEvent (see gomidi2.ck)
663 alternative to polling.
664 - (added) class OSCEvent
667 - (added) arrays : int a[10]; float b[20]; Event e[2];
668 - (added) multidimensional arrays : int a[2][2][2];
669 - (added) associative arrays : int a[10]; 0 => a["foo"];
670 all arrays are both int-indexed and associative
671 - (added) array initialization : [ 1, 2, 3 ] @=> int a[];
672 - (added) .cap() for array capacity
673 - (added) .find() test if item is associative array
674 - (added) .erase() erase item in associative array
679 - (changed) all ugen parameters are now also functions:
681 440 => s.freq => val;
683 s.freq( 440 ) => val;
684 - (changed) left-most parameters must now be called as functions
688 f.freq() => float val;
690 440 => s.freq => float val;
693 - (added) class Shred
694 - (added) .yield() .id()
697 - (added) class string
701 all stereo unit generators have .left, .right, .pan functions
702 - (changed) stereo ugen: dac (2 in, 2 out)
703 - (changed) stereo ugen: adc (0 in, 2 out)
704 - (added) stereo ugen: pan2 take mono or stereo input and pans
705 - (added) stereo ugen: mix2 mix stereo input into mono
710 - last 1.1 release : contains all 1.1 changes
715 - FIFO to RR for audio and synthesis - improves stability on OS X
716 - fixed stack underflow emitter bug with declarations
717 - fixed cpu sleep bug on win32
722 - fixed clicks when using adc unit generator
723 (thanks to paul botelho for testing)
724 - added 'maybe' keyword
725 maybe == 0 or 1, with 50% probability each
728 - maybe.ck : the maybe keyword - bad idea? maybe.
729 - maybecli.ck : maybe click, maybe not
731 adc examples work better:
739 - when a shred is removed from VM, all children shreds are
740 also recursively removed
741 (this fix crash due to removing shreds with active children shreds)
742 (to keep children around, put parent in infinite time-loop)
743 (this isn't always good - real solution coming soon)
744 - 'start' keyword now available - holds the a shred's begin time
747 - powerup.ck : start local variable changed name
748 - spork.ck : added infinite time loop to keep children active
753 - crtical patch shreduler time precision
754 - same as 1.1.5.1 - see below
759 - on-the-fly chuck files to remote hosts!
760 > chuck @hostname + foo.ck
761 > chuck @hostname -p<N> + foo.ck
762 - TCP replacing UDP for commands
763 - endian observed (mac <-> win32/linux)
764 - more sensible VM output for on-the-fly commands
765 - many on-the-fly bug fixes
766 - --replace: new shred inherits the replaced shred id
767 (useful to keep track of shreds in VM)
768 - sndbuf automatically set .rate to 1.0 (instead of 0.0)
769 (0.0 => buf.rate if no play on next time advance)
770 - new on-the-fly examples
774 - otf_*.ck - illustrates precise on-the-fly timing
775 (adapted from Perry's ChucK drumming + Ge's sine poops)
777 chuck them one by one into the VM:
779 terminal 1%> chuck --loop
780 terminal 2%> chuck + otf_01.ck
782 terminal 2%> chuck + otf_02.ck
784 (repeat through otf_07.ck)
785 (remove, replace and add your own)
790 - now able to write audio files (wav, aiff, raw)
791 (try rec.ck and rec2.ck concurrently with any other shreds
793 - STK file endian is now observed (more things should work
794 on little endian systems)
795 - added 4 "special" built-in sound samples
796 "special:glot_pop" - glottal pulse (flat)
797 "special:glot_ahh" - glottal 'ahh' pop
798 "special:glot_eee" - glottal 'eee' pop
799 "special:glot_ooo" - glottal 'ooo' pop
800 (see/listen to moe++.ck, larry++.ck, curly++.ck)
801 - all bulit-in sound samples now loadable from both WaveLoop and sndbuf
802 - (win32) sndbuf now properly loads wav aiff
805 - moe++.ck - stooges, evolved
808 - rec.ck - run this concurrently to write audio to file
809 (also try with -s flag for file out, no real-time audio)
810 - rec2.ck - same as rec, but writes to different file every time,
816 - all of STK is now in ChucK!
817 - new examples (see below)
818 - add '--bufnum<N>' to chuck command line (number of buffers)
819 - --status no longer prints full path for source
820 - full path now works for command line + (thanks Adam T.)
822 - improved online ugen documentation (go phil!)
824 new ugens: (again, thanks to Phil Davidson!)
836 delayp - variable write position delay line
839 band-o-matic.ck - banded waveguide, automated
840 delayp.ck - shows usage
841 mode-o-matic.ck - modal bar, happy chaos
842 stifkarp.ck - stifkarp, chaos
847 - added win32 visual studio support (chuck_win32.*)
848 - new oscillators (see below, thanks to Phil)
849 - corrected more issues on some 64-bit systems
850 - new examples (see below)
851 - chucking to oscillators now able to control phase
852 (alternative to doing FM by hand (1::samp at a time),
853 see pwm.ck and sixty.ck) (thanks to Phil)
856 triosc - triangle wave
857 pulseosc - pulse wave oscillator w/ controllable pulse width
863 sixty.ck - shows osc's
864 pwm.ck - basic pulse width modulation
865 (you can still do FM "by hand" - see fmsynth.ck)
870 - improved performance (reduce cpu overhead)
871 - fixed bug that caused crash on ctrl-c
872 - added sndbuf.play (same as rate)
873 - corrected issues on some 64-bit systems
874 - sndbuf.ck now works
878 - added netin/netout unit generators (alpha version)
879 - added a lot of STK unit generators (thanks to philipd)
880 (over 80% of STK is now imported)
881 - fixed Shakers (thanks to philipd) : examples/shake-o-matic.ck
882 - better compilation for cygwin
884 - added many READ functionality for ugen parameters
885 see online documentation at:
886 http://chuck.cs.princeton.edu/doc/program/ugen.html
889 - netout (alpha version) - audio over UDP (see net_send.ck)
890 - netin (alpha version) - audio over UDP (see net_recv.ck)
909 - shake-o-matic.ck - STK shakers going bonkers
910 - net_send.ck - oneway sender
911 - net_recv.ck - oneway recv
912 - net_bounce.ck - redirect
917 - fixed bug for multiple declarations
918 - made functions local to shred by default
919 - shadowing now works
920 - add 'blackhole' ugen for ticking ugens
921 - added std.mtof (philipd)
929 - blackhole - the silent sample sucker
939 - powerup.ck ( (ab)use of TwoPole and sporking)
940 - i-robot (building feedback filters)
941 - voic-o-form.ck (music for replicants)
942 - rhodey/wurley.ck (more stk-o-matics)
946 - added sndfile patch for jack/sndfile (Martin Rumori)
947 - added special raw wav for WaveLoop (philipd, gewang)
949 (see examples/dope.ck)
971 - fixed shred shreduling ID bug for on-the-fly added shreds (gewang)
972 - fixed function resolution for on-the-fly added shreds (gewang)
973 - added math.nextpow2( int n ) (Niklas Werner, gewang)
976 - Mandolin (see examples/mandolin.ck examples/mand-o-matic.ck)
977 - Moog (see examples/moogie.ck)
980 - mandolin.ck (use of STK mandolin)
981 - mand-o-matic (fire it up!)
982 - dope.ck (Homer's WaveLoop using internal STK sound)
983 - print_last.ck (prints last ugen output)
984 - wind2.ck (2 shreds control parameters)
989 - add sndfile support (Ari Lazier)
990 - add sndbuf file reading/writing (Ari Lazier)
991 - add sinosc.sfreq and phase (Phil Davidson)
992 - add sndbuf rate and sinc interp (Phil Davidson)
993 - add cget functions for unit generators parameters
994 (many parameters are readable now)
995 - add .last for last sample computed for all ugen's
996 - add constants in lib import
997 - add math.pi math.twopi math.e
998 - add --srate(N) in command line (chuck --help)
999 - typing .ck extension optional on command line
1000 - fixed spork bug involved local variables
1001 - fixed nested function calls
1002 - fixed math.min/max bug (Phil Davidson)
1003 - fixed audio stability OS X (Ari Lazier)
1004 - fixed MidiOut issue (thanks to n++k)
1019 - added support for arbitrary audio in/out (via command line)
1025 - added demo[0-5].ck to examples
1026 - PROGRAMMER updated
1027 - big/little endian issue fixed
1032 - major update to use double float for time, dur, and float
1033 (this fixes the millisecond bug)
1038 - fixed win32 build problem (thanks to Adam Wendt)
1039 - fixed midi stack problem (thanks to Thomas Charbonnel)
1044 - fixed mem stack bug (report Alex Chapman)
1045 - added jack support (thanks to Thomas Charbonnel)
1051 - bad midiin now returns 0
1052 - supports sound card with no input
1058 - added ability to spork shreds from code
1060 - 0-127 MIDI devices support
1061 - fix bugs in on-the-fly commands
1062 - added features to --add, --remove
1063 - added --time --kill
1064 - fixed table bug (thanks to n++k)
1065 - fixed linux makefile (thanks to n++k)
1066 - added STK ugen: WaveLoop, Shakers, JCRev, ADSR
1067 - added shred-time synch by T - (now % T ) => now;
1079 1.1.3.0 - initial release