3 - (added) dynamic, resizable arrays
4 .size( int ) resizes array
5 << operator appends new elements into array
6 - (fixed) dac amplitude no longer halved!
7 NOTE: this increases the gain from before by
8 a factor of 2, or roughly 6 dB!! BEWARE!!
9 - (fixed) corrected order of shred/ugen dealloc in VM destructor,
10 preventing a potential crash during shutdown
11 - (fixed) UAna can now upchuck() at now=0
12 - (fixed) STK Chorus UGen now has reasonable defaults
13 .max( dur, float ) for initializing to delay/depth limits
14 .baseDelay( dur ) sets current base delay
15 - (fixed) dur +=> now no longer crashes
19 - (fixed) ctrl-c no longer causes crash on shutdown
20 (was due to memory deallocation bug)
21 - (fixed) incorrect code generation for multiple expressions in 3rd clause
22 of for loops (thanks to Eduard for tracking!)
23 - (fixed) Envelope now is able to ramp down (contributed by Kassen, Dr. Spankenstein,
24 kijjaz, and others on electro-music!)
28 1.2.1.0 : codename spectral
29 - (added) Unit Analyzers (UAna: prounced U-Wanna, plural UAnae)
30 (primary creators: Rebecca and Ge)
31 provides support for spectral processing,
32 information retrieval, generalized + precise audio analysis
34 - (added) new datatypes:
36 complex: (real,imaginary)
37 example: #(3,4) is complex literal (3,4)
38 example: #(3,4) => complex value;
39 access components via value.re and value.im
42 polar: (modulus, phase)
43 example: %(.5, pi/4) is magnitude .5 and phase pi/4
44 example: %(.5, pi/4) => polar bear;
45 access components via bear.mag and bear.phase
48 example: can cast between complex and polar via standard $ casting
52 (authors: Rebecca and Ge)
53 FFT: Fast Fourier Transform
54 input: from UGen (manually input float vector)
55 output: complex spectrum (.cval()/.cvals())
56 magnitude spectrum (.cval()/.fvals())
57 (see examples/analysis/)
59 input: UAna/Blob complex vector (spectrum)
60 output: to UGen (as samples)
61 (see examples/analysis/)
62 Centroid: Centroid feature extractor
63 input: UAna/Blob float vector (mag spectrum)
64 output: single centroid value per frame
65 (see examples/analysis/features/)
66 Flux: Flux feature extractor
67 input: UAna/Blob float vector (mag spectrum)
68 output: single flux value between current and previous frame
69 (see examples/analysis/features/)
70 RMS: RMS feature extractor
71 input: UAna/Blob float vector (mag spectrum)
72 output: single RMS value of frame
73 (see examples/analysis/features/)
74 RollOff: RollOff feature extractor
75 input: UAna/Blob float vector (mag spectrum)
77 output: single RollOff value of frame
78 (see examples/analysis/features/)
81 - (added) capability to externally abort "infinite loop" shreds
82 (this deals with hanging shreds due to potentially
83 infinite loops that don't advance time)
84 - (added) OTF command: chuck --abort.shred sends network OTF
85 to server to remove current shred if there is one
86 - (added) default .toString() method to all Object's
87 - (added) adding an Object to string will first cast object to string;
89 - (added) LiSa.duration() get method, and .voiceGain() set/get
91 - (added) alternate line comment: <-- same as //
93 SinOsc s => dac; <-- here is a comment
94 - (fixed) NullPointerException when instantiating array of objects
95 containing arrays of objects
96 (thanks to chuck-users!!)
97 - (fixed) Machine.remove() on parent shred id no longer crashes
98 - (fixed) Machine.remove() on 'me' now works correctly
99 - (fixed) rounding when writing files via WvOut
100 (thanks to Chris Chafe for discovering and reporting this)
101 - (changed) default frequencies (220/440) added for various STK instruments
104 (there is no version 1.2.0.9!)
109 - (added) command line argument support
110 e.g. %> chuck foo.ck:1:hello bar:2.5:"with space"
111 also works with OTF commands
112 e.g. %> chuck + foo:1:yo
113 also works with Machine.add( ... )
115 Machine.add( "foo:1:2:yo" );
116 (see examples/basic/args.ck for accessing from code)
117 - (added) OS X: watchdog enabled
118 win32: watchdog implemented and enabled
119 (combats chuck infinite empty loop implosion)
120 - (added) OTF server/listener now ON by default...
121 to enable, specify --loop or --server
122 to disable, specify --standalone
125 Dynamics: dynamics processor (compressor, expander, etc.)
126 (author Matt Hoffman and Graham Coleman)
127 (see examples/special/)
129 GenX: classic + new lookup table functions base class
130 (author Dan Trueman, ported from RTCMix)
131 (see examples/special/)
133 float .lookup( float ) : lookup table value
134 float[] .coeffs( float[] ) : load the table
140 CurveTable (extends GenX)
141 WarpTable (extends GenX)
143 LiSa: (Li)ve (Sa)mpling!
144 (author Dan Trueman, partly based on Dan's munger~)
147 - (added) (prototype) string catenation
148 (for now will leak memory! use wisely!!!)
154 - (added) string escape sequences
155 \0 \n \t \a \" \b \f \r \v \\
156 \nnn (3 digit octal ascii)
157 - (added) new Objects:
159 StringTokenizer: uh string tokenizer (by whitespace)
160 (use to be hidden PRC object)
161 see examples/string/token.ck
163 ConsoleInput: interim console input (until file I/O)
164 (use to be hidden Skot object)
165 see examples/string/readline.ck
169 - (api) API additions
170 -------- (also see API modifications below)
171 ADSR: dur attackTime()
174 WvOut: void closeFile()
175 Hid: void openTiltSensor()
176 int read( int, int, HidMsg )
177 HidMsg: int isWheelMotion()
178 (support for mouse scroll wheels)
180 (cross-platform USB HID Keyboard Usage code)
182 (ASCII value of key, where appropriate)
184 - (api) API modifications (sorry!)
186 ADSR: float attackTime( float ) -> dur attackTime( dur )
187 float decayTime( float ) -> dur decayTime( dur )
188 float releaseTime( float ) -> dur releaseTime( dur )
190 - (api) deprecated --> new classes
191 --------------------------
194 - (fixed) adc.last() now returns correct value (was returning 0)
195 - (fixed) array is now subclass of Object
196 - (fixed) accessing null array no longer crashes (instead: exception)
197 - (fixed) allow: 0 length float arrays
198 - (fixed) check for negative array size
199 - (fixed) accessing null map no longer crashes (instead: exception)
200 - (fixed) connecting null UGen references no longer crashes
201 - (fixed) trivial (null == null) no longer evaluated as string
202 - (fixed) strict (x,y) => z type checking
203 - (fixed) UGens no longer able to make duplicate connections
204 - (fixed) && now terminates early if an operand evaluates to 0
205 || terminates early if an operand evaluates to 1
206 - (fixed) bug accessing static members of built-in classes
207 - (fixed) OscSend.startMsg no longer silently fails when
208 using a single string message specification
209 - (fixed) Math.atan2 now accepts the proper arguments
210 - (fixed) increased OTF command network fail-safe measures
211 - (fixed) STK BlitSquare now produces correct frequency
212 (applied fix from STK release)
213 - (fixed) no longer spontaneously crashes when HidIn and
214 other event based input mechanisms are firing rapidly
215 - (fixed) using non-static variables from inside static functions
216 - (fixed) variables must be declared before being used
221 - added: (all) HidIn.name() now returns meaningful device name
222 - fixed: (all) fixed STK Envelope bug
223 - fixed: (osx) mouse motion now correctly returns delta Y
224 - fixed: (win32) joystick hat messages now properly reported
225 - fixed: (win32) fixed bug where joysticks of same model/product
226 id would send messages through the same HidIn object
227 - fixed: (all) seg fault in OSCSend.startMsg() with single
228 string message specification
233 - (api) deprecated --> new classes
234 --------------------------
239 pulseosc --> PulseOsc
246 halfrect --> HalfRect
247 fullrect --> FullRect
256 polezero --> PoleZero
264 --------------------------
265 - (added) --deprecate:X flag
266 X can be stop, warn, or ignore - default is warn
267 - (added) STK BiQuad get functions pfreq, prad, zfreq, zrad
268 - (added) ADSR functions:
269 void .set( dur a, dur d, float s, dur r );
270 void .set( float a, float d, float s, float r );
271 - (added) new UGens (adapted from SC3 Server, Pure Data, CSound)
272 --------------------------
273 LPF : resonant lowpass filter (2nd order butterworth)
274 HPF : resonant highpass filter (2nd order butterworth)
275 BPF : bandpass filter (2nd order butterworth)
276 BRF : bandreject filter (2nd order butterworth)
277 ResonZ : resonant filter (BiQuad with equal-gain zeros)
278 FilterBasic : base class to above filters
279 --------------------------
280 - (added) new HidIn static variables for HidMsg message and device types
281 - (added) HidMsg fields to determine device type and number
282 - (added) HidMsg functions with capitalization rather than underscores
283 (underscored functions deprecated)
284 - (added) .period for all oscillators
285 - (fixed) floating point denormals no longer cause potentially
286 massive CPU usage on intel processors, this includes
287 BiQuad, OnePole, TwoPole, PoleZero, JCRev, PRCRev, NRev
288 - (fixed) STK Echo.max no longer gives incorrect warnings
289 - (fixed) linux makefiles now respects CC/CFLAGS/CXX (Cedric Krier)
290 - (fixed) SinOsc/TriOsc/PulseOsc/SqrOsc/Phasor.sync now unified:
291 .sync == 0 : sync frequency to input
292 .sync == 1 : sync phase to input
293 .sync == 2 : fm synth
295 NOTE: the above changes may break/affect existing patches
296 using TriOsc, PulseOsc, or SqrOsc
297 - (fixed) TriOsc/PulseOsc/SqrOsc phase consistent with convention
298 - (fixed) ADSR now handles keyOff() before sustain state
299 - (fixed) ADSR now correctly inherits Envelope
304 - (added) support for Mac OS X universal binary
305 - (added) executable now reports targets:
309 chuck version: 1.2.0.6 (dracula)
310 exe target: mac os x : universal binary
311 http://chuck.cs.princeton.edu/
315 - (added) support for Mac OS X on Intel: (make osx-intel)
316 - (added) win32 - boost thread priority default from 0 to 5
317 - (added) Mandolin.bodyIR( string path ): set body impulse response
318 - (added) HID: support for mouse input on OS X, Windows, Linux
319 through 'HidIn' class
320 - (added) HID: support for keyboard input on OS X, Windows
321 through 'HidIn' class
322 - (added) new HID examples:
325 - (added) OS X: --probe human-readable MIDI names
326 (thanks to Bruce Murphy)
327 - (fixed) multiple declarations now behave correctly:
328 (example: int a, b, c;)
329 - (fixed) now possible to spork non-static member functions
330 (example: Foo foo; spork ~ foo.go();)
331 - (fixed) sporking fixed in general
332 - (fixed) pre/post ++/-- now work correctly
333 (example: int i; <<< i++ + i++ * ++i >>>;)
334 - (fixed) public classes can now internally reference non-public
335 classes in the same file
336 - (fixed) obj @=> obj now ref counts correctly
337 - (fixed) STK Mandolin.detune( float f ) changed
338 - (fixed) STK Mandolin.damping( float f ) changed
349 - (added) multi-channel audio
350 - use --channels<N> or -c<N> set number of channels
351 for both input and output
352 - use --out<N>/-o<N> and --in<N>/-i<N> to request
353 # of input and output channels separately
354 - stereo is default (for now)
355 - (added) UGen.channels()
356 - (added) class UGen -> class UGen_Multi -> class UGen_Stereo
357 - (added) UGen UGen_Multi.chan( int )
358 use this to address individual channels
359 - (added) examples in examples/multi
360 - n.ck : n channels detuned sine
361 - i.ck : n channels impulse
362 - (added) HID support (author: Spencer Salazar)
363 - (added) 'HidIn' event class (see examples/hid/*.ck)
364 - (added) Terminal Keyboard Input (immediate mode, separate from HID)
365 - (added) 'KBHit' event class (see examples/event/kb*.ck)
366 - (added) sndbuf.chunks : better real-time behavior
367 - can be set to arbitrary integers
368 (before the .read happens)
369 - default is 0 frames (no chunk)
370 - set .chunks to 0 to read in entire file
372 - (added) int math.isinf( float ) // infinity test
373 - (added) int math.isnan( float ) // NaN test
374 (see examples/basic/infnan.ck)
375 - (added) sndbuf.valueAt( int ) for returning sample at arbitrary pos
376 (see examples/basic/valueat.ck)
377 - (added) MASSIVE STK UPDATE
378 - (added) 'StkInstrument' class
381 .freq( float ) / .freq()
382 .controlChange( int, float )
383 - (added) the following now extend 'StkInstrument'
384 (most of them have additional parameters)
392 - FM (and all its subclasses: BeeThree, FMVoices,
393 HevyMetl, PercFlut, Rhodey, TubeBell, Wurley)
402 - (added) better STK documentation
403 http://chuck.cs.princeton.edu/doc/program/ugen.html
404 - (added) examples/stk/modulate.ck
405 - (added) --watchdog and --nowatchdog flags
406 (very experiment watchdog for real-time audio)
407 - (added) () => function; // calls function();
408 (thanks to Mike McGonagle for reporting)
409 - (added) if exp: ( cond ? if_cond : else_cond )
410 (thanks to Mike McGonagle for reporting)
411 - (added) math.abs( int ), math.fabs( float ), math.sgn( float )
412 (std version unchanged)
413 - (added) new examples
438 - (fixed) sinsoc, triosc, sqrosc, phasor:
439 - .sync( 0 ) uses input signal to modulate frequency
440 - .sync( 2 ) uses input signal to modulate phase
442 - (fixed) impulse.last() no longer has extra samp delay
443 (thanks to Mike McGonagle for reporting)
444 - (fixed) class inheritance now handles the first overloaded
445 function of a parent correctly when called using a
446 subclass instance. in other words, this part sucks
448 (thanks to Mike McGonagle for reporting)
449 - (fixed) (internal) type checker re-instantiation patched
450 - (fixed) (internal) detach_all() moved to chuck_globals.cpp
451 - (fixed) (internal) global variables moved to chuck_globals.cpp
452 - (fixed) file handles close in compiler and parser
453 - (fixed) syntax error causing syntax errors
458 - (added) The ChucK Manual (pdf)
459 fantastic work by Adam Tindale and other documentors
460 see doc/Chuck_manual.pdf
461 - (added) Envelope.duration( dur ), Envelope.duration()
462 - (added) Envelope.keyOn(), Envelope.keyOff();
463 - (added) PitShift.mix( float ), PitShift.mix()
464 (originally effectMix)
465 - (added) std.srand( int ) : seed random number generator
466 - (added) update to RtAudio 3.2.0 -> much lower latency: Window DS
467 (thanks to Gary Scavone and Robin Davies)
468 - (added) update to RtMidi 1.0.4 -> improved midi: linux ALSA
469 (thanks to Gary Scavone and Pedro Lopez-Cabanillas)
470 - (added) bandlimited ugens: Blit, BlitSaw, BlitSquare
471 (thanks to Robin Davies for implementation,
472 Gary Scavone for putting them in STK)
473 - (added) examples/basic/foo.ck foo2.ck tick.ck tick2.ck
474 (foo2 shows using Blit, tick.ck is a simple counter)
475 - (added) examples/class/dinky.ck try.ck
476 (creating and using class to make instruments)
477 - (fixed) sndbuf.read now closes file handle and sets curf
478 - (fixed) default bufsize=256 under OSX and 512 under all other
479 - (fixed) chuck + foof garbled error message
480 - (fixed) chuck.lex compatibility under some linux
481 - (fixed) waiting on null event: no longer crashes VM
482 - (fixed) function arguments: no longer allow reference to primitive types
483 - (fixed) function: correctly select overloaded functions w/ implicit cast
484 - (fixed) std.atoi() std.atof(): no longer crash on null string
485 - (fixed) std.fabs(): now works correctly
486 - (fixed) basic/moe.ck larry.ck currly.ck use fabs
487 - (fixed) missing base class virtual destructors;
488 FreeBSD/g++ compatibility (thanks rasmus)
489 - (fixed) most -Wall warnings
490 - (fixed) CK_LOG_SYSTEM_ERROR now CK_LOG_CORE
496 (syntax change - 'loop' -> 'repeat')
497 - loop( ... ) construct (see 1.2.0.2) changed to repeat( ... )
498 - usage and semantics same as before
499 - this is also an experimental language feature
500 (let us know if it's good or bad)
501 - float std.abs( float ) changed -> int std.abs( int )
502 - use std.fabs( ... ) for floating point absolute value
504 - (added) /* block comments */
506 - closing '*/' not necessary if commenting out rest of the file
507 - (fixed) arrays of null object references correctly allocated
508 : Event @ events[128];
509 - (fixed) DEFAULT sndbuf rate now set correctly to interpolate
510 for files outside of chuck sample rate (no longer have to
511 explicit do 1 => buf.rate)
512 - (fixed) examples/midi/polyfony*.ck no longer creates 128
513 unnecessary events...
514 - (changed) examples/stk/wurley.ck -> examples/stk/wurley2.ck
515 - (changed) examples/stk/wurley.ck (wacky version)
520 (sorry for the API changes)
521 - (API change) OSC_Send class name changed to 'OscSend'
522 (also): .startMesg(...) name changed to startMsg(...)
523 - (API change) OSC_Recv class name changed to 'OscRecv'
524 - (API change) OSC_Addr class name changed to 'OscEvent'
525 (also): .hasMesg() name changed to .hasMsg()
526 (also): .nextMesg() name changed to .nextMsg()
527 - (API change) STK Shakers.freq now expect Hz instead of MIDI number
529 - (moved) examples/event/opensound*.ck moved to examples/osc/OSC*.ck
530 (see OSC_send.ck and OSC_recv.ck for examples on OpenSoundControl)
531 - (moved) examples/event/polyfony*.ck to examples/midi/
533 - (added) 'loop(...){ }' control structure :
534 example: loop( 8 ) { ... } // executes body 8 times
535 example: loop( foo ) { ... } // executes body foo times
536 (foo is evaluated exactly once entering the loop, the
537 value at that time is used as a constant to control
538 loop iteration - even if foo is changed in the loop
540 - supports break and continue
541 - important: one fundamantal difference between the loop
542 semantic and for/while/until semantic is that the argument
543 expression 'exp' in loop( exp ) is evaluated exactly once
544 when the loop is first entered.
545 - (added) MidiIn and MidiOut member functions:
546 .good() : whether the thing is good to go (int)
547 .num() : the device number (int)
548 .name() : the device name (string)
549 .printerr( int ) : whether to auto print errors (default YES)
550 - (added) --version command line flag (Graham)
552 - (changed) chuck --status now prints shreds sorted by id
553 (previously it was the current shreduling order + blocked)
554 - (changed) a udp port may now be shared by many OSC_Recv (phil)
555 : the incoming messages are broadcast to all
556 - (changed) address/type string in OSC: comma now optional (phil)
558 - (fixed) events are now 0-sample synchronous (instead of 1)
559 - (fixed) startup audio stability for --callback mode
560 - (fixed) incorrect 'continue' behavior in for loops
561 - (fixed) improved OSC stability (phil)
562 - (fixed) OSC shreduling sanity check failed now resolved
563 - (fixed) math.round for negative numbers (win32)
564 - (fixed) std.mtof and std.ftom now internally double precision
565 - (fixed) removed extra console output in STK Flute
566 - (fixed) multiple delete/assertion failure on type rollback
567 - (fixed) chuck --kill now closes WvOut and MidiRW file handles
568 - (added) examples/midi/gomidi.ck : very useful sometimes
569 - (added) examples/midi/gomidi2.ck
570 - (added) examples/basic/rec-auto.ck (rec2.ck back in action)
571 - (added) examples/basic/fmsynth.ck (from v1)
572 - (added) examples/sitar.ck
573 - (fixed) examples/stk/*-o-matic.ck now uses array
578 - (added) full callback capability for real-time audio
579 - blocking functionality still available
580 - select via flags: --blocking and --callback
581 - improves latency and stability, especially on linux
582 - use --callback (default) for low latency / small buffer size
583 - use --blocking for higher throughput
584 - (fixed) crash when doing on-the-fly 'replace' : chuck --replace 0 foo.ck
585 - (fixed) OSC event function now correctly named ("event")
586 - (fixed) removed debug output in OSC
587 - (fixed) implicit cast is now correct when sporking (thanks to Manfred Brockhaus)
588 - (fixed) examples code reformatted, cleaned, and commented
589 - (fixed) nested class definitions can now have same name as outer class
590 - (fixed) nested class bug in scan1 (thanks to Robin Davies)
591 - (fixed) variable resolution in parent class now visible (thanks to Robin Davies)
592 - (fixed) variable resolution ordering
593 - local, class, parent, global (thanks to Robin Davies)
594 - (fixed) emitter now asserts inheritance instead of equality (thanks to Robin Davies)
595 - (fixed) string comparison ==, !=
596 - (added) string operations <, <=, >, >=
602 SYNTAX and OPERATORS:
603 - (added) +=>, operator : 2 +=> i; (also) -=>, *=>, /=>, %=>
604 - (added) @=> for explicit assignment
605 this is the only way to make object reference assignments
606 - (added) implicit int to float casting
607 - (changed) cast now look like: 1.1 $ (int) => int i;
608 - (added) function call by chucking :
610 (1,4) => math.rand2f => result;
612 math.rand2f(1,4) => result;
615 - (fixed) type system for existing types
616 - (added) forward lookup of classes and functions (mutual recursion)
617 - (added) stack overflow detection for massive recursion
620 - (added) language specification:
621 http://chuck.cs.princeton.edu/doc/language
624 - (added) --probe prints all audio and MIDI devices
625 - (added) --log or --verbose logs compiler and virtual machine
626 - (added) --logN or --verboseN multi level logging
631 - (added) 'class' definitions : class X { int i; }
632 - (added) 'extends' keyword : class Y extends Event { int i; }
633 - (added) virtual/polymorphic inheritance
634 - (added) added pre-constructors - code at class level
635 gets run when object is instantiated
636 - (added) function overloading :
637 class X { fun void foo() { } fun void foo( int y ) { } }
638 - (added) base classes (can be extended):
641 - (added) base classes (cannot be extended):
644 - (added) member data
645 - (added) static data
646 - (added) member functions
647 - (added) static functions
650 - (added) base Event class : Event e;
652 can be extended to custom events
653 (see one_event_many_shreds.ck)
654 - (added) waiting on event, chuck to now :
655 e => now; // wait on e
656 - (added) e.signal() wakes up 1 shred, if any
657 - (added) e.broadcast() wakes up all shreds waiting on e
658 - (added) class MidiEvent (see gomidi2.ck)
659 alternative to polling.
660 - (added) class OSCEvent
663 - (added) arrays : int a[10]; float b[20]; Event e[2];
664 - (added) multidimensional arrays : int a[2][2][2];
665 - (added) associative arrays : int a[10]; 0 => a["foo"];
666 all arrays are both int-indexed and associative
667 - (added) array initialization : [ 1, 2, 3 ] @=> int a[];
668 - (added) .cap() for array capacity
669 - (added) .find() test if item is associative array
670 - (added) .erase() erase item in associative array
675 - (changed) all ugen parameters are now also functions:
677 440 => s.freq => val;
679 s.freq( 440 ) => val;
680 - (changed) left-most parameters must now be called as functions
684 f.freq() => float val;
686 440 => s.freq => float val;
689 - (added) class Shred
690 - (added) .yield() .id()
693 - (added) class string
697 all stereo unit generators have .left, .right, .pan functions
698 - (changed) stereo ugen: dac (2 in, 2 out)
699 - (changed) stereo ugen: adc (0 in, 2 out)
700 - (added) stereo ugen: pan2 take mono or stereo input and pans
701 - (added) stereo ugen: mix2 mix stereo input into mono
706 - last 1.1 release : contains all 1.1 changes
711 - FIFO to RR for audio and synthesis - improves stability on OS X
712 - fixed stack underflow emitter bug with declarations
713 - fixed cpu sleep bug on win32
718 - fixed clicks when using adc unit generator
719 (thanks to paul botelho for testing)
720 - added 'maybe' keyword
721 maybe == 0 or 1, with 50% probability each
724 - maybe.ck : the maybe keyword - bad idea? maybe.
725 - maybecli.ck : maybe click, maybe not
727 adc examples work better:
735 - when a shred is removed from VM, all children shreds are
736 also recursively removed
737 (this fix crash due to removing shreds with active children shreds)
738 (to keep children around, put parent in infinite time-loop)
739 (this isn't always good - real solution coming soon)
740 - 'start' keyword now available - holds the a shred's begin time
743 - powerup.ck : start local variable changed name
744 - spork.ck : added infinite time loop to keep children active
749 - crtical patch shreduler time precision
750 - same as 1.1.5.1 - see below
755 - on-the-fly chuck files to remote hosts!
756 > chuck @hostname + foo.ck
757 > chuck @hostname -p<N> + foo.ck
758 - TCP replacing UDP for commands
759 - endian observed (mac <-> win32/linux)
760 - more sensible VM output for on-the-fly commands
761 - many on-the-fly bug fixes
762 - --replace: new shred inherits the replaced shred id
763 (useful to keep track of shreds in VM)
764 - sndbuf automatically set .rate to 1.0 (instead of 0.0)
765 (0.0 => buf.rate if no play on next time advance)
766 - new on-the-fly examples
770 - otf_*.ck - illustrates precise on-the-fly timing
771 (adapted from Perry's ChucK drumming + Ge's sine poops)
773 chuck them one by one into the VM:
775 terminal 1%> chuck --loop
776 terminal 2%> chuck + otf_01.ck
778 terminal 2%> chuck + otf_02.ck
780 (repeat through otf_07.ck)
781 (remove, replace and add your own)
786 - now able to write audio files (wav, aiff, raw)
787 (try rec.ck and rec2.ck concurrently with any other shreds
789 - STK file endian is now observed (more things should work
790 on little endian systems)
791 - added 4 "special" built-in sound samples
792 "special:glot_pop" - glottal pulse (flat)
793 "special:glot_ahh" - glottal 'ahh' pop
794 "special:glot_eee" - glottal 'eee' pop
795 "special:glot_ooo" - glottal 'ooo' pop
796 (see/listen to moe++.ck, larry++.ck, curly++.ck)
797 - all bulit-in sound samples now loadable from both WaveLoop and sndbuf
798 - (win32) sndbuf now properly loads wav aiff
801 - moe++.ck - stooges, evolved
804 - rec.ck - run this concurrently to write audio to file
805 (also try with -s flag for file out, no real-time audio)
806 - rec2.ck - same as rec, but writes to different file every time,
812 - all of STK is now in ChucK!
813 - new examples (see below)
814 - add '--bufnum<N>' to chuck command line (number of buffers)
815 - --status no longer prints full path for source
816 - full path now works for command line + (thanks Adam T.)
818 - improved online ugen documentation (go phil!)
820 new ugens: (again, thanks to Phil Davidson!)
832 delayp - variable write position delay line
835 band-o-matic.ck - banded waveguide, automated
836 delayp.ck - shows usage
837 mode-o-matic.ck - modal bar, happy chaos
838 stifkarp.ck - stifkarp, chaos
843 - added win32 visual studio support (chuck_win32.*)
844 - new oscillators (see below, thanks to Phil)
845 - corrected more issues on some 64-bit systems
846 - new examples (see below)
847 - chucking to oscillators now able to control phase
848 (alternative to doing FM by hand (1::samp at a time),
849 see pwm.ck and sixty.ck) (thanks to Phil)
852 triosc - triangle wave
853 pulseosc - pulse wave oscillator w/ controllable pulse width
859 sixty.ck - shows osc's
860 pwm.ck - basic pulse width modulation
861 (you can still do FM "by hand" - see fmsynth.ck)
866 - improved performance (reduce cpu overhead)
867 - fixed bug that caused crash on ctrl-c
868 - added sndbuf.play (same as rate)
869 - corrected issues on some 64-bit systems
870 - sndbuf.ck now works
874 - added netin/netout unit generators (alpha version)
875 - added a lot of STK unit generators (thanks to philipd)
876 (over 80% of STK is now imported)
877 - fixed Shakers (thanks to philipd) : examples/shake-o-matic.ck
878 - better compilation for cygwin
880 - added many READ functionality for ugen parameters
881 see online documentation at:
882 http://chuck.cs.princeton.edu/doc/program/ugen.html
885 - netout (alpha version) - audio over UDP (see net_send.ck)
886 - netin (alpha version) - audio over UDP (see net_recv.ck)
905 - shake-o-matic.ck - STK shakers going bonkers
906 - net_send.ck - oneway sender
907 - net_recv.ck - oneway recv
908 - net_bounce.ck - redirect
913 - fixed bug for multiple declarations
914 - made functions local to shred by default
915 - shadowing now works
916 - add 'blackhole' ugen for ticking ugens
917 - added std.mtof (philipd)
925 - blackhole - the silent sample sucker
935 - powerup.ck ( (ab)use of TwoPole and sporking)
936 - i-robot (building feedback filters)
937 - voic-o-form.ck (music for replicants)
938 - rhodey/wurley.ck (more stk-o-matics)
942 - added sndfile patch for jack/sndfile (Martin Rumori)
943 - added special raw wav for WaveLoop (philipd, gewang)
945 (see examples/dope.ck)
967 - fixed shred shreduling ID bug for on-the-fly added shreds (gewang)
968 - fixed function resolution for on-the-fly added shreds (gewang)
969 - added math.nextpow2( int n ) (Niklas Werner, gewang)
972 - Mandolin (see examples/mandolin.ck examples/mand-o-matic.ck)
973 - Moog (see examples/moogie.ck)
976 - mandolin.ck (use of STK mandolin)
977 - mand-o-matic (fire it up!)
978 - dope.ck (Homer's WaveLoop using internal STK sound)
979 - print_last.ck (prints last ugen output)
980 - wind2.ck (2 shreds control parameters)
985 - add sndfile support (Ari Lazier)
986 - add sndbuf file reading/writing (Ari Lazier)
987 - add sinosc.sfreq and phase (Phil Davidson)
988 - add sndbuf rate and sinc interp (Phil Davidson)
989 - add cget functions for unit generators parameters
990 (many parameters are readable now)
991 - add .last for last sample computed for all ugen's
992 - add constants in lib import
993 - add math.pi math.twopi math.e
994 - add --srate(N) in command line (chuck --help)
995 - typing .ck extension optional on command line
996 - fixed spork bug involved local variables
997 - fixed nested function calls
998 - fixed math.min/max bug (Phil Davidson)
999 - fixed audio stability OS X (Ari Lazier)
1000 - fixed MidiOut issue (thanks to n++k)
1015 - added support for arbitrary audio in/out (via command line)
1021 - added demo[0-5].ck to examples
1022 - PROGRAMMER updated
1023 - big/little endian issue fixed
1028 - major update to use double float for time, dur, and float
1029 (this fixes the millisecond bug)
1034 - fixed win32 build problem (thanks to Adam Wendt)
1035 - fixed midi stack problem (thanks to Thomas Charbonnel)
1040 - fixed mem stack bug (report Alex Chapman)
1041 - added jack support (thanks to Thomas Charbonnel)
1047 - bad midiin now returns 0
1048 - supports sound card with no input
1054 - added ability to spork shreds from code
1056 - 0-127 MIDI devices support
1057 - fix bugs in on-the-fly commands
1058 - added features to --add, --remove
1059 - added --time --kill
1060 - fixed table bug (thanks to n++k)
1061 - fixed linux makefile (thanks to n++k)
1062 - added STK ugen: WaveLoop, Shakers, JCRev, ADSR
1063 - added shred-time synch by T - (now % T ) => now;
1075 1.1.3.0 - initial release