My original idea was to enhance the chord progression maker I made from Music 220B. But upon realizing that Music 220C might be my last chance to make a composition, I've decided to put that idea off for now and instead think about creating an electronic music response to the first movement of Beethoven's Symphony No. 5, composed mostly in Chuck.
Fate Playing Knock-Knock Jokes at the Door
A electronic re-orchestration of the entire first movement of Beethoven's Symphony No. 5 using ChucK instruments, reverb, tempo manipulation, and other effects. Most, but not all, of this piece preserves the notation and tempo of the original work.
Notes About the Piece / Lessons Learned
- For the sake of decomposition, I created a playNotes() function that took in several arguments: the instrument to play, the pitches to play, the durations to play each pitch for, the number of repetitions for each pitch, the velocity at which to play the pitches, and the amount of silence in between notes (to simulate staccato, legato, etc.). But even with so many parameters, I often had to break this abstraction to get more expression--such as accelerando and crescendo.
- I learned a lot about the ranges of each Chuck instrument. Some instruments (like HevyMetl) sounded good in both high and low ranges, and so I used them often much in the same way that a classical composer might depend on string instruments. Other instruments (like ModalBar and BeeThree) had more limited ranges, and so these instruments were used more for special "effects" and refreshing timbral contrasts.
- Decomposition was extraordinary difficult to achieve. It seems like while computer science prides itself in decompositional elegance, music does not. I learned (the somewhat hard, exasperating way) that there is a good reason why classical musical scores write out every note and don't have a ton of passages that say "do the same thing as in x, but slightly differently."
- It didn't occur to me until the last few weeks of the quarter that my project involved both orchestration- and conductor-related work. Not only did I have to figure out who plays what and when, but also how the sounds are articulated and how to vary the tempo. No wonder my Chuck file is so huge: working out such decisions requires a lot of details! Had I realized this earlier, I might have chosen a less ambitious project.
- Dynamics, gains, and playing velocities were one of the trickiest things to get right. I probably would want more time to fine-tune how loud / urgent I want each phrase to sound.
- Sometimes being sparse and ghostly in Chuck is not only easier than being dense and richly textured, but also more interesting since the original work already features more instruments than I could keep track of in a single-file program.
- The idea for slowing down the tempo in the coda came from this: http://www.youtube.com/watch?v=8hacwSGOPcQ&t=2m45s
- My favorite instruments have been HevyMetl, BandedWG, and PercFlut--because they can be used in a variety of contexts.
- I seriously underestimated the amount of time needed for the logistical programming--that is, getting my Chuck program to sound certain pitches in a certain order at a certain time.
- Beethoven is very interesting. Enough said.
- Would I want to devote another quarter in the future to fine-tuning this piece? It's definitely a possibility. Right now, though, I think I'm pretty "full," and so I think I should take a break before returning to this project.