3 - (added) initial support for file I/O (finally)
4 (thanks to Andrew Schran, Martin Robinson)
5 - (added) new class: IO, FileIO
7 - (fixed) incorrect UGen disconnect (thanks Kassen for reporting)
12 - (added) dynamic, resizable arrays
13 .size( int ) resizes array; .size() returns current size()
14 << operator appends new elements into array
15 .popBack() pops the last element of the array, reducing size by 1
16 .clear() zero's out elements of the array
20 - (added) new UAna: FeatureCollector
21 turns UAna input into a single feature vector, upon .upchuck()
23 turns audio samples into frames in the UAna domain
25 turns UAna frames into audio samples, via overlap add
27 computes the autocorrelation of UAna input
29 computes the cross correlation of the first two UAna input
30 - (added) UGen.isConnectedTo( Ugen ) // is connected to another ugen?
31 - (added) UAna.isUpConnectedTo( UAna ) // is connected to another uana via =^?
32 - (added) int Shred.done() // is the shred done?
33 int Shred.running() // is the shred running?
34 - (added) int Math.ensurePow2( int )
35 - (added) Math.INFINITY, Math.FLOAT_MAX, Math.FLOAT_MIN_MAG, Math.INT_MAX
36 - (added) TriOsc.width(), PulseOsc.width(), SawOsc.width(), SqrOsc.width()
37 - (added) Std.system(string) is now disabled by default, to enable: specify
38 the --caution-to-the-wind command line flag, for example:
39 %> chuck --caution-to-the-wind --loop
40 - (removed) SqrOsc.width( float ), width is always .5
41 - (fixed) it's now (again) possible to multiply connect
43 - (fixed) OS X only: sudden-motion-sensor HID no longer
44 introduces audio dropouts below peak CPU usage
45 due to added centralized polling;
46 added static Hid.globalPollRate( dur ) to control
47 the central SMS polling's rate
48 - (fixed) Windows only: implementation of array via STL vector::reserve()
49 has been replaced with a more compatible approach (see chuck_oo.cpp)
50 - (fixed) dac amplitude no longer halved!
51 NOTE: this increases the gain from before by
52 a factor of 2, or roughly 6 dB!! BEWARE!!
53 - (fixed) corrected order of shred/ugen dealloc in VM destructor,
54 preventing a potential crash during shutdown
55 - (fixed) UAna can now upchuck() at now==0
56 - (fixed) STK Chorus UGen now has reasonable defaults
57 .max( dur, float ) for initializing to delay/depth limits
58 .baseDelay( dur ) sets current base delay
59 - (fixed) dur +=> now no longer crashes
60 - (fixed) ADSR now returns attackTime, decayTime, and releaseTime that corresponds
61 to the duration-based setting functions (internally multiplied by SR)
63 - (fixed) STK Mandolin no longer plays without explicit noteOn
64 - (fixed) unsporked Shred instances now given id == 0 (thanks Kassen)
65 - (fixed) typos in ugen_xxx.cpp and chuck-specific rtaudio.cpp (/moudi)
70 - (fixed) ctrl-c no longer causes crash on shutdown
71 (was due to memory deallocation bug)
72 - (fixed) incorrect code generation for multiple expressions in 3rd clause
73 of for loops (thanks to Eduard for tracking!)
74 - (fixed) Envelope now is able to ramp down (contributed by Kassen, Dr. Spankenstein,
75 kijjaz, and others on electro-music!)
79 1.2.1.0 : codename spectral
80 - (added) Unit Analyzers (UAna: prounced U-Wanna, plural UAnae)
81 (primary creators: Rebecca and Ge)
82 provides support for spectral processing,
83 information retrieval, generalized + precise audio analysis
85 - (added) new datatypes:
87 complex: (real,imaginary)
88 example: #(3,4) is complex literal (3,4)
89 example: #(3,4) => complex value;
90 access components via value.re and value.im
93 polar: (modulus, phase)
94 example: %(.5, pi/4) is magnitude .5 and phase pi/4
95 example: %(.5, pi/4) => polar bear;
96 access components via bear.mag and bear.phase
99 example: can cast between complex and polar via standard $ casting
101 - (added) new UAna's:
103 (authors: Rebecca and Ge)
104 FFT: Fast Fourier Transform
105 input: from UGen (manually input float vector)
106 output: complex spectrum (.cval()/.cvals())
107 magnitude spectrum (.cval()/.fvals())
108 (see examples/analysis/)
110 input: UAna/Blob complex vector (spectrum)
111 output: to UGen (as samples)
112 (see examples/analysis/)
113 Centroid: Centroid feature extractor
114 input: UAna/Blob float vector (mag spectrum)
115 output: single centroid value per frame
116 (see examples/analysis/features/)
117 Flux: Flux feature extractor
118 input: UAna/Blob float vector (mag spectrum)
119 output: single flux value between current and previous frame
120 (see examples/analysis/features/)
121 RMS: RMS feature extractor
122 input: UAna/Blob float vector (mag spectrum)
123 output: single RMS value of frame
124 (see examples/analysis/features/)
125 RollOff: RollOff feature extractor
126 input: UAna/Blob float vector (mag spectrum)
128 output: single RollOff value of frame
129 (see examples/analysis/features/)
132 - (added) capability to externally abort "infinite loop" shreds
133 (this deals with hanging shreds due to potentially
134 infinite loops that don't advance time)
135 - (added) OTF command: chuck --abort.shred sends network OTF
136 to server to remove current shred if there is one
137 - (added) default .toString() method to all Object's
138 - (added) adding an Object to string will first cast object to string;
140 - (added) LiSa.duration() get method, and .voiceGain() set/get
142 - (added) alternate line comment: <-- same as //
144 SinOsc s => dac; <-- here is a comment
145 - (fixed) NullPointerException when instantiating array of objects
146 containing arrays of objects
147 (thanks to chuck-users!!)
148 - (fixed) Machine.remove() on parent shred id no longer crashes
149 - (fixed) Machine.remove() on 'me' now works correctly
150 - (fixed) rounding when writing files via WvOut
151 (thanks to Chris Chafe for discovering and reporting this)
152 - (changed) default frequencies (220/440) added for various STK instruments
155 (there is no version 1.2.0.9!)
160 - (added) command line argument support
161 e.g. %> chuck foo.ck:1:hello bar:2.5:"with space"
162 also works with OTF commands
163 e.g. %> chuck + foo:1:yo
164 also works with Machine.add( ... )
166 Machine.add( "foo:1:2:yo" );
167 (see examples/basic/args.ck for accessing from code)
168 - (added) OS X: watchdog enabled
169 win32: watchdog implemented and enabled
170 (combats chuck infinite empty loop implosion)
171 - (added) OTF server/listener now ON by default...
172 to enable, specify --loop or --server
173 to disable, specify --standalone
176 Dynamics: dynamics processor (compressor, expander, etc.)
177 (author Matt Hoffman and Graham Coleman)
178 (see examples/special/)
180 GenX: classic + new lookup table functions base class
181 (author Dan Trueman, ported from RTCMix)
182 (see examples/special/)
184 float .lookup( float ) : lookup table value
185 float[] .coeffs( float[] ) : load the table
191 CurveTable (extends GenX)
192 WarpTable (extends GenX)
194 LiSa: (Li)ve (Sa)mpling!
195 (author Dan Trueman, partly based on Dan's munger~)
198 - (added) (prototype) string catenation
199 (for now will leak memory! use wisely!!!)
205 - (added) string escape sequences
206 \0 \n \t \a \" \b \f \r \v \\
207 \nnn (3 digit octal ascii)
208 - (added) new Objects:
210 StringTokenizer: uh string tokenizer (by whitespace)
211 (use to be hidden PRC object)
212 see examples/string/token.ck
214 ConsoleInput: interim console input (until file I/O)
215 (use to be hidden Skot object)
216 see examples/string/readline.ck
220 - (api) API additions
221 -------- (also see API modifications below)
222 ADSR: dur attackTime()
225 WvOut: void closeFile()
226 Hid: void openTiltSensor()
227 int read( int, int, HidMsg )
228 HidMsg: int isWheelMotion()
229 (support for mouse scroll wheels)
231 (cross-platform USB HID Keyboard Usage code)
233 (ASCII value of key, where appropriate)
235 - (api) API modifications (sorry!)
237 ADSR: float attackTime( float ) -> dur attackTime( dur )
238 float decayTime( float ) -> dur decayTime( dur )
239 float releaseTime( float ) -> dur releaseTime( dur )
241 - (api) deprecated --> new classes
242 --------------------------
245 - (fixed) adc.last() now returns correct value (was returning 0)
246 - (fixed) array is now subclass of Object
247 - (fixed) accessing null array no longer crashes (instead: exception)
248 - (fixed) allow: 0 length float arrays
249 - (fixed) check for negative array size
250 - (fixed) accessing null map no longer crashes (instead: exception)
251 - (fixed) connecting null UGen references no longer crashes
252 - (fixed) trivial (null == null) no longer evaluated as string
253 - (fixed) strict (x,y) => z type checking
254 - (fixed) UGens no longer able to make duplicate connections
255 - (fixed) && now terminates early if an operand evaluates to 0
256 || terminates early if an operand evaluates to 1
257 - (fixed) bug accessing static members of built-in classes
258 - (fixed) OscSend.startMsg no longer silently fails when
259 using a single string message specification
260 - (fixed) Math.atan2 now accepts the proper arguments
261 - (fixed) increased OTF command network fail-safe measures
262 - (fixed) STK BlitSquare now produces correct frequency
263 (applied fix from STK release)
264 - (fixed) no longer spontaneously crashes when HidIn and
265 other event based input mechanisms are firing rapidly
266 - (fixed) using non-static variables from inside static functions
267 - (fixed) variables must be declared before being used
272 - added: (all) HidIn.name() now returns meaningful device name
273 - fixed: (all) fixed STK Envelope bug
274 - fixed: (osx) mouse motion now correctly returns delta Y
275 - fixed: (win32) joystick hat messages now properly reported
276 - fixed: (win32) fixed bug where joysticks of same model/product
277 id would send messages through the same HidIn object
278 - fixed: (all) seg fault in OSCSend.startMsg() with single
279 string message specification
284 - (api) deprecated --> new classes
285 --------------------------
290 pulseosc --> PulseOsc
297 halfrect --> HalfRect
298 fullrect --> FullRect
307 polezero --> PoleZero
315 --------------------------
316 - (added) --deprecate:X flag
317 X can be stop, warn, or ignore - default is warn
318 - (added) STK BiQuad get functions pfreq, prad, zfreq, zrad
319 - (added) ADSR functions:
320 void .set( dur a, dur d, float s, dur r );
321 void .set( float a, float d, float s, float r );
322 - (added) new UGens (adapted from SC3 Server, Pure Data, CSound)
323 --------------------------
324 LPF : resonant lowpass filter (2nd order butterworth)
325 HPF : resonant highpass filter (2nd order butterworth)
326 BPF : bandpass filter (2nd order butterworth)
327 BRF : bandreject filter (2nd order butterworth)
328 ResonZ : resonant filter (BiQuad with equal-gain zeros)
329 FilterBasic : base class to above filters
330 --------------------------
331 - (added) new HidIn static variables for HidMsg message and device types
332 - (added) HidMsg fields to determine device type and number
333 - (added) HidMsg functions with capitalization rather than underscores
334 (underscored functions deprecated)
335 - (added) .period for all oscillators
336 - (fixed) floating point denormals no longer cause potentially
337 massive CPU usage on intel processors, this includes
338 BiQuad, OnePole, TwoPole, PoleZero, JCRev, PRCRev, NRev
339 - (fixed) STK Echo.max no longer gives incorrect warnings
340 - (fixed) linux makefiles now respects CC/CFLAGS/CXX (Cedric Krier)
341 - (fixed) SinOsc/TriOsc/PulseOsc/SqrOsc/Phasor.sync now unified:
342 .sync == 0 : sync frequency to input
343 .sync == 1 : sync phase to input
344 .sync == 2 : fm synth
346 NOTE: the above changes may break/affect existing patches
347 using TriOsc, PulseOsc, or SqrOsc
348 - (fixed) TriOsc/PulseOsc/SqrOsc phase consistent with convention
349 - (fixed) ADSR now handles keyOff() before sustain state
350 - (fixed) ADSR now correctly inherits Envelope
355 - (added) support for Mac OS X universal binary
356 - (added) executable now reports targets:
360 chuck version: 1.2.0.6 (dracula)
361 exe target: mac os x : universal binary
362 http://chuck.cs.princeton.edu/
366 - (added) support for Mac OS X on Intel: (make osx-intel)
367 - (added) win32 - boost thread priority default from 0 to 5
368 - (added) Mandolin.bodyIR( string path ): set body impulse response
369 - (added) HID: support for mouse input on OS X, Windows, Linux
370 through 'HidIn' class
371 - (added) HID: support for keyboard input on OS X, Windows
372 through 'HidIn' class
373 - (added) new HID examples:
376 - (added) OS X: --probe human-readable MIDI names
377 (thanks to Bruce Murphy)
378 - (fixed) multiple declarations now behave correctly:
379 (example: int a, b, c;)
380 - (fixed) now possible to spork non-static member functions
381 (example: Foo foo; spork ~ foo.go();)
382 - (fixed) sporking fixed in general
383 - (fixed) pre/post ++/-- now work correctly
384 (example: int i; <<< i++ + i++ * ++i >>>;)
385 - (fixed) public classes can now internally reference non-public
386 classes in the same file
387 - (fixed) obj @=> obj now ref counts correctly
388 - (fixed) STK Mandolin.detune( float f ) changed
389 - (fixed) STK Mandolin.damping( float f ) changed
400 - (added) multi-channel audio
401 - use --channels<N> or -c<N> set number of channels
402 for both input and output
403 - use --out<N>/-o<N> and --in<N>/-i<N> to request
404 # of input and output channels separately
405 - stereo is default (for now)
406 - (added) UGen.channels()
407 - (added) class UGen -> class UGen_Multi -> class UGen_Stereo
408 - (added) UGen UGen_Multi.chan( int )
409 use this to address individual channels
410 - (added) examples in examples/multi
411 - n.ck : n channels detuned sine
412 - i.ck : n channels impulse
413 - (added) HID support (author: Spencer Salazar)
414 - (added) 'HidIn' event class (see examples/hid/*.ck)
415 - (added) Terminal Keyboard Input (immediate mode, separate from HID)
416 - (added) 'KBHit' event class (see examples/event/kb*.ck)
417 - (added) sndbuf.chunks : better real-time behavior
418 - can be set to arbitrary integers
419 (before the .read happens)
420 - default is 0 frames (no chunk)
421 - set .chunks to 0 to read in entire file
423 - (added) int math.isinf( float ) // infinity test
424 - (added) int math.isnan( float ) // NaN test
425 (see examples/basic/infnan.ck)
426 - (added) sndbuf.valueAt( int ) for returning sample at arbitrary pos
427 (see examples/basic/valueat.ck)
428 - (added) MASSIVE STK UPDATE
429 - (added) 'StkInstrument' class
432 .freq( float ) / .freq()
433 .controlChange( int, float )
434 - (added) the following now extend 'StkInstrument'
435 (most of them have additional parameters)
443 - FM (and all its subclasses: BeeThree, FMVoices,
444 HevyMetl, PercFlut, Rhodey, TubeBell, Wurley)
453 - (added) better STK documentation
454 http://chuck.cs.princeton.edu/doc/program/ugen.html
455 - (added) examples/stk/modulate.ck
456 - (added) --watchdog and --nowatchdog flags
457 (very experiment watchdog for real-time audio)
458 - (added) () => function; // calls function();
459 (thanks to Mike McGonagle for reporting)
460 - (added) if exp: ( cond ? if_cond : else_cond )
461 (thanks to Mike McGonagle for reporting)
462 - (added) math.abs( int ), math.fabs( float ), math.sgn( float )
463 (std version unchanged)
464 - (added) new examples
489 - (fixed) sinsoc, triosc, sqrosc, phasor:
490 - .sync( 0 ) uses input signal to modulate frequency
491 - .sync( 2 ) uses input signal to modulate phase
493 - (fixed) impulse.last() no longer has extra samp delay
494 (thanks to Mike McGonagle for reporting)
495 - (fixed) class inheritance now handles the first overloaded
496 function of a parent correctly when called using a
497 subclass instance. in other words, this part sucks
499 (thanks to Mike McGonagle for reporting)
500 - (fixed) (internal) type checker re-instantiation patched
501 - (fixed) (internal) detach_all() moved to chuck_globals.cpp
502 - (fixed) (internal) global variables moved to chuck_globals.cpp
503 - (fixed) file handles close in compiler and parser
504 - (fixed) syntax error causing syntax errors
509 - (added) The ChucK Manual (pdf)
510 fantastic work by Adam Tindale and other documentors
511 see doc/Chuck_manual.pdf
512 - (added) Envelope.duration( dur ), Envelope.duration()
513 - (added) Envelope.keyOn(), Envelope.keyOff();
514 - (added) PitShift.mix( float ), PitShift.mix()
515 (originally effectMix)
516 - (added) std.srand( int ) : seed random number generator
517 - (added) update to RtAudio 3.2.0 -> much lower latency: Window DS
518 (thanks to Gary Scavone and Robin Davies)
519 - (added) update to RtMidi 1.0.4 -> improved midi: linux ALSA
520 (thanks to Gary Scavone and Pedro Lopez-Cabanillas)
521 - (added) bandlimited ugens: Blit, BlitSaw, BlitSquare
522 (thanks to Robin Davies for implementation,
523 Gary Scavone for putting them in STK)
524 - (added) examples/basic/foo.ck foo2.ck tick.ck tick2.ck
525 (foo2 shows using Blit, tick.ck is a simple counter)
526 - (added) examples/class/dinky.ck try.ck
527 (creating and using class to make instruments)
528 - (fixed) sndbuf.read now closes file handle and sets curf
529 - (fixed) default bufsize=256 under OSX and 512 under all other
530 - (fixed) chuck + foof garbled error message
531 - (fixed) chuck.lex compatibility under some linux
532 - (fixed) waiting on null event: no longer crashes VM
533 - (fixed) function arguments: no longer allow reference to primitive types
534 - (fixed) function: correctly select overloaded functions w/ implicit cast
535 - (fixed) std.atoi() std.atof(): no longer crash on null string
536 - (fixed) std.fabs(): now works correctly
537 - (fixed) basic/moe.ck larry.ck currly.ck use fabs
538 - (fixed) missing base class virtual destructors;
539 FreeBSD/g++ compatibility (thanks rasmus)
540 - (fixed) most -Wall warnings
541 - (fixed) CK_LOG_SYSTEM_ERROR now CK_LOG_CORE
547 (syntax change - 'loop' -> 'repeat')
548 - loop( ... ) construct (see 1.2.0.2) changed to repeat( ... )
549 - usage and semantics same as before
550 - this is also an experimental language feature
551 (let us know if it's good or bad)
552 - float std.abs( float ) changed -> int std.abs( int )
553 - use std.fabs( ... ) for floating point absolute value
555 - (added) /* block comments */
557 - closing '*/' not necessary if commenting out rest of the file
558 - (fixed) arrays of null object references correctly allocated
559 : Event @ events[128];
560 - (fixed) DEFAULT sndbuf rate now set correctly to interpolate
561 for files outside of chuck sample rate (no longer have to
562 explicit do 1 => buf.rate)
563 - (fixed) examples/midi/polyfony*.ck no longer creates 128
564 unnecessary events...
565 - (changed) examples/stk/wurley.ck -> examples/stk/wurley2.ck
566 - (changed) examples/stk/wurley.ck (wacky version)
571 (sorry for the API changes)
572 - (API change) OSC_Send class name changed to 'OscSend'
573 (also): .startMesg(...) name changed to startMsg(...)
574 - (API change) OSC_Recv class name changed to 'OscRecv'
575 - (API change) OSC_Addr class name changed to 'OscEvent'
576 (also): .hasMesg() name changed to .hasMsg()
577 (also): .nextMesg() name changed to .nextMsg()
578 - (API change) STK Shakers.freq now expect Hz instead of MIDI number
580 - (moved) examples/event/opensound*.ck moved to examples/osc/OSC*.ck
581 (see OSC_send.ck and OSC_recv.ck for examples on OpenSoundControl)
582 - (moved) examples/event/polyfony*.ck to examples/midi/
584 - (added) 'loop(...){ }' control structure :
585 example: loop( 8 ) { ... } // executes body 8 times
586 example: loop( foo ) { ... } // executes body foo times
587 (foo is evaluated exactly once entering the loop, the
588 value at that time is used as a constant to control
589 loop iteration - even if foo is changed in the loop
591 - supports break and continue
592 - important: one fundamantal difference between the loop
593 semantic and for/while/until semantic is that the argument
594 expression 'exp' in loop( exp ) is evaluated exactly once
595 when the loop is first entered.
596 - (added) MidiIn and MidiOut member functions:
597 .good() : whether the thing is good to go (int)
598 .num() : the device number (int)
599 .name() : the device name (string)
600 .printerr( int ) : whether to auto print errors (default YES)
601 - (added) --version command line flag (Graham)
603 - (changed) chuck --status now prints shreds sorted by id
604 (previously it was the current shreduling order + blocked)
605 - (changed) a udp port may now be shared by many OSC_Recv (phil)
606 : the incoming messages are broadcast to all
607 - (changed) address/type string in OSC: comma now optional (phil)
609 - (fixed) events are now 0-sample synchronous (instead of 1)
610 - (fixed) startup audio stability for --callback mode
611 - (fixed) incorrect 'continue' behavior in for loops
612 - (fixed) improved OSC stability (phil)
613 - (fixed) OSC shreduling sanity check failed now resolved
614 - (fixed) math.round for negative numbers (win32)
615 - (fixed) std.mtof and std.ftom now internally double precision
616 - (fixed) removed extra console output in STK Flute
617 - (fixed) multiple delete/assertion failure on type rollback
618 - (fixed) chuck --kill now closes WvOut and MidiRW file handles
619 - (added) examples/midi/gomidi.ck : very useful sometimes
620 - (added) examples/midi/gomidi2.ck
621 - (added) examples/basic/rec-auto.ck (rec2.ck back in action)
622 - (added) examples/basic/fmsynth.ck (from v1)
623 - (added) examples/sitar.ck
624 - (fixed) examples/stk/*-o-matic.ck now uses array
629 - (added) full callback capability for real-time audio
630 - blocking functionality still available
631 - select via flags: --blocking and --callback
632 - improves latency and stability, especially on linux
633 - use --callback (default) for low latency / small buffer size
634 - use --blocking for higher throughput
635 - (fixed) crash when doing on-the-fly 'replace' : chuck --replace 0 foo.ck
636 - (fixed) OSC event function now correctly named ("event")
637 - (fixed) removed debug output in OSC
638 - (fixed) implicit cast is now correct when sporking (thanks to Manfred Brockhaus)
639 - (fixed) examples code reformatted, cleaned, and commented
640 - (fixed) nested class definitions can now have same name as outer class
641 - (fixed) nested class bug in scan1 (thanks to Robin Davies)
642 - (fixed) variable resolution in parent class now visible (thanks to Robin Davies)
643 - (fixed) variable resolution ordering
644 - local, class, parent, global (thanks to Robin Davies)
645 - (fixed) emitter now asserts inheritance instead of equality (thanks to Robin Davies)
646 - (fixed) string comparison ==, !=
647 - (added) string operations <, <=, >, >=
653 SYNTAX and OPERATORS:
654 - (added) +=>, operator : 2 +=> i; (also) -=>, *=>, /=>, %=>
655 - (added) @=> for explicit assignment
656 this is the only way to make object reference assignments
657 - (added) implicit int to float casting
658 - (changed) cast now look like: 1.1 $ (int) => int i;
659 - (added) function call by chucking :
661 (1,4) => math.rand2f => result;
663 math.rand2f(1,4) => result;
666 - (fixed) type system for existing types
667 - (added) forward lookup of classes and functions (mutual recursion)
668 - (added) stack overflow detection for massive recursion
671 - (added) language specification:
672 http://chuck.cs.princeton.edu/doc/language
675 - (added) --probe prints all audio and MIDI devices
676 - (added) --log or --verbose logs compiler and virtual machine
677 - (added) --logN or --verboseN multi level logging
682 - (added) 'class' definitions : class X { int i; }
683 - (added) 'extends' keyword : class Y extends Event { int i; }
684 - (added) virtual/polymorphic inheritance
685 - (added) added pre-constructors - code at class level
686 gets run when object is instantiated
687 - (added) function overloading :
688 class X { fun void foo() { } fun void foo( int y ) { } }
689 - (added) base classes (can be extended):
692 - (added) base classes (cannot be extended):
695 - (added) member data
696 - (added) static data
697 - (added) member functions
698 - (added) static functions
701 - (added) base Event class : Event e;
703 can be extended to custom events
704 (see one_event_many_shreds.ck)
705 - (added) waiting on event, chuck to now :
706 e => now; // wait on e
707 - (added) e.signal() wakes up 1 shred, if any
708 - (added) e.broadcast() wakes up all shreds waiting on e
709 - (added) class MidiEvent (see gomidi2.ck)
710 alternative to polling.
711 - (added) class OSCEvent
714 - (added) arrays : int a[10]; float b[20]; Event e[2];
715 - (added) multidimensional arrays : int a[2][2][2];
716 - (added) associative arrays : int a[10]; 0 => a["foo"];
717 all arrays are both int-indexed and associative
718 - (added) array initialization : [ 1, 2, 3 ] @=> int a[];
719 - (added) .cap() for array capacity
720 - (added) .find() test if item is associative array
721 - (added) .erase() erase item in associative array
726 - (changed) all ugen parameters are now also functions:
728 440 => s.freq => val;
730 s.freq( 440 ) => val;
731 - (changed) left-most parameters must now be called as functions
735 f.freq() => float val;
737 440 => s.freq => float val;
740 - (added) class Shred
741 - (added) .yield() .id()
744 - (added) class string
748 all stereo unit generators have .left, .right, .pan functions
749 - (changed) stereo ugen: dac (2 in, 2 out)
750 - (changed) stereo ugen: adc (0 in, 2 out)
751 - (added) stereo ugen: pan2 take mono or stereo input and pans
752 - (added) stereo ugen: mix2 mix stereo input into mono
757 - last 1.1 release : contains all 1.1 changes
762 - FIFO to RR for audio and synthesis - improves stability on OS X
763 - fixed stack underflow emitter bug with declarations
764 - fixed cpu sleep bug on win32
769 - fixed clicks when using adc unit generator
770 (thanks to paul botelho for testing)
771 - added 'maybe' keyword
772 maybe == 0 or 1, with 50% probability each
775 - maybe.ck : the maybe keyword - bad idea? maybe.
776 - maybecli.ck : maybe click, maybe not
778 adc examples work better:
786 - when a shred is removed from VM, all children shreds are
787 also recursively removed
788 (this fix crash due to removing shreds with active children shreds)
789 (to keep children around, put parent in infinite time-loop)
790 (this isn't always good - real solution coming soon)
791 - 'start' keyword now available - holds the a shred's begin time
794 - powerup.ck : start local variable changed name
795 - spork.ck : added infinite time loop to keep children active
800 - crtical patch shreduler time precision
801 - same as 1.1.5.1 - see below
806 - on-the-fly chuck files to remote hosts!
807 > chuck @hostname + foo.ck
808 > chuck @hostname -p<N> + foo.ck
809 - TCP replacing UDP for commands
810 - endian observed (mac <-> win32/linux)
811 - more sensible VM output for on-the-fly commands
812 - many on-the-fly bug fixes
813 - --replace: new shred inherits the replaced shred id
814 (useful to keep track of shreds in VM)
815 - sndbuf automatically set .rate to 1.0 (instead of 0.0)
816 (0.0 => buf.rate if no play on next time advance)
817 - new on-the-fly examples
821 - otf_*.ck - illustrates precise on-the-fly timing
822 (adapted from Perry's ChucK drumming + Ge's sine poops)
824 chuck them one by one into the VM:
826 terminal 1%> chuck --loop
827 terminal 2%> chuck + otf_01.ck
829 terminal 2%> chuck + otf_02.ck
831 (repeat through otf_07.ck)
832 (remove, replace and add your own)
837 - now able to write audio files (wav, aiff, raw)
838 (try rec.ck and rec2.ck concurrently with any other shreds
840 - STK file endian is now observed (more things should work
841 on little endian systems)
842 - added 4 "special" built-in sound samples
843 "special:glot_pop" - glottal pulse (flat)
844 "special:glot_ahh" - glottal 'ahh' pop
845 "special:glot_eee" - glottal 'eee' pop
846 "special:glot_ooo" - glottal 'ooo' pop
847 (see/listen to moe++.ck, larry++.ck, curly++.ck)
848 - all bulit-in sound samples now loadable from both WaveLoop and sndbuf
849 - (win32) sndbuf now properly loads wav aiff
852 - moe++.ck - stooges, evolved
855 - rec.ck - run this concurrently to write audio to file
856 (also try with -s flag for file out, no real-time audio)
857 - rec2.ck - same as rec, but writes to different file every time,
863 - all of STK is now in ChucK!
864 - new examples (see below)
865 - add '--bufnum<N>' to chuck command line (number of buffers)
866 - --status no longer prints full path for source
867 - full path now works for command line + (thanks Adam T.)
869 - improved online ugen documentation (go phil!)
871 new ugens: (again, thanks to Phil Davidson!)
883 delayp - variable write position delay line
886 band-o-matic.ck - banded waveguide, automated
887 delayp.ck - shows usage
888 mode-o-matic.ck - modal bar, happy chaos
889 stifkarp.ck - stifkarp, chaos
894 - added win32 visual studio support (chuck_win32.*)
895 - new oscillators (see below, thanks to Phil)
896 - corrected more issues on some 64-bit systems
897 - new examples (see below)
898 - chucking to oscillators now able to control phase
899 (alternative to doing FM by hand (1::samp at a time),
900 see pwm.ck and sixty.ck) (thanks to Phil)
903 triosc - triangle wave
904 pulseosc - pulse wave oscillator w/ controllable pulse width
910 sixty.ck - shows osc's
911 pwm.ck - basic pulse width modulation
912 (you can still do FM "by hand" - see fmsynth.ck)
917 - improved performance (reduce cpu overhead)
918 - fixed bug that caused crash on ctrl-c
919 - added sndbuf.play (same as rate)
920 - corrected issues on some 64-bit systems
921 - sndbuf.ck now works
925 - added netin/netout unit generators (alpha version)
926 - added a lot of STK unit generators (thanks to philipd)
927 (over 80% of STK is now imported)
928 - fixed Shakers (thanks to philipd) : examples/shake-o-matic.ck
929 - better compilation for cygwin
931 - added many READ functionality for ugen parameters
932 see online documentation at:
933 http://chuck.cs.princeton.edu/doc/program/ugen.html
936 - netout (alpha version) - audio over UDP (see net_send.ck)
937 - netin (alpha version) - audio over UDP (see net_recv.ck)
956 - shake-o-matic.ck - STK shakers going bonkers
957 - net_send.ck - oneway sender
958 - net_recv.ck - oneway recv
959 - net_bounce.ck - redirect
964 - fixed bug for multiple declarations
965 - made functions local to shred by default
966 - shadowing now works
967 - add 'blackhole' ugen for ticking ugens
968 - added std.mtof (philipd)
976 - blackhole - the silent sample sucker
986 - powerup.ck ( (ab)use of TwoPole and sporking)
987 - i-robot (building feedback filters)
988 - voic-o-form.ck (music for replicants)
989 - rhodey/wurley.ck (more stk-o-matics)
993 - added sndfile patch for jack/sndfile (Martin Rumori)
994 - added special raw wav for WaveLoop (philipd, gewang)
996 (see examples/dope.ck)
1018 - fixed shred shreduling ID bug for on-the-fly added shreds (gewang)
1019 - fixed function resolution for on-the-fly added shreds (gewang)
1020 - added math.nextpow2( int n ) (Niklas Werner, gewang)
1023 - Mandolin (see examples/mandolin.ck examples/mand-o-matic.ck)
1024 - Moog (see examples/moogie.ck)
1027 - mandolin.ck (use of STK mandolin)
1028 - mand-o-matic (fire it up!)
1029 - dope.ck (Homer's WaveLoop using internal STK sound)
1030 - print_last.ck (prints last ugen output)
1031 - wind2.ck (2 shreds control parameters)
1036 - add sndfile support (Ari Lazier)
1037 - add sndbuf file reading/writing (Ari Lazier)
1038 - add sinosc.sfreq and phase (Phil Davidson)
1039 - add sndbuf rate and sinc interp (Phil Davidson)
1040 - add cget functions for unit generators parameters
1041 (many parameters are readable now)
1042 - add .last for last sample computed for all ugen's
1043 - add constants in lib import
1044 - add math.pi math.twopi math.e
1045 - add --srate(N) in command line (chuck --help)
1046 - typing .ck extension optional on command line
1047 - fixed spork bug involved local variables
1048 - fixed nested function calls
1049 - fixed math.min/max bug (Phil Davidson)
1050 - fixed audio stability OS X (Ari Lazier)
1051 - fixed MidiOut issue (thanks to n++k)
1066 - added support for arbitrary audio in/out (via command line)
1072 - added demo[0-5].ck to examples
1073 - PROGRAMMER updated
1074 - big/little endian issue fixed
1079 - major update to use double float for time, dur, and float
1080 (this fixes the millisecond bug)
1085 - fixed win32 build problem (thanks to Adam Wendt)
1086 - fixed midi stack problem (thanks to Thomas Charbonnel)
1091 - fixed mem stack bug (report Alex Chapman)
1092 - added jack support (thanks to Thomas Charbonnel)
1098 - bad midiin now returns 0
1099 - supports sound card with no input
1105 - added ability to spork shreds from code
1107 - 0-127 MIDI devices support
1108 - fix bugs in on-the-fly commands
1109 - added features to --add, --remove
1110 - added --time --kill
1111 - fixed table bug (thanks to n++k)
1112 - fixed linux makefile (thanks to n++k)
1113 - added STK ugen: WaveLoop, Shakers, JCRev, ADSR
1114 - added shred-time synch by T - (now % T ) => now;
1126 1.1.3.0 - initial release