Project Three.

By controlling a program I wrote in SuperCollider with my MIDI controller, I made an "instrument" capable of making musical sounds while relying on short grains of sound as the basis for synthesis. Here's the actual program itself (you'll need SuperCollider to run it), and here's a sample of what it sounds like (the grain chords, followed by the Karplus-Strong strings. Everything probably could have used some filtering to sound a little nicer, but here's what the raw processes sound like.):

My concept of how to use/play it is along the lines of a button accordion, where the grain clouds provide the diatonic chords, and you have the plucked string sounds to play the melodies. Here's a fairly detailed description of the process by which I arrived at this final product:

For this final project, I wanted to create a visual, intuitive interface for the creation of "grains" (bits of audio shorter than what we would normally consider a note) using the audio synthesis programming language SuperCollider, but after researching a while I found that someone had beat me to the punch (check out my links if you are interested)! While learning the GUI capabilities, I also created this doohickey that I showed in class, that set several parameters to be controlled by the distance and angle between three draggable boxes. Mine's a little prettier than their implementation of it, but the idea for their program was largely the same.

Feeling my idea was no longer an option, I then expanded my general idea to include not only the creation of grain clouds, but implementations of grains in any musical sense. I came upon a type of synthesis called Karplus-Strong synthesis, that uses extremely short bursts of white noise to create fairly realistic plucked string sounds. I managed to create an implementation of it using my MIDI keyboard and SuperCollider, but the tuning was always off (I had, since my last project, figured out how to actually create mono and poly capabilities, without which even that would not have worked).

I went back into SuperCollider, and worked on just creating grain clouds. I decided to focus on "stratus" clouds (with set frequencies, as opposed to completely random ones), and so I experimented with frequency range and grain "width" until it resulted in something that I felt was fairly musical. In some of the academic writings on grains, I had seen them compared to particle systems used to create special effects in films, and I thought it would be a good way to expand on some of the ideas I had played with in the GUI project I described above.

After more research, I found out that SuperCollider could embed Quartz Composer compositions in a GUI window, and control the actions within it. I installed the program from my OS X Leopard installation disk, and began learning the software. I learned how to create the effects that I wanted, as well as simple ways to send information to the inputs in Quartz Composer. I decided to use both the grain clouds and the Karplus-Strong string sounds (I'd since figured out how to fix the tuning problem a few different ways) and control the Quartz composition and the music using my MIDI controller.

Unfortunately, I found out while programming that you can't control the Quartz composition from inside the functions that read in the MIDI signals. I tried using routines and a few other methods to check for signals and then send it to the composition, but I never found a way to make it work. I searched the internet endlessly, and was never able to find a solution, or even any information that could lead me to one. So my Quartz composition was left pretty much useless (if not still cool-looking).