Tom Says: Safe code is boring code!
Do you know of Giles Bowkett? If you follow the goings-on of the Ruby community, you probably do. As he'll tell you on his blog, he's hot stuff.
He's got talent. His Archaeoperyx talk is inspirational, both in presentation and content. He commands your attention and has insight which has no doubt helped to shape the way I will approach my career after graduation. And Archaeopteryx itself is a lot of fun! In short, I'm a fan.
That said, he's as catty and opinionated as your average Ruby rock star. I write today to combat the negative light his recent post "Fuck ChucK" casts on the synthesizer that's near to my heart.
The people who wrote ChucK got academic funding to work on a music software project. They didn't do it on their own dime, like me.
Academic researchers don't work for their money. It's thrown at them. They don't even want it. In fact, they wish they would stop getting paid to go to work every day to do things they hate. Ge, the creator of ChucK, worked on it and performed with it for six years because it was the least interesting project on the table at the time. He continues to do so because ignoring opportunities to do something else with his life is one of his favorite pastimes.
Unlike a researcher, Giles has bread to win. Giles sees wealthy people using instruments which can be controlled with MIDI, so Giles builds a smart MIDI controller in hopes that those wealthy people will share some of their money.
Archaeopteryx revolves around MIDI. ChucK treats it as a footnote.
But some might say that Giles is a little narrow-minded. They may have the strange idea that there's a little more to music-making than professionals using expensive, MIDI-crunching software.
They think, maybe if Giles loved music just a little bit more, he would see the musicians making music by other means. He would see them tapping keyboards and mice, playing modified violins and flutes, processing live audio, swinging Wiimotes and cell phones, digging into Max/MSP rats' nests, visualizing their performance with Processing, or collaborating across the room world. Perhaps he would see the multitude of communication protocols needed to glue these things together.
Perhaps he would see ChucK as the glue. And MIDI as the footnote.
…
No, he can't possibly pay attention to that many means of musical expression. He's got his own dime to work on, no time to fantasize about music. He's got a business to run. And it runs on MIDI.
I want to bury every one of those motherChucKers under the sea.
Please no! What if we agreed to use MIDI in every performance? I'm sure we could fit it in there, somewhere! Maybe between the live-coder and the saxophonist? That'd prove our love for music, right?
MIDI doesn't matter. Those things dangling on either end of the MIDI line? They do.
The difference between Archaeoperyx and ChucK is where they sit on that line.
Archaeopteryx is a MIDI source. It's indistinguishable from a drummer on wired drums, a pianist on a keyboard, or a DJ on a control surface. Input from any of these sources is meant to control a synthesizer. Giles recommends Ableton Live or Propellerhead Reason. Why? People with those programs have money.
ChucK users don't have money.
// trigger samples
// in response to MIDI
// from Archaeopteryx
// (or anywhere else)
// ~~ a ChucK script ~~
MidiIn min;
MidiMsg msg;
if ( !min.open(0) ) me.exit();
SndBuf s[50]; // sound buffers for playing samples
"hihat-open.wav" => s[36].read;
"hihat.wav" => s[42].read;
"kick.wav" => s[39].read;
"kick.wav" => s[41].read;
"snare-chili.wav" => s[37].read;
"snare-hop.wav" => s[43].read;
"snare.wav" => s[45].read;
for( 0 => int i; i < s.cap(); i++)
s[i] => dac; // connect sound buffer to speaker
while( true ) {
min => now; // wait for MIDI note
while( min.recv( msg ) ) {
if(msg.data1 >= 0x90 && msg.data1 < 0xa0) {
0 => s[msg.data2].pos; // restart sample
(msg.data3 / 127.0) * 0.9 => s[msg.data2].gain;
(msg.data3 / 127.0) * 0.1 + 0.95 => s[msg.data2].rate;
}
}
}
On OS X you can make this work with the free software "MIDI Patchbay," using the same technique as works to let Archaeopteryx control Garage Band. There are tutorials explaining it linked from the Archaeopteryx project page.
ChucK is made for signal processing (sound synthesis and analysis). Playing stored samples is one of the lamest things you could do with it. And Archaeopteryx does way more than trigger samples besides. In a lot of ways, they were made for each other.
Try Archaeopteryx, but know that using it doesn't have to cost you money. And don't let some guy on the Internet tell you whether or not you love music. And finally, please try ChucK. :)
Posted Oct 04, 2008, in the early morning.