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()
15 turns audio samples into frames in the UAna domain
17 turns UAna frames into audio samples, via overlap add
18 new UAna: AutoCorr (ge)
19 computes the autocorrelation of UAna input
20 - (added) int Shred.done() // is the shred done?
21 int Shred.running() // is the shred running
22 - (added) int Math.ensurepow2( int )
23 - (fixed) it's now (again) possible to multiply connect
25 - (fixed) dac amplitude no longer halved!
26 NOTE: this increases the gain from before by
27 a factor of 2, or roughly 6 dB!! BEWARE!!
28 - (fixed) corrected order of shred/ugen dealloc in VM destructor,
29 preventing a potential crash during shutdown
30 - (fixed) UAna can now upchuck() at now=0
31 - (fixed) STK Chorus UGen now has reasonable defaults
32 .max( dur, float ) for initializing to delay/depth limits
33 .baseDelay( dur ) sets current base delay
34 - (fixed) dur +=> now no longer crashes
35 - (fixed) unsporked Shred instances now given id == 0 (thanks Kassen)
36 - (fixed) typos in ugen_xxx.cpp and chuck-specific rtaudio.cpp (/moudi)
40 - (fixed) ctrl-c no longer causes crash on shutdown
41 (was due to memory deallocation bug)
42 - (fixed) incorrect code generation for multiple expressions in 3rd clause
43 of for loops (thanks to Eduard for tracking!)
44 - (fixed) Envelope now is able to ramp down (contributed by Kassen, Dr. Spankenstein,
45 kijjaz, and others on electro-music!)
49 1.2.1.0 : codename spectral
50 - (added) Unit Analyzers (UAna: prounced U-Wanna, plural UAnae)
51 (primary creators: Rebecca and Ge)
52 provides support for spectral processing,
53 information retrieval, generalized + precise audio analysis
55 - (added) new datatypes:
57 complex: (real,imaginary)
58 example: #(3,4) is complex literal (3,4)
59 example: #(3,4) => complex value;
60 access components via value.re and value.im
63 polar: (modulus, phase)
64 example: %(.5, pi/4) is magnitude .5 and phase pi/4
65 example: %(.5, pi/4) => polar bear;
66 access components via bear.mag and bear.phase
69 example: can cast between complex and polar via standard $ casting
73 (authors: Rebecca and Ge)
74 FFT: Fast Fourier Transform
75 input: from UGen (manually input float vector)
76 output: complex spectrum (.cval()/.cvals())
77 magnitude spectrum (.cval()/.fvals())
78 (see examples/analysis/)
80 input: UAna/Blob complex vector (spectrum)
81 output: to UGen (as samples)
82 (see examples/analysis/)
83 Centroid: Centroid feature extractor
84 input: UAna/Blob float vector (mag spectrum)
85 output: single centroid value per frame
86 (see examples/analysis/features/)
87 Flux: Flux feature extractor
88 input: UAna/Blob float vector (mag spectrum)
89 output: single flux value between current and previous frame
90 (see examples/analysis/features/)
91 RMS: RMS feature extractor
92 input: UAna/Blob float vector (mag spectrum)
93 output: single RMS value of frame
94 (see examples/analysis/features/)
95 RollOff: RollOff feature extractor
96 input: UAna/Blob float vector (mag spectrum)
98 output: single RollOff value of frame
99 (see examples/analysis/features/)
102 - (added) capability to externally abort "infinite loop" shreds
103 (this deals with hanging shreds due to potentially
104 infinite loops that don't advance time)
105 - (added) OTF command: chuck --abort.shred sends network OTF
106 to server to remove current shred if there is one
107 - (added) default .toString() method to all Object's
108 - (added) adding an Object to string will first cast object to string;
110 - (added) LiSa.duration() get method, and .voiceGain() set/get
112 - (added) alternate line comment: <-- same as //
114 SinOsc s => dac; <-- here is a comment
115 - (fixed) NullPointerException when instantiating array of objects
116 containing arrays of objects
117 (thanks to chuck-users!!)
118 - (fixed) Machine.remove() on parent shred id no longer crashes
119 - (fixed) Machine.remove() on 'me' now works correctly
120 - (fixed) rounding when writing files via WvOut
121 (thanks to Chris Chafe for discovering and reporting this)
122 - (changed) default frequencies (220/440) added for various STK instruments
125 (there is no version 1.2.0.9!)
130 - (added) command line argument support
131 e.g. %> chuck foo.ck:1:hello bar:2.5:"with space"
132 also works with OTF commands
133 e.g. %> chuck + foo:1:yo
134 also works with Machine.add( ... )
136 Machine.add( "foo:1:2:yo" );
137 (see examples/basic/args.ck for accessing from code)
138 - (added) OS X: watchdog enabled
139 win32: watchdog implemented and enabled
140 (combats chuck infinite empty loop implosion)
141 - (added) OTF server/listener now ON by default...
142 to enable, specify --loop or --server
143 to disable, specify --standalone
146 Dynamics: dynamics processor (compressor, expander, etc.)
147 (author Matt Hoffman and Graham Coleman)
148 (see examples/special/)
150 GenX: classic + new lookup table functions base class
151 (author Dan Trueman, ported from RTCMix)
152 (see examples/special/)
154 float .lookup( float ) : lookup table value
155 float[] .coeffs( float[] ) : load the table
161 CurveTable (extends GenX)
162 WarpTable (extends GenX)
164 LiSa: (Li)ve (Sa)mpling!
165 (author Dan Trueman, partly based on Dan's munger~)
168 - (added) (prototype) string catenation
169 (for now will leak memory! use wisely!!!)
175 - (added) string escape sequences
176 \0 \n \t \a \" \b \f \r \v \\
177 \nnn (3 digit octal ascii)
178 - (added) new Objects:
180 StringTokenizer: uh string tokenizer (by whitespace)
181 (use to be hidden PRC object)
182 see examples/string/token.ck
184 ConsoleInput: interim console input (until file I/O)
185 (use to be hidden Skot object)
186 see examples/string/readline.ck
190 - (api) API additions
191 -------- (also see API modifications below)
192 ADSR: dur attackTime()
195 WvOut: void closeFile()
196 Hid: void openTiltSensor()
197 int read( int, int, HidMsg )
198 HidMsg: int isWheelMotion()
199 (support for mouse scroll wheels)
201 (cross-platform USB HID Keyboard Usage code)
203 (ASCII value of key, where appropriate)
205 - (api) API modifications (sorry!)
207 ADSR: float attackTime( float ) -> dur attackTime( dur )
208 float decayTime( float ) -> dur decayTime( dur )
209 float releaseTime( float ) -> dur releaseTime( dur )
211 - (api) deprecated --> new classes
212 --------------------------
215 - (fixed) adc.last() now returns correct value (was returning 0)
216 - (fixed) array is now subclass of Object
217 - (fixed) accessing null array no longer crashes (instead: exception)
218 - (fixed) allow: 0 length float arrays
219 - (fixed) check for negative array size
220 - (fixed) accessing null map no longer crashes (instead: exception)
221 - (fixed) connecting null UGen references no longer crashes
222 - (fixed) trivial (null == null) no longer evaluated as string
223 - (fixed) strict (x,y) => z type checking
224 - (fixed) UGens no longer able to make duplicate connections
225 - (fixed) && now terminates early if an operand evaluates to 0
226 || terminates early if an operand evaluates to 1
227 - (fixed) bug accessing static members of built-in classes
228 - (fixed) OscSend.startMsg no longer silently fails when
229 using a single string message specification
230 - (fixed) Math.atan2 now accepts the proper arguments
231 - (fixed) increased OTF command network fail-safe measures
232 - (fixed) STK BlitSquare now produces correct frequency
233 (applied fix from STK release)
234 - (fixed) no longer spontaneously crashes when HidIn and
235 other event based input mechanisms are firing rapidly
236 - (fixed) using non-static variables from inside static functions
237 - (fixed) variables must be declared before being used
242 - added: (all) HidIn.name() now returns meaningful device name
243 - fixed: (all) fixed STK Envelope bug
244 - fixed: (osx) mouse motion now correctly returns delta Y
245 - fixed: (win32) joystick hat messages now properly reported
246 - fixed: (win32) fixed bug where joysticks of same model/product
247 id would send messages through the same HidIn object
248 - fixed: (all) seg fault in OSCSend.startMsg() with single
249 string message specification
254 - (api) deprecated --> new classes
255 --------------------------
260 pulseosc --> PulseOsc
267 halfrect --> HalfRect
268 fullrect --> FullRect
277 polezero --> PoleZero
285 --------------------------
286 - (added) --deprecate:X flag
287 X can be stop, warn, or ignore - default is warn
288 - (added) STK BiQuad get functions pfreq, prad, zfreq, zrad
289 - (added) ADSR functions:
290 void .set( dur a, dur d, float s, dur r );
291 void .set( float a, float d, float s, float r );
292 - (added) new UGens (adapted from SC3 Server, Pure Data, CSound)
293 --------------------------
294 LPF : resonant lowpass filter (2nd order butterworth)
295 HPF : resonant highpass filter (2nd order butterworth)
296 BPF : bandpass filter (2nd order butterworth)
297 BRF : bandreject filter (2nd order butterworth)
298 ResonZ : resonant filter (BiQuad with equal-gain zeros)
299 FilterBasic : base class to above filters
300 --------------------------
301 - (added) new HidIn static variables for HidMsg message and device types
302 - (added) HidMsg fields to determine device type and number
303 - (added) HidMsg functions with capitalization rather than underscores
304 (underscored functions deprecated)
305 - (added) .period for all oscillators
306 - (fixed) floating point denormals no longer cause potentially
307 massive CPU usage on intel processors, this includes
308 BiQuad, OnePole, TwoPole, PoleZero, JCRev, PRCRev, NRev
309 - (fixed) STK Echo.max no longer gives incorrect warnings
310 - (fixed) linux makefiles now respects CC/CFLAGS/CXX (Cedric Krier)
311 - (fixed) SinOsc/TriOsc/PulseOsc/SqrOsc/Phasor.sync now unified:
312 .sync == 0 : sync frequency to input
313 .sync == 1 : sync phase to input
314 .sync == 2 : fm synth
316 NOTE: the above changes may break/affect existing patches
317 using TriOsc, PulseOsc, or SqrOsc
318 - (fixed) TriOsc/PulseOsc/SqrOsc phase consistent with convention
319 - (fixed) ADSR now handles keyOff() before sustain state
320 - (fixed) ADSR now correctly inherits Envelope
325 - (added) support for Mac OS X universal binary
326 - (added) executable now reports targets:
330 chuck version: 1.2.0.6 (dracula)
331 exe target: mac os x : universal binary
332 http://chuck.cs.princeton.edu/
336 - (added) support for Mac OS X on Intel: (make osx-intel)
337 - (added) win32 - boost thread priority default from 0 to 5
338 - (added) Mandolin.bodyIR( string path ): set body impulse response
339 - (added) HID: support for mouse input on OS X, Windows, Linux
340 through 'HidIn' class
341 - (added) HID: support for keyboard input on OS X, Windows
342 through 'HidIn' class
343 - (added) new HID examples:
346 - (added) OS X: --probe human-readable MIDI names
347 (thanks to Bruce Murphy)
348 - (fixed) multiple declarations now behave correctly:
349 (example: int a, b, c;)
350 - (fixed) now possible to spork non-static member functions
351 (example: Foo foo; spork ~ foo.go();)
352 - (fixed) sporking fixed in general
353 - (fixed) pre/post ++/-- now work correctly
354 (example: int i; <<< i++ + i++ * ++i >>>;)
355 - (fixed) public classes can now internally reference non-public
356 classes in the same file
357 - (fixed) obj @=> obj now ref counts correctly
358 - (fixed) STK Mandolin.detune( float f ) changed
359 - (fixed) STK Mandolin.damping( float f ) changed
370 - (added) multi-channel audio
371 - use --channels<N> or -c<N> set number of channels
372 for both input and output
373 - use --out<N>/-o<N> and --in<N>/-i<N> to request
374 # of input and output channels separately
375 - stereo is default (for now)
376 - (added) UGen.channels()
377 - (added) class UGen -> class UGen_Multi -> class UGen_Stereo
378 - (added) UGen UGen_Multi.chan( int )
379 use this to address individual channels
380 - (added) examples in examples/multi
381 - n.ck : n channels detuned sine
382 - i.ck : n channels impulse
383 - (added) HID support (author: Spencer Salazar)
384 - (added) 'HidIn' event class (see examples/hid/*.ck)
385 - (added) Terminal Keyboard Input (immediate mode, separate from HID)
386 - (added) 'KBHit' event class (see examples/event/kb*.ck)
387 - (added) sndbuf.chunks : better real-time behavior
388 - can be set to arbitrary integers
389 (before the .read happens)
390 - default is 0 frames (no chunk)
391 - set .chunks to 0 to read in entire file
393 - (added) int math.isinf( float ) // infinity test
394 - (added) int math.isnan( float ) // NaN test
395 (see examples/basic/infnan.ck)
396 - (added) sndbuf.valueAt( int ) for returning sample at arbitrary pos
397 (see examples/basic/valueat.ck)
398 - (added) MASSIVE STK UPDATE
399 - (added) 'StkInstrument' class
402 .freq( float ) / .freq()
403 .controlChange( int, float )
404 - (added) the following now extend 'StkInstrument'
405 (most of them have additional parameters)
413 - FM (and all its subclasses: BeeThree, FMVoices,
414 HevyMetl, PercFlut, Rhodey, TubeBell, Wurley)
423 - (added) better STK documentation
424 http://chuck.cs.princeton.edu/doc/program/ugen.html
425 - (added) examples/stk/modulate.ck
426 - (added) --watchdog and --nowatchdog flags
427 (very experiment watchdog for real-time audio)
428 - (added) () => function; // calls function();
429 (thanks to Mike McGonagle for reporting)
430 - (added) if exp: ( cond ? if_cond : else_cond )
431 (thanks to Mike McGonagle for reporting)
432 - (added) math.abs( int ), math.fabs( float ), math.sgn( float )
433 (std version unchanged)
434 - (added) new examples
459 - (fixed) sinsoc, triosc, sqrosc, phasor:
460 - .sync( 0 ) uses input signal to modulate frequency
461 - .sync( 2 ) uses input signal to modulate phase
463 - (fixed) impulse.last() no longer has extra samp delay
464 (thanks to Mike McGonagle for reporting)
465 - (fixed) class inheritance now handles the first overloaded
466 function of a parent correctly when called using a
467 subclass instance. in other words, this part sucks
469 (thanks to Mike McGonagle for reporting)
470 - (fixed) (internal) type checker re-instantiation patched
471 - (fixed) (internal) detach_all() moved to chuck_globals.cpp
472 - (fixed) (internal) global variables moved to chuck_globals.cpp
473 - (fixed) file handles close in compiler and parser
474 - (fixed) syntax error causing syntax errors
479 - (added) The ChucK Manual (pdf)
480 fantastic work by Adam Tindale and other documentors
481 see doc/Chuck_manual.pdf
482 - (added) Envelope.duration( dur ), Envelope.duration()
483 - (added) Envelope.keyOn(), Envelope.keyOff();
484 - (added) PitShift.mix( float ), PitShift.mix()
485 (originally effectMix)
486 - (added) std.srand( int ) : seed random number generator
487 - (added) update to RtAudio 3.2.0 -> much lower latency: Window DS
488 (thanks to Gary Scavone and Robin Davies)
489 - (added) update to RtMidi 1.0.4 -> improved midi: linux ALSA
490 (thanks to Gary Scavone and Pedro Lopez-Cabanillas)
491 - (added) bandlimited ugens: Blit, BlitSaw, BlitSquare
492 (thanks to Robin Davies for implementation,
493 Gary Scavone for putting them in STK)
494 - (added) examples/basic/foo.ck foo2.ck tick.ck tick2.ck
495 (foo2 shows using Blit, tick.ck is a simple counter)
496 - (added) examples/class/dinky.ck try.ck
497 (creating and using class to make instruments)
498 - (fixed) sndbuf.read now closes file handle and sets curf
499 - (fixed) default bufsize=256 under OSX and 512 under all other
500 - (fixed) chuck + foof garbled error message
501 - (fixed) chuck.lex compatibility under some linux
502 - (fixed) waiting on null event: no longer crashes VM
503 - (fixed) function arguments: no longer allow reference to primitive types
504 - (fixed) function: correctly select overloaded functions w/ implicit cast
505 - (fixed) std.atoi() std.atof(): no longer crash on null string
506 - (fixed) std.fabs(): now works correctly
507 - (fixed) basic/moe.ck larry.ck currly.ck use fabs
508 - (fixed) missing base class virtual destructors;
509 FreeBSD/g++ compatibility (thanks rasmus)
510 - (fixed) most -Wall warnings
511 - (fixed) CK_LOG_SYSTEM_ERROR now CK_LOG_CORE
517 (syntax change - 'loop' -> 'repeat')
518 - loop( ... ) construct (see 1.2.0.2) changed to repeat( ... )
519 - usage and semantics same as before
520 - this is also an experimental language feature
521 (let us know if it's good or bad)
522 - float std.abs( float ) changed -> int std.abs( int )
523 - use std.fabs( ... ) for floating point absolute value
525 - (added) /* block comments */
527 - closing '*/' not necessary if commenting out rest of the file
528 - (fixed) arrays of null object references correctly allocated
529 : Event @ events[128];
530 - (fixed) DEFAULT sndbuf rate now set correctly to interpolate
531 for files outside of chuck sample rate (no longer have to
532 explicit do 1 => buf.rate)
533 - (fixed) examples/midi/polyfony*.ck no longer creates 128
534 unnecessary events...
535 - (changed) examples/stk/wurley.ck -> examples/stk/wurley2.ck
536 - (changed) examples/stk/wurley.ck (wacky version)
541 (sorry for the API changes)
542 - (API change) OSC_Send class name changed to 'OscSend'
543 (also): .startMesg(...) name changed to startMsg(...)
544 - (API change) OSC_Recv class name changed to 'OscRecv'
545 - (API change) OSC_Addr class name changed to 'OscEvent'
546 (also): .hasMesg() name changed to .hasMsg()
547 (also): .nextMesg() name changed to .nextMsg()
548 - (API change) STK Shakers.freq now expect Hz instead of MIDI number
550 - (moved) examples/event/opensound*.ck moved to examples/osc/OSC*.ck
551 (see OSC_send.ck and OSC_recv.ck for examples on OpenSoundControl)
552 - (moved) examples/event/polyfony*.ck to examples/midi/
554 - (added) 'loop(...){ }' control structure :
555 example: loop( 8 ) { ... } // executes body 8 times
556 example: loop( foo ) { ... } // executes body foo times
557 (foo is evaluated exactly once entering the loop, the
558 value at that time is used as a constant to control
559 loop iteration - even if foo is changed in the loop
561 - supports break and continue
562 - important: one fundamantal difference between the loop
563 semantic and for/while/until semantic is that the argument
564 expression 'exp' in loop( exp ) is evaluated exactly once
565 when the loop is first entered.
566 - (added) MidiIn and MidiOut member functions:
567 .good() : whether the thing is good to go (int)
568 .num() : the device number (int)
569 .name() : the device name (string)
570 .printerr( int ) : whether to auto print errors (default YES)
571 - (added) --version command line flag (Graham)
573 - (changed) chuck --status now prints shreds sorted by id
574 (previously it was the current shreduling order + blocked)
575 - (changed) a udp port may now be shared by many OSC_Recv (phil)
576 : the incoming messages are broadcast to all
577 - (changed) address/type string in OSC: comma now optional (phil)
579 - (fixed) events are now 0-sample synchronous (instead of 1)
580 - (fixed) startup audio stability for --callback mode
581 - (fixed) incorrect 'continue' behavior in for loops
582 - (fixed) improved OSC stability (phil)
583 - (fixed) OSC shreduling sanity check failed now resolved
584 - (fixed) math.round for negative numbers (win32)
585 - (fixed) std.mtof and std.ftom now internally double precision
586 - (fixed) removed extra console output in STK Flute
587 - (fixed) multiple delete/assertion failure on type rollback
588 - (fixed) chuck --kill now closes WvOut and MidiRW file handles
589 - (added) examples/midi/gomidi.ck : very useful sometimes
590 - (added) examples/midi/gomidi2.ck
591 - (added) examples/basic/rec-auto.ck (rec2.ck back in action)
592 - (added) examples/basic/fmsynth.ck (from v1)
593 - (added) examples/sitar.ck
594 - (fixed) examples/stk/*-o-matic.ck now uses array
599 - (added) full callback capability for real-time audio
600 - blocking functionality still available
601 - select via flags: --blocking and --callback
602 - improves latency and stability, especially on linux
603 - use --callback (default) for low latency / small buffer size
604 - use --blocking for higher throughput
605 - (fixed) crash when doing on-the-fly 'replace' : chuck --replace 0 foo.ck
606 - (fixed) OSC event function now correctly named ("event")
607 - (fixed) removed debug output in OSC
608 - (fixed) implicit cast is now correct when sporking (thanks to Manfred Brockhaus)
609 - (fixed) examples code reformatted, cleaned, and commented
610 - (fixed) nested class definitions can now have same name as outer class
611 - (fixed) nested class bug in scan1 (thanks to Robin Davies)
612 - (fixed) variable resolution in parent class now visible (thanks to Robin Davies)
613 - (fixed) variable resolution ordering
614 - local, class, parent, global (thanks to Robin Davies)
615 - (fixed) emitter now asserts inheritance instead of equality (thanks to Robin Davies)
616 - (fixed) string comparison ==, !=
617 - (added) string operations <, <=, >, >=
623 SYNTAX and OPERATORS:
624 - (added) +=>, operator : 2 +=> i; (also) -=>, *=>, /=>, %=>
625 - (added) @=> for explicit assignment
626 this is the only way to make object reference assignments
627 - (added) implicit int to float casting
628 - (changed) cast now look like: 1.1 $ (int) => int i;
629 - (added) function call by chucking :
631 (1,4) => math.rand2f => result;
633 math.rand2f(1,4) => result;
636 - (fixed) type system for existing types
637 - (added) forward lookup of classes and functions (mutual recursion)
638 - (added) stack overflow detection for massive recursion
641 - (added) language specification:
642 http://chuck.cs.princeton.edu/doc/language
645 - (added) --probe prints all audio and MIDI devices
646 - (added) --log or --verbose logs compiler and virtual machine
647 - (added) --logN or --verboseN multi level logging
652 - (added) 'class' definitions : class X { int i; }
653 - (added) 'extends' keyword : class Y extends Event { int i; }
654 - (added) virtual/polymorphic inheritance
655 - (added) added pre-constructors - code at class level
656 gets run when object is instantiated
657 - (added) function overloading :
658 class X { fun void foo() { } fun void foo( int y ) { } }
659 - (added) base classes (can be extended):
662 - (added) base classes (cannot be extended):
665 - (added) member data
666 - (added) static data
667 - (added) member functions
668 - (added) static functions
671 - (added) base Event class : Event e;
673 can be extended to custom events
674 (see one_event_many_shreds.ck)
675 - (added) waiting on event, chuck to now :
676 e => now; // wait on e
677 - (added) e.signal() wakes up 1 shred, if any
678 - (added) e.broadcast() wakes up all shreds waiting on e
679 - (added) class MidiEvent (see gomidi2.ck)
680 alternative to polling.
681 - (added) class OSCEvent
684 - (added) arrays : int a[10]; float b[20]; Event e[2];
685 - (added) multidimensional arrays : int a[2][2][2];
686 - (added) associative arrays : int a[10]; 0 => a["foo"];
687 all arrays are both int-indexed and associative
688 - (added) array initialization : [ 1, 2, 3 ] @=> int a[];
689 - (added) .cap() for array capacity
690 - (added) .find() test if item is associative array
691 - (added) .erase() erase item in associative array
696 - (changed) all ugen parameters are now also functions:
698 440 => s.freq => val;
700 s.freq( 440 ) => val;
701 - (changed) left-most parameters must now be called as functions
705 f.freq() => float val;
707 440 => s.freq => float val;
710 - (added) class Shred
711 - (added) .yield() .id()
714 - (added) class string
718 all stereo unit generators have .left, .right, .pan functions
719 - (changed) stereo ugen: dac (2 in, 2 out)
720 - (changed) stereo ugen: adc (0 in, 2 out)
721 - (added) stereo ugen: pan2 take mono or stereo input and pans
722 - (added) stereo ugen: mix2 mix stereo input into mono
727 - last 1.1 release : contains all 1.1 changes
732 - FIFO to RR for audio and synthesis - improves stability on OS X
733 - fixed stack underflow emitter bug with declarations
734 - fixed cpu sleep bug on win32
739 - fixed clicks when using adc unit generator
740 (thanks to paul botelho for testing)
741 - added 'maybe' keyword
742 maybe == 0 or 1, with 50% probability each
745 - maybe.ck : the maybe keyword - bad idea? maybe.
746 - maybecli.ck : maybe click, maybe not
748 adc examples work better:
756 - when a shred is removed from VM, all children shreds are
757 also recursively removed
758 (this fix crash due to removing shreds with active children shreds)
759 (to keep children around, put parent in infinite time-loop)
760 (this isn't always good - real solution coming soon)
761 - 'start' keyword now available - holds the a shred's begin time
764 - powerup.ck : start local variable changed name
765 - spork.ck : added infinite time loop to keep children active
770 - crtical patch shreduler time precision
771 - same as 1.1.5.1 - see below
776 - on-the-fly chuck files to remote hosts!
777 > chuck @hostname + foo.ck
778 > chuck @hostname -p<N> + foo.ck
779 - TCP replacing UDP for commands
780 - endian observed (mac <-> win32/linux)
781 - more sensible VM output for on-the-fly commands
782 - many on-the-fly bug fixes
783 - --replace: new shred inherits the replaced shred id
784 (useful to keep track of shreds in VM)
785 - sndbuf automatically set .rate to 1.0 (instead of 0.0)
786 (0.0 => buf.rate if no play on next time advance)
787 - new on-the-fly examples
791 - otf_*.ck - illustrates precise on-the-fly timing
792 (adapted from Perry's ChucK drumming + Ge's sine poops)
794 chuck them one by one into the VM:
796 terminal 1%> chuck --loop
797 terminal 2%> chuck + otf_01.ck
799 terminal 2%> chuck + otf_02.ck
801 (repeat through otf_07.ck)
802 (remove, replace and add your own)
807 - now able to write audio files (wav, aiff, raw)
808 (try rec.ck and rec2.ck concurrently with any other shreds
810 - STK file endian is now observed (more things should work
811 on little endian systems)
812 - added 4 "special" built-in sound samples
813 "special:glot_pop" - glottal pulse (flat)
814 "special:glot_ahh" - glottal 'ahh' pop
815 "special:glot_eee" - glottal 'eee' pop
816 "special:glot_ooo" - glottal 'ooo' pop
817 (see/listen to moe++.ck, larry++.ck, curly++.ck)
818 - all bulit-in sound samples now loadable from both WaveLoop and sndbuf
819 - (win32) sndbuf now properly loads wav aiff
822 - moe++.ck - stooges, evolved
825 - rec.ck - run this concurrently to write audio to file
826 (also try with -s flag for file out, no real-time audio)
827 - rec2.ck - same as rec, but writes to different file every time,
833 - all of STK is now in ChucK!
834 - new examples (see below)
835 - add '--bufnum<N>' to chuck command line (number of buffers)
836 - --status no longer prints full path for source
837 - full path now works for command line + (thanks Adam T.)
839 - improved online ugen documentation (go phil!)
841 new ugens: (again, thanks to Phil Davidson!)
853 delayp - variable write position delay line
856 band-o-matic.ck - banded waveguide, automated
857 delayp.ck - shows usage
858 mode-o-matic.ck - modal bar, happy chaos
859 stifkarp.ck - stifkarp, chaos
864 - added win32 visual studio support (chuck_win32.*)
865 - new oscillators (see below, thanks to Phil)
866 - corrected more issues on some 64-bit systems
867 - new examples (see below)
868 - chucking to oscillators now able to control phase
869 (alternative to doing FM by hand (1::samp at a time),
870 see pwm.ck and sixty.ck) (thanks to Phil)
873 triosc - triangle wave
874 pulseosc - pulse wave oscillator w/ controllable pulse width
880 sixty.ck - shows osc's
881 pwm.ck - basic pulse width modulation
882 (you can still do FM "by hand" - see fmsynth.ck)
887 - improved performance (reduce cpu overhead)
888 - fixed bug that caused crash on ctrl-c
889 - added sndbuf.play (same as rate)
890 - corrected issues on some 64-bit systems
891 - sndbuf.ck now works
895 - added netin/netout unit generators (alpha version)
896 - added a lot of STK unit generators (thanks to philipd)
897 (over 80% of STK is now imported)
898 - fixed Shakers (thanks to philipd) : examples/shake-o-matic.ck
899 - better compilation for cygwin
901 - added many READ functionality for ugen parameters
902 see online documentation at:
903 http://chuck.cs.princeton.edu/doc/program/ugen.html
906 - netout (alpha version) - audio over UDP (see net_send.ck)
907 - netin (alpha version) - audio over UDP (see net_recv.ck)
926 - shake-o-matic.ck - STK shakers going bonkers
927 - net_send.ck - oneway sender
928 - net_recv.ck - oneway recv
929 - net_bounce.ck - redirect
934 - fixed bug for multiple declarations
935 - made functions local to shred by default
936 - shadowing now works
937 - add 'blackhole' ugen for ticking ugens
938 - added std.mtof (philipd)
946 - blackhole - the silent sample sucker
956 - powerup.ck ( (ab)use of TwoPole and sporking)
957 - i-robot (building feedback filters)
958 - voic-o-form.ck (music for replicants)
959 - rhodey/wurley.ck (more stk-o-matics)
963 - added sndfile patch for jack/sndfile (Martin Rumori)
964 - added special raw wav for WaveLoop (philipd, gewang)
966 (see examples/dope.ck)
988 - fixed shred shreduling ID bug for on-the-fly added shreds (gewang)
989 - fixed function resolution for on-the-fly added shreds (gewang)
990 - added math.nextpow2( int n ) (Niklas Werner, gewang)
993 - Mandolin (see examples/mandolin.ck examples/mand-o-matic.ck)
994 - Moog (see examples/moogie.ck)
997 - mandolin.ck (use of STK mandolin)
998 - mand-o-matic (fire it up!)
999 - dope.ck (Homer's WaveLoop using internal STK sound)
1000 - print_last.ck (prints last ugen output)
1001 - wind2.ck (2 shreds control parameters)
1006 - add sndfile support (Ari Lazier)
1007 - add sndbuf file reading/writing (Ari Lazier)
1008 - add sinosc.sfreq and phase (Phil Davidson)
1009 - add sndbuf rate and sinc interp (Phil Davidson)
1010 - add cget functions for unit generators parameters
1011 (many parameters are readable now)
1012 - add .last for last sample computed for all ugen's
1013 - add constants in lib import
1014 - add math.pi math.twopi math.e
1015 - add --srate(N) in command line (chuck --help)
1016 - typing .ck extension optional on command line
1017 - fixed spork bug involved local variables
1018 - fixed nested function calls
1019 - fixed math.min/max bug (Phil Davidson)
1020 - fixed audio stability OS X (Ari Lazier)
1021 - fixed MidiOut issue (thanks to n++k)
1036 - added support for arbitrary audio in/out (via command line)
1042 - added demo[0-5].ck to examples
1043 - PROGRAMMER updated
1044 - big/little endian issue fixed
1049 - major update to use double float for time, dur, and float
1050 (this fixes the millisecond bug)
1055 - fixed win32 build problem (thanks to Adam Wendt)
1056 - fixed midi stack problem (thanks to Thomas Charbonnel)
1061 - fixed mem stack bug (report Alex Chapman)
1062 - added jack support (thanks to Thomas Charbonnel)
1068 - bad midiin now returns 0
1069 - supports sound card with no input
1075 - added ability to spork shreds from code
1077 - 0-127 MIDI devices support
1078 - fix bugs in on-the-fly commands
1079 - added features to --add, --remove
1080 - added --time --kill
1081 - fixed table bug (thanks to n++k)
1082 - fixed linux makefile (thanks to n++k)
1083 - added STK ugen: WaveLoop, Shakers, JCRev, ADSR
1084 - added shred-time synch by T - (now % T ) => now;
1096 1.1.3.0 - initial release