Thursday, November 6, 2008

Archaeopteryx Isn't Just For Fun

In my GoRuCo presentation on Archaeopteryx, I said I would slap anybody who said it was just for fun. One person who said "dance beats seem easy" seems to have taken that threat literally. I should clarify that "you will get slapped" is secret code language for "a nerd will write about you on the Internet."

I know I said just the other day that I was dropping this issue, but I made a joke, and people took it way too seriously. My acting teacher has two Emmys; a superstar DJ knows about Archaeopteryx; but I'm somehow so worked up about a guy who wrote a good book but organized a pair of bad conferences in a row that I'm going to beat him up? Because the guy with the bad conferences is more important to my mood than the superstar DJ or the extremely qualified teacher?

Some people believed this. They took it so seriously, I'm not only banned from RubyConf, I can't talk about it on my blog, either. I wrote a blog post where I made fun of them for taking it seriously - I wrote that I had hired ninjas to slice off my antagonist's buttcheeks - and the same people who were freaking out over my original rant took that seriously too. They actually made me take it down. This is just like 9/11 and the paranoid Republican madness it enabled. If I can't hire ninjas to slice off somebody's buttcheeks, the terrorists have won.

The truth is, the terrorists haven't won. I wanted to get out of going to RubyConf anyway. RailsConf was boring, and if you were there you know I'm not kidding about that. The most interesting thing that happened at RailsConf was the e-mail conversation I had with the pro DJ about Archaeopteryx. That happened on the morning of the first day.

I've spoken at ten confs this year, fifteen if you count user groups. I can skip one. I'm disappointed about Scotland On Rails, where Chad isn't even one of the organizers, but the Scotland On Rails guys were a lot more fair and diplomatic than the RubyConf guys, and Scotland On Rails was going to be at the same time as WMC, the dance music conference. Now I'm going to WMC instead.

Anyway, not content with making enemies in the world of Ruby, I pissed off some people in the world of computer music too. Last month, I attacked the music programming language ChucK, after somebody suggested in private e-mail that it was like Archaeopteryx. From my rant:

ChucK is for smart but lazy people who coast on their intelligence and don't care if they never make a difference in the world. Fuck ChucK. I hate ChucK. I want to bury every one of those motherChucKers under the sea.

The difference between Archaeopteryx and ChucK is the difference between loving music vs. fantasizing about it while jerking off.

Obviously, I have a temper.

However, I've since added a very useful ChucK script by Tom Lieber to Archaeopteryx. I still want to differentiate the projects, but without the harshness. From the Archaeopteryx readme:

Archaeopteryx differs from projects like ChucK, Supercollider, PD, Max/MSP and OSC in a fundamental way. Archaeopteryx favors simplicity over power, and ubiquitous protocols over any other kind. Archaeopteryx does not want programmatic control over sound or audio. Archaeopteryx exists because music software should have a scriptable command-line interface. Archaeopteryx aspires to be an MPC-2000 with a shell prompt. You use Archaeopteryx as a Ruby front-end to music software such as Propellerhead Reason and Ableton Live.

To understand this abrupt transition from combative to fair, or at least more fair, check out the research on achieving excellence in any field.

when amateur singers take a singing lesson, they experience it as fun, a release of tension. But for professional singers, it's the opposite: They increase their concentration and focus on improving their performance during the lesson.

With ChucK you get lots of fun options, none of which are powerful enough to use for real; with Arx you get one thing that works perfectly to generate beats. Less features, less snazzy, less to play with - but more you can work with. That's the difference between Archaeopteryx and ChucK in a nutshell. And you see the same dynamic in a lot of different contexts.

For instance, I'm in an acting class that I waited maybe six months to a year to get into. It's a great class but it's a class for beginners. Some of the other people in the class went through that same wait; some of them just happened to wander in at the right time and have no intention of working as actors. For some of us, the class is an experience of mental focus; for others, it's a chance to let their hair down. This is what sucks about being a beginner.

My teacher's excellent, the curriculum is innovative and effective, and some of the graduates are famous. I'm staying in this class. At the same time, however, I miss a class I was taking before, and I'm intending to take that class again, as well as this class, because the atmosphere is just more real. I want real.

The idea that I'm not just doing this for fun surprises people. I'm sure there are people who think my goal of professional success in music with Archaeopteryx is as insane as my goal of success in acting or my idea that I can do both these things and achieve success as a programmer. These people are just cowards. You have to remember, fear is the mind-killer, which means every coward is also an idiot. Plenty of people have done unusual things of this nature. The research on success in any field says it's a matter of deliberate daily practice.

Deliberate daily practice means spending hours on some particular aspect of what you're interested in, working on getting that one particular aspect better. An example would be writing practice code only for the sake of improving your use of functional idioms, or practicing monologues only for the sake of improving the rhythm of your voice, or spinning practice DJ sets only for the sake of improving the way you use the EQ. These are all things I've done.

If you're going to work on music for its own sake, and you're going to work on programming for its own sake, you might as well combine them. Write a program which makes its own rhythms, and kill two birds with one stone. This changes the way you think about rhythms when you return to making them in a more conventional way. Recently I've been playing with music apps on the iPhone, and I'm seeing an interesting change.

With Archaeopteryx, you build probability matrices, and the probabilities you assign to particular elements of your drum rhythm operate as statements of relative importance. For example, if you say the kick drum lands on the first beat 100% of the time, but the hi-hat only sounds on the 7th beat 20% of the time, you're saying the kick on the 1 is essential, while the hi-hat on the 7 is optional. The drum beats I've been building on the iPhone have gravitated to this idea of differentiating between the essential and the optional.

I used to build my rhythms almost entirely in layers. A hi-hat that played all 16th notes would play all 16th notes or not sound at all. I would be much more likely to introduce a new hi-hat with its own new rhythm than to vary the existing hi-hat's rhythm. The past few days, it's been about varying essential elements only during major changes, and varying optional elements all over the place, whenever I feel like it. Everything's more fluid. I've had the hi-hats playing all kinds of different subpatterns. Because the kick's essential, I varied the kick less, and when I varied it, it signified major transitions. This is partly because I'm thinking more in terms of relative statements of importance now, and it's also because the code I wrote for Archaeopteryx generates and varies subpatterns, so I've decided to follow my AI's good example.

Archaeopteryx might not make me a superstar DJ in 2009, but that's a shallow understanding of its purpose. It's already made me a better musician and programmer than I was before. It's not about some ridiculous musical equivalent of the fast-buck IPO bullshit that passes for long-term planning in our industry. When I'm 50, and I'm making money making music, and people are assuming I only do programming for fun, I'm going to look back on Archaeopteryx as one of the reasons why. If you do a thousand things that each make you a little bit better, you end up pretty damn good.