[chuck-users] teaching with ChucK (was Windows XP ...)

joerg piringer joerg at piringer.net
Thu Apr 20 20:29:56 EDT 2006

Hi Ge,
ssssounds great!
i am still exploring chuck (currently trying to implement 
sample-timestretch, scroll down for a very messy & crude attempt) but i 
think this will be my tool of choice, so you can put me on the "list of 
places that use ChucK for education".


Ge Wang wrote:
> Hi Joerg!
>> btw: anyone using chuck for education? i am planning to use chuck in a 
>> class at university...
> I think several institutions have started to use chuck as a teaching 
> tool, both for audio synthesis and programming.  We taught and are 
> teaching the Princeton Laptop Orchestra with ChucK, and have been 
> pleasantly surprised by the result.  Last semester, we taught ChucK to 15 
> freshmen (none of whom had prior programming experience).  They were 
> hooked from the start (the assignments eventually included building a 
> on-the-fly generative drum machine, a soundscape, duo and trio 
> performances).  The bulk of the success, I believe, was due to the sheer 
> creative will and energy of the students (they all were fantastic), but it 
> also proved to us that ChucK can be a viable and beneficial teaching tool.
> Perry, Dan Trueman, Scott Smallwood, and students can provide better, 
> potentially different, and more extended perspectives, this was just my 
> 2::cent on ChucK and PLOrk.
> If anyone else is using ChucK in the classroom (I know of folks at UVic, 
> McGill, GA Tech, and few other places that use chuck to various degrees), 
> we'd love to hear about it.  Perhaps we can eventually make a list of 
> places that use ChucK for education, and share our materials/experiences.
> (Feel free to fire away.)
> Best,
> Ge!

// the patch
sndbuf buf => blackhole;
impulse i => dac;

// load the file
"../data/voice.wav" => buf.read;

2000 => int looplength;
0.01 => float loopadvance;

0 => int sm;
0 => float rpos;

// time loop
	buf.valueAt(sm + (rpos $ int)) => i.next;
	if(sm > looplength)
		0 => sm;
		1 +=> sm;
	if(rpos > buf.samples()-looplength)
		0 => rpos;
		loopadvance +=> rpos;
     1::samp => now;


More information about the chuck-users mailing list