3 - (added) dynamic, resizable arrays
4 .size( int ) resizes array
5 << operator appends new elements into array
6 .capacity( int ) reserves minimum capacity
7 .clear() clears the size
8 .reset() clears the size, reserve default capacity
12 - (added) new UAna: FeatureCollector (rebecca)
13 turns UAna input into a single feature vector, upon .upchuck()
14 - (added) int Shred.done() // is the shred done?
15 int Shred.running() // is the shred running
16 - (fixed) dac amplitude no longer halved!
17 NOTE: this increases the gain from before by
18 a factor of 2, or roughly 6 dB!! BEWARE!!
19 - (fixed) corrected order of shred/ugen dealloc in VM destructor,
20 preventing a potential crash during shutdown
21 - (fixed) UAna can now upchuck() at now=0
22 - (fixed) STK Chorus UGen now has reasonable defaults
23 .max( dur, float ) for initializing to delay/depth limits
24 .baseDelay( dur ) sets current base delay
25 - (fixed) dur +=> now no longer crashes
26 - (fixed) unsporked Shred instances now given id == 0 (thanks Kassen)
27 - (fixed) typos in ugen_xxx.cpp and chuck-specific rtaudio.cpp (/moudi)
31 - (fixed) ctrl-c no longer causes crash on shutdown
32 (was due to memory deallocation bug)
33 - (fixed) incorrect code generation for multiple expressions in 3rd clause
34 of for loops (thanks to Eduard for tracking!)
35 - (fixed) Envelope now is able to ramp down (contributed by Kassen, Dr. Spankenstein,
36 kijjaz, and others on electro-music!)
40 1.2.1.0 : codename spectral
41 - (added) Unit Analyzers (UAna: prounced U-Wanna, plural UAnae)
42 (primary creators: Rebecca and Ge)
43 provides support for spectral processing,
44 information retrieval, generalized + precise audio analysis
46 - (added) new datatypes:
48 complex: (real,imaginary)
49 example: #(3,4) is complex literal (3,4)
50 example: #(3,4) => complex value;
51 access components via value.re and value.im
54 polar: (modulus, phase)
55 example: %(.5, pi/4) is magnitude .5 and phase pi/4
56 example: %(.5, pi/4) => polar bear;
57 access components via bear.mag and bear.phase
60 example: can cast between complex and polar via standard $ casting
64 (authors: Rebecca and Ge)
65 FFT: Fast Fourier Transform
66 input: from UGen (manually input float vector)
67 output: complex spectrum (.cval()/.cvals())
68 magnitude spectrum (.cval()/.fvals())
69 (see examples/analysis/)
71 input: UAna/Blob complex vector (spectrum)
72 output: to UGen (as samples)
73 (see examples/analysis/)
74 Centroid: Centroid feature extractor
75 input: UAna/Blob float vector (mag spectrum)
76 output: single centroid value per frame
77 (see examples/analysis/features/)
78 Flux: Flux feature extractor
79 input: UAna/Blob float vector (mag spectrum)
80 output: single flux value between current and previous frame
81 (see examples/analysis/features/)
82 RMS: RMS feature extractor
83 input: UAna/Blob float vector (mag spectrum)
84 output: single RMS value of frame
85 (see examples/analysis/features/)
86 RollOff: RollOff feature extractor
87 input: UAna/Blob float vector (mag spectrum)
89 output: single RollOff value of frame
90 (see examples/analysis/features/)
93 - (added) capability to externally abort "infinite loop" shreds
94 (this deals with hanging shreds due to potentially
95 infinite loops that don't advance time)
96 - (added) OTF command: chuck --abort.shred sends network OTF
97 to server to remove current shred if there is one
98 - (added) default .toString() method to all Object's
99 - (added) adding an Object to string will first cast object to string;
101 - (added) LiSa.duration() get method, and .voiceGain() set/get
103 - (added) alternate line comment: <-- same as //
105 SinOsc s => dac; <-- here is a comment
106 - (fixed) NullPointerException when instantiating array of objects
107 containing arrays of objects
108 (thanks to chuck-users!!)
109 - (fixed) Machine.remove() on parent shred id no longer crashes
110 - (fixed) Machine.remove() on 'me' now works correctly
111 - (fixed) rounding when writing files via WvOut
112 (thanks to Chris Chafe for discovering and reporting this)
113 - (changed) default frequencies (220/440) added for various STK instruments
116 (there is no version 1.2.0.9!)
121 - (added) command line argument support
122 e.g. %> chuck foo.ck:1:hello bar:2.5:"with space"
123 also works with OTF commands
124 e.g. %> chuck + foo:1:yo
125 also works with Machine.add( ... )
127 Machine.add( "foo:1:2:yo" );
128 (see examples/basic/args.ck for accessing from code)
129 - (added) OS X: watchdog enabled
130 win32: watchdog implemented and enabled
131 (combats chuck infinite empty loop implosion)
132 - (added) OTF server/listener now ON by default...
133 to enable, specify --loop or --server
134 to disable, specify --standalone
137 Dynamics: dynamics processor (compressor, expander, etc.)
138 (author Matt Hoffman and Graham Coleman)
139 (see examples/special/)
141 GenX: classic + new lookup table functions base class
142 (author Dan Trueman, ported from RTCMix)
143 (see examples/special/)
145 float .lookup( float ) : lookup table value
146 float[] .coeffs( float[] ) : load the table
152 CurveTable (extends GenX)
153 WarpTable (extends GenX)
155 LiSa: (Li)ve (Sa)mpling!
156 (author Dan Trueman, partly based on Dan's munger~)
159 - (added) (prototype) string catenation
160 (for now will leak memory! use wisely!!!)
166 - (added) string escape sequences
167 \0 \n \t \a \" \b \f \r \v \\
168 \nnn (3 digit octal ascii)
169 - (added) new Objects:
171 StringTokenizer: uh string tokenizer (by whitespace)
172 (use to be hidden PRC object)
173 see examples/string/token.ck
175 ConsoleInput: interim console input (until file I/O)
176 (use to be hidden Skot object)
177 see examples/string/readline.ck
181 - (api) API additions
182 -------- (also see API modifications below)
183 ADSR: dur attackTime()
186 WvOut: void closeFile()
187 Hid: void openTiltSensor()
188 int read( int, int, HidMsg )
189 HidMsg: int isWheelMotion()
190 (support for mouse scroll wheels)
192 (cross-platform USB HID Keyboard Usage code)
194 (ASCII value of key, where appropriate)
196 - (api) API modifications (sorry!)
198 ADSR: float attackTime( float ) -> dur attackTime( dur )
199 float decayTime( float ) -> dur decayTime( dur )
200 float releaseTime( float ) -> dur releaseTime( dur )
202 - (api) deprecated --> new classes
203 --------------------------
206 - (fixed) adc.last() now returns correct value (was returning 0)
207 - (fixed) array is now subclass of Object
208 - (fixed) accessing null array no longer crashes (instead: exception)
209 - (fixed) allow: 0 length float arrays
210 - (fixed) check for negative array size
211 - (fixed) accessing null map no longer crashes (instead: exception)
212 - (fixed) connecting null UGen references no longer crashes
213 - (fixed) trivial (null == null) no longer evaluated as string
214 - (fixed) strict (x,y) => z type checking
215 - (fixed) UGens no longer able to make duplicate connections
216 - (fixed) && now terminates early if an operand evaluates to 0
217 || terminates early if an operand evaluates to 1
218 - (fixed) bug accessing static members of built-in classes
219 - (fixed) OscSend.startMsg no longer silently fails when
220 using a single string message specification
221 - (fixed) Math.atan2 now accepts the proper arguments
222 - (fixed) increased OTF command network fail-safe measures
223 - (fixed) STK BlitSquare now produces correct frequency
224 (applied fix from STK release)
225 - (fixed) no longer spontaneously crashes when HidIn and
226 other event based input mechanisms are firing rapidly
227 - (fixed) using non-static variables from inside static functions
228 - (fixed) variables must be declared before being used
233 - added: (all) HidIn.name() now returns meaningful device name
234 - fixed: (all) fixed STK Envelope bug
235 - fixed: (osx) mouse motion now correctly returns delta Y
236 - fixed: (win32) joystick hat messages now properly reported
237 - fixed: (win32) fixed bug where joysticks of same model/product
238 id would send messages through the same HidIn object
239 - fixed: (all) seg fault in OSCSend.startMsg() with single
240 string message specification
245 - (api) deprecated --> new classes
246 --------------------------
251 pulseosc --> PulseOsc
258 halfrect --> HalfRect
259 fullrect --> FullRect
268 polezero --> PoleZero
276 --------------------------
277 - (added) --deprecate:X flag
278 X can be stop, warn, or ignore - default is warn
279 - (added) STK BiQuad get functions pfreq, prad, zfreq, zrad
280 - (added) ADSR functions:
281 void .set( dur a, dur d, float s, dur r );
282 void .set( float a, float d, float s, float r );
283 - (added) new UGens (adapted from SC3 Server, Pure Data, CSound)
284 --------------------------
285 LPF : resonant lowpass filter (2nd order butterworth)
286 HPF : resonant highpass filter (2nd order butterworth)
287 BPF : bandpass filter (2nd order butterworth)
288 BRF : bandreject filter (2nd order butterworth)
289 ResonZ : resonant filter (BiQuad with equal-gain zeros)
290 FilterBasic : base class to above filters
291 --------------------------
292 - (added) new HidIn static variables for HidMsg message and device types
293 - (added) HidMsg fields to determine device type and number
294 - (added) HidMsg functions with capitalization rather than underscores
295 (underscored functions deprecated)
296 - (added) .period for all oscillators
297 - (fixed) floating point denormals no longer cause potentially
298 massive CPU usage on intel processors, this includes
299 BiQuad, OnePole, TwoPole, PoleZero, JCRev, PRCRev, NRev
300 - (fixed) STK Echo.max no longer gives incorrect warnings
301 - (fixed) linux makefiles now respects CC/CFLAGS/CXX (Cedric Krier)
302 - (fixed) SinOsc/TriOsc/PulseOsc/SqrOsc/Phasor.sync now unified:
303 .sync == 0 : sync frequency to input
304 .sync == 1 : sync phase to input
305 .sync == 2 : fm synth
307 NOTE: the above changes may break/affect existing patches
308 using TriOsc, PulseOsc, or SqrOsc
309 - (fixed) TriOsc/PulseOsc/SqrOsc phase consistent with convention
310 - (fixed) ADSR now handles keyOff() before sustain state
311 - (fixed) ADSR now correctly inherits Envelope
316 - (added) support for Mac OS X universal binary
317 - (added) executable now reports targets:
321 chuck version: 1.2.0.6 (dracula)
322 exe target: mac os x : universal binary
323 http://chuck.cs.princeton.edu/
327 - (added) support for Mac OS X on Intel: (make osx-intel)
328 - (added) win32 - boost thread priority default from 0 to 5
329 - (added) Mandolin.bodyIR( string path ): set body impulse response
330 - (added) HID: support for mouse input on OS X, Windows, Linux
331 through 'HidIn' class
332 - (added) HID: support for keyboard input on OS X, Windows
333 through 'HidIn' class
334 - (added) new HID examples:
337 - (added) OS X: --probe human-readable MIDI names
338 (thanks to Bruce Murphy)
339 - (fixed) multiple declarations now behave correctly:
340 (example: int a, b, c;)
341 - (fixed) now possible to spork non-static member functions
342 (example: Foo foo; spork ~ foo.go();)
343 - (fixed) sporking fixed in general
344 - (fixed) pre/post ++/-- now work correctly
345 (example: int i; <<< i++ + i++ * ++i >>>;)
346 - (fixed) public classes can now internally reference non-public
347 classes in the same file
348 - (fixed) obj @=> obj now ref counts correctly
349 - (fixed) STK Mandolin.detune( float f ) changed
350 - (fixed) STK Mandolin.damping( float f ) changed
361 - (added) multi-channel audio
362 - use --channels<N> or -c<N> set number of channels
363 for both input and output
364 - use --out<N>/-o<N> and --in<N>/-i<N> to request
365 # of input and output channels separately
366 - stereo is default (for now)
367 - (added) UGen.channels()
368 - (added) class UGen -> class UGen_Multi -> class UGen_Stereo
369 - (added) UGen UGen_Multi.chan( int )
370 use this to address individual channels
371 - (added) examples in examples/multi
372 - n.ck : n channels detuned sine
373 - i.ck : n channels impulse
374 - (added) HID support (author: Spencer Salazar)
375 - (added) 'HidIn' event class (see examples/hid/*.ck)
376 - (added) Terminal Keyboard Input (immediate mode, separate from HID)
377 - (added) 'KBHit' event class (see examples/event/kb*.ck)
378 - (added) sndbuf.chunks : better real-time behavior
379 - can be set to arbitrary integers
380 (before the .read happens)
381 - default is 0 frames (no chunk)
382 - set .chunks to 0 to read in entire file
384 - (added) int math.isinf( float ) // infinity test
385 - (added) int math.isnan( float ) // NaN test
386 (see examples/basic/infnan.ck)
387 - (added) sndbuf.valueAt( int ) for returning sample at arbitrary pos
388 (see examples/basic/valueat.ck)
389 - (added) MASSIVE STK UPDATE
390 - (added) 'StkInstrument' class
393 .freq( float ) / .freq()
394 .controlChange( int, float )
395 - (added) the following now extend 'StkInstrument'
396 (most of them have additional parameters)
404 - FM (and all its subclasses: BeeThree, FMVoices,
405 HevyMetl, PercFlut, Rhodey, TubeBell, Wurley)
414 - (added) better STK documentation
415 http://chuck.cs.princeton.edu/doc/program/ugen.html
416 - (added) examples/stk/modulate.ck
417 - (added) --watchdog and --nowatchdog flags
418 (very experiment watchdog for real-time audio)
419 - (added) () => function; // calls function();
420 (thanks to Mike McGonagle for reporting)
421 - (added) if exp: ( cond ? if_cond : else_cond )
422 (thanks to Mike McGonagle for reporting)
423 - (added) math.abs( int ), math.fabs( float ), math.sgn( float )
424 (std version unchanged)
425 - (added) new examples
450 - (fixed) sinsoc, triosc, sqrosc, phasor:
451 - .sync( 0 ) uses input signal to modulate frequency
452 - .sync( 2 ) uses input signal to modulate phase
454 - (fixed) impulse.last() no longer has extra samp delay
455 (thanks to Mike McGonagle for reporting)
456 - (fixed) class inheritance now handles the first overloaded
457 function of a parent correctly when called using a
458 subclass instance. in other words, this part sucks
460 (thanks to Mike McGonagle for reporting)
461 - (fixed) (internal) type checker re-instantiation patched
462 - (fixed) (internal) detach_all() moved to chuck_globals.cpp
463 - (fixed) (internal) global variables moved to chuck_globals.cpp
464 - (fixed) file handles close in compiler and parser
465 - (fixed) syntax error causing syntax errors
470 - (added) The ChucK Manual (pdf)
471 fantastic work by Adam Tindale and other documentors
472 see doc/Chuck_manual.pdf
473 - (added) Envelope.duration( dur ), Envelope.duration()
474 - (added) Envelope.keyOn(), Envelope.keyOff();
475 - (added) PitShift.mix( float ), PitShift.mix()
476 (originally effectMix)
477 - (added) std.srand( int ) : seed random number generator
478 - (added) update to RtAudio 3.2.0 -> much lower latency: Window DS
479 (thanks to Gary Scavone and Robin Davies)
480 - (added) update to RtMidi 1.0.4 -> improved midi: linux ALSA
481 (thanks to Gary Scavone and Pedro Lopez-Cabanillas)
482 - (added) bandlimited ugens: Blit, BlitSaw, BlitSquare
483 (thanks to Robin Davies for implementation,
484 Gary Scavone for putting them in STK)
485 - (added) examples/basic/foo.ck foo2.ck tick.ck tick2.ck
486 (foo2 shows using Blit, tick.ck is a simple counter)
487 - (added) examples/class/dinky.ck try.ck
488 (creating and using class to make instruments)
489 - (fixed) sndbuf.read now closes file handle and sets curf
490 - (fixed) default bufsize=256 under OSX and 512 under all other
491 - (fixed) chuck + foof garbled error message
492 - (fixed) chuck.lex compatibility under some linux
493 - (fixed) waiting on null event: no longer crashes VM
494 - (fixed) function arguments: no longer allow reference to primitive types
495 - (fixed) function: correctly select overloaded functions w/ implicit cast
496 - (fixed) std.atoi() std.atof(): no longer crash on null string
497 - (fixed) std.fabs(): now works correctly
498 - (fixed) basic/moe.ck larry.ck currly.ck use fabs
499 - (fixed) missing base class virtual destructors;
500 FreeBSD/g++ compatibility (thanks rasmus)
501 - (fixed) most -Wall warnings
502 - (fixed) CK_LOG_SYSTEM_ERROR now CK_LOG_CORE
508 (syntax change - 'loop' -> 'repeat')
509 - loop( ... ) construct (see 1.2.0.2) changed to repeat( ... )
510 - usage and semantics same as before
511 - this is also an experimental language feature
512 (let us know if it's good or bad)
513 - float std.abs( float ) changed -> int std.abs( int )
514 - use std.fabs( ... ) for floating point absolute value
516 - (added) /* block comments */
518 - closing '*/' not necessary if commenting out rest of the file
519 - (fixed) arrays of null object references correctly allocated
520 : Event @ events[128];
521 - (fixed) DEFAULT sndbuf rate now set correctly to interpolate
522 for files outside of chuck sample rate (no longer have to
523 explicit do 1 => buf.rate)
524 - (fixed) examples/midi/polyfony*.ck no longer creates 128
525 unnecessary events...
526 - (changed) examples/stk/wurley.ck -> examples/stk/wurley2.ck
527 - (changed) examples/stk/wurley.ck (wacky version)
532 (sorry for the API changes)
533 - (API change) OSC_Send class name changed to 'OscSend'
534 (also): .startMesg(...) name changed to startMsg(...)
535 - (API change) OSC_Recv class name changed to 'OscRecv'
536 - (API change) OSC_Addr class name changed to 'OscEvent'
537 (also): .hasMesg() name changed to .hasMsg()
538 (also): .nextMesg() name changed to .nextMsg()
539 - (API change) STK Shakers.freq now expect Hz instead of MIDI number
541 - (moved) examples/event/opensound*.ck moved to examples/osc/OSC*.ck
542 (see OSC_send.ck and OSC_recv.ck for examples on OpenSoundControl)
543 - (moved) examples/event/polyfony*.ck to examples/midi/
545 - (added) 'loop(...){ }' control structure :
546 example: loop( 8 ) { ... } // executes body 8 times
547 example: loop( foo ) { ... } // executes body foo times
548 (foo is evaluated exactly once entering the loop, the
549 value at that time is used as a constant to control
550 loop iteration - even if foo is changed in the loop
552 - supports break and continue
553 - important: one fundamantal difference between the loop
554 semantic and for/while/until semantic is that the argument
555 expression 'exp' in loop( exp ) is evaluated exactly once
556 when the loop is first entered.
557 - (added) MidiIn and MidiOut member functions:
558 .good() : whether the thing is good to go (int)
559 .num() : the device number (int)
560 .name() : the device name (string)
561 .printerr( int ) : whether to auto print errors (default YES)
562 - (added) --version command line flag (Graham)
564 - (changed) chuck --status now prints shreds sorted by id
565 (previously it was the current shreduling order + blocked)
566 - (changed) a udp port may now be shared by many OSC_Recv (phil)
567 : the incoming messages are broadcast to all
568 - (changed) address/type string in OSC: comma now optional (phil)
570 - (fixed) events are now 0-sample synchronous (instead of 1)
571 - (fixed) startup audio stability for --callback mode
572 - (fixed) incorrect 'continue' behavior in for loops
573 - (fixed) improved OSC stability (phil)
574 - (fixed) OSC shreduling sanity check failed now resolved
575 - (fixed) math.round for negative numbers (win32)
576 - (fixed) std.mtof and std.ftom now internally double precision
577 - (fixed) removed extra console output in STK Flute
578 - (fixed) multiple delete/assertion failure on type rollback
579 - (fixed) chuck --kill now closes WvOut and MidiRW file handles
580 - (added) examples/midi/gomidi.ck : very useful sometimes
581 - (added) examples/midi/gomidi2.ck
582 - (added) examples/basic/rec-auto.ck (rec2.ck back in action)
583 - (added) examples/basic/fmsynth.ck (from v1)
584 - (added) examples/sitar.ck
585 - (fixed) examples/stk/*-o-matic.ck now uses array
590 - (added) full callback capability for real-time audio
591 - blocking functionality still available
592 - select via flags: --blocking and --callback
593 - improves latency and stability, especially on linux
594 - use --callback (default) for low latency / small buffer size
595 - use --blocking for higher throughput
596 - (fixed) crash when doing on-the-fly 'replace' : chuck --replace 0 foo.ck
597 - (fixed) OSC event function now correctly named ("event")
598 - (fixed) removed debug output in OSC
599 - (fixed) implicit cast is now correct when sporking (thanks to Manfred Brockhaus)
600 - (fixed) examples code reformatted, cleaned, and commented
601 - (fixed) nested class definitions can now have same name as outer class
602 - (fixed) nested class bug in scan1 (thanks to Robin Davies)
603 - (fixed) variable resolution in parent class now visible (thanks to Robin Davies)
604 - (fixed) variable resolution ordering
605 - local, class, parent, global (thanks to Robin Davies)
606 - (fixed) emitter now asserts inheritance instead of equality (thanks to Robin Davies)
607 - (fixed) string comparison ==, !=
608 - (added) string operations <, <=, >, >=
614 SYNTAX and OPERATORS:
615 - (added) +=>, operator : 2 +=> i; (also) -=>, *=>, /=>, %=>
616 - (added) @=> for explicit assignment
617 this is the only way to make object reference assignments
618 - (added) implicit int to float casting
619 - (changed) cast now look like: 1.1 $ (int) => int i;
620 - (added) function call by chucking :
622 (1,4) => math.rand2f => result;
624 math.rand2f(1,4) => result;
627 - (fixed) type system for existing types
628 - (added) forward lookup of classes and functions (mutual recursion)
629 - (added) stack overflow detection for massive recursion
632 - (added) language specification:
633 http://chuck.cs.princeton.edu/doc/language
636 - (added) --probe prints all audio and MIDI devices
637 - (added) --log or --verbose logs compiler and virtual machine
638 - (added) --logN or --verboseN multi level logging
643 - (added) 'class' definitions : class X { int i; }
644 - (added) 'extends' keyword : class Y extends Event { int i; }
645 - (added) virtual/polymorphic inheritance
646 - (added) added pre-constructors - code at class level
647 gets run when object is instantiated
648 - (added) function overloading :
649 class X { fun void foo() { } fun void foo( int y ) { } }
650 - (added) base classes (can be extended):
653 - (added) base classes (cannot be extended):
656 - (added) member data
657 - (added) static data
658 - (added) member functions
659 - (added) static functions
662 - (added) base Event class : Event e;
664 can be extended to custom events
665 (see one_event_many_shreds.ck)
666 - (added) waiting on event, chuck to now :
667 e => now; // wait on e
668 - (added) e.signal() wakes up 1 shred, if any
669 - (added) e.broadcast() wakes up all shreds waiting on e
670 - (added) class MidiEvent (see gomidi2.ck)
671 alternative to polling.
672 - (added) class OSCEvent
675 - (added) arrays : int a[10]; float b[20]; Event e[2];
676 - (added) multidimensional arrays : int a[2][2][2];
677 - (added) associative arrays : int a[10]; 0 => a["foo"];
678 all arrays are both int-indexed and associative
679 - (added) array initialization : [ 1, 2, 3 ] @=> int a[];
680 - (added) .cap() for array capacity
681 - (added) .find() test if item is associative array
682 - (added) .erase() erase item in associative array
687 - (changed) all ugen parameters are now also functions:
689 440 => s.freq => val;
691 s.freq( 440 ) => val;
692 - (changed) left-most parameters must now be called as functions
696 f.freq() => float val;
698 440 => s.freq => float val;
701 - (added) class Shred
702 - (added) .yield() .id()
705 - (added) class string
709 all stereo unit generators have .left, .right, .pan functions
710 - (changed) stereo ugen: dac (2 in, 2 out)
711 - (changed) stereo ugen: adc (0 in, 2 out)
712 - (added) stereo ugen: pan2 take mono or stereo input and pans
713 - (added) stereo ugen: mix2 mix stereo input into mono
718 - last 1.1 release : contains all 1.1 changes
723 - FIFO to RR for audio and synthesis - improves stability on OS X
724 - fixed stack underflow emitter bug with declarations
725 - fixed cpu sleep bug on win32
730 - fixed clicks when using adc unit generator
731 (thanks to paul botelho for testing)
732 - added 'maybe' keyword
733 maybe == 0 or 1, with 50% probability each
736 - maybe.ck : the maybe keyword - bad idea? maybe.
737 - maybecli.ck : maybe click, maybe not
739 adc examples work better:
747 - when a shred is removed from VM, all children shreds are
748 also recursively removed
749 (this fix crash due to removing shreds with active children shreds)
750 (to keep children around, put parent in infinite time-loop)
751 (this isn't always good - real solution coming soon)
752 - 'start' keyword now available - holds the a shred's begin time
755 - powerup.ck : start local variable changed name
756 - spork.ck : added infinite time loop to keep children active
761 - crtical patch shreduler time precision
762 - same as 1.1.5.1 - see below
767 - on-the-fly chuck files to remote hosts!
768 > chuck @hostname + foo.ck
769 > chuck @hostname -p<N> + foo.ck
770 - TCP replacing UDP for commands
771 - endian observed (mac <-> win32/linux)
772 - more sensible VM output for on-the-fly commands
773 - many on-the-fly bug fixes
774 - --replace: new shred inherits the replaced shred id
775 (useful to keep track of shreds in VM)
776 - sndbuf automatically set .rate to 1.0 (instead of 0.0)
777 (0.0 => buf.rate if no play on next time advance)
778 - new on-the-fly examples
782 - otf_*.ck - illustrates precise on-the-fly timing
783 (adapted from Perry's ChucK drumming + Ge's sine poops)
785 chuck them one by one into the VM:
787 terminal 1%> chuck --loop
788 terminal 2%> chuck + otf_01.ck
790 terminal 2%> chuck + otf_02.ck
792 (repeat through otf_07.ck)
793 (remove, replace and add your own)
798 - now able to write audio files (wav, aiff, raw)
799 (try rec.ck and rec2.ck concurrently with any other shreds
801 - STK file endian is now observed (more things should work
802 on little endian systems)
803 - added 4 "special" built-in sound samples
804 "special:glot_pop" - glottal pulse (flat)
805 "special:glot_ahh" - glottal 'ahh' pop
806 "special:glot_eee" - glottal 'eee' pop
807 "special:glot_ooo" - glottal 'ooo' pop
808 (see/listen to moe++.ck, larry++.ck, curly++.ck)
809 - all bulit-in sound samples now loadable from both WaveLoop and sndbuf
810 - (win32) sndbuf now properly loads wav aiff
813 - moe++.ck - stooges, evolved
816 - rec.ck - run this concurrently to write audio to file
817 (also try with -s flag for file out, no real-time audio)
818 - rec2.ck - same as rec, but writes to different file every time,
824 - all of STK is now in ChucK!
825 - new examples (see below)
826 - add '--bufnum<N>' to chuck command line (number of buffers)
827 - --status no longer prints full path for source
828 - full path now works for command line + (thanks Adam T.)
830 - improved online ugen documentation (go phil!)
832 new ugens: (again, thanks to Phil Davidson!)
844 delayp - variable write position delay line
847 band-o-matic.ck - banded waveguide, automated
848 delayp.ck - shows usage
849 mode-o-matic.ck - modal bar, happy chaos
850 stifkarp.ck - stifkarp, chaos
855 - added win32 visual studio support (chuck_win32.*)
856 - new oscillators (see below, thanks to Phil)
857 - corrected more issues on some 64-bit systems
858 - new examples (see below)
859 - chucking to oscillators now able to control phase
860 (alternative to doing FM by hand (1::samp at a time),
861 see pwm.ck and sixty.ck) (thanks to Phil)
864 triosc - triangle wave
865 pulseosc - pulse wave oscillator w/ controllable pulse width
871 sixty.ck - shows osc's
872 pwm.ck - basic pulse width modulation
873 (you can still do FM "by hand" - see fmsynth.ck)
878 - improved performance (reduce cpu overhead)
879 - fixed bug that caused crash on ctrl-c
880 - added sndbuf.play (same as rate)
881 - corrected issues on some 64-bit systems
882 - sndbuf.ck now works
886 - added netin/netout unit generators (alpha version)
887 - added a lot of STK unit generators (thanks to philipd)
888 (over 80% of STK is now imported)
889 - fixed Shakers (thanks to philipd) : examples/shake-o-matic.ck
890 - better compilation for cygwin
892 - added many READ functionality for ugen parameters
893 see online documentation at:
894 http://chuck.cs.princeton.edu/doc/program/ugen.html
897 - netout (alpha version) - audio over UDP (see net_send.ck)
898 - netin (alpha version) - audio over UDP (see net_recv.ck)
917 - shake-o-matic.ck - STK shakers going bonkers
918 - net_send.ck - oneway sender
919 - net_recv.ck - oneway recv
920 - net_bounce.ck - redirect
925 - fixed bug for multiple declarations
926 - made functions local to shred by default
927 - shadowing now works
928 - add 'blackhole' ugen for ticking ugens
929 - added std.mtof (philipd)
937 - blackhole - the silent sample sucker
947 - powerup.ck ( (ab)use of TwoPole and sporking)
948 - i-robot (building feedback filters)
949 - voic-o-form.ck (music for replicants)
950 - rhodey/wurley.ck (more stk-o-matics)
954 - added sndfile patch for jack/sndfile (Martin Rumori)
955 - added special raw wav for WaveLoop (philipd, gewang)
957 (see examples/dope.ck)
979 - fixed shred shreduling ID bug for on-the-fly added shreds (gewang)
980 - fixed function resolution for on-the-fly added shreds (gewang)
981 - added math.nextpow2( int n ) (Niklas Werner, gewang)
984 - Mandolin (see examples/mandolin.ck examples/mand-o-matic.ck)
985 - Moog (see examples/moogie.ck)
988 - mandolin.ck (use of STK mandolin)
989 - mand-o-matic (fire it up!)
990 - dope.ck (Homer's WaveLoop using internal STK sound)
991 - print_last.ck (prints last ugen output)
992 - wind2.ck (2 shreds control parameters)
997 - add sndfile support (Ari Lazier)
998 - add sndbuf file reading/writing (Ari Lazier)
999 - add sinosc.sfreq and phase (Phil Davidson)
1000 - add sndbuf rate and sinc interp (Phil Davidson)
1001 - add cget functions for unit generators parameters
1002 (many parameters are readable now)
1003 - add .last for last sample computed for all ugen's
1004 - add constants in lib import
1005 - add math.pi math.twopi math.e
1006 - add --srate(N) in command line (chuck --help)
1007 - typing .ck extension optional on command line
1008 - fixed spork bug involved local variables
1009 - fixed nested function calls
1010 - fixed math.min/max bug (Phil Davidson)
1011 - fixed audio stability OS X (Ari Lazier)
1012 - fixed MidiOut issue (thanks to n++k)
1027 - added support for arbitrary audio in/out (via command line)
1033 - added demo[0-5].ck to examples
1034 - PROGRAMMER updated
1035 - big/little endian issue fixed
1040 - major update to use double float for time, dur, and float
1041 (this fixes the millisecond bug)
1046 - fixed win32 build problem (thanks to Adam Wendt)
1047 - fixed midi stack problem (thanks to Thomas Charbonnel)
1052 - fixed mem stack bug (report Alex Chapman)
1053 - added jack support (thanks to Thomas Charbonnel)
1059 - bad midiin now returns 0
1060 - supports sound card with no input
1066 - added ability to spork shreds from code
1068 - 0-127 MIDI devices support
1069 - fix bugs in on-the-fly commands
1070 - added features to --add, --remove
1071 - added --time --kill
1072 - fixed table bug (thanks to n++k)
1073 - fixed linux makefile (thanks to n++k)
1074 - added STK ugen: WaveLoop, Shakers, JCRev, ADSR
1075 - added shred-time synch by T - (now % T ) => now;
1087 1.1.3.0 - initial release