If Willy Wonka and the Chocolate Factory is your favorite movie of all time then you're in luck! I bet you remember when Mike TV throws a hissy fit because he really really wants Willy to send him through the air in a million tiny pieces because he loves loves loves television. As usual, Willy won't have any of it (if by won't have any of it, you mean puts up a token resistance and awaits the results with gleeful anticipation), and is starting to realize that the kids on this tour kind of suck, except for Charlie. He's alright. But Mike TV doesn't listen! He starts the machine up, despite his fair warning, and before you know it he's floating overhead in a million tiny pieces, as promised--the disastrous consequences of which, if you've seen the film, I'm sure you're well aware. Do you remember the sound that the TV particles make as they twinkle their way to the television set? O.K., so my instrument kind of sounds like that.
To start, I've taken a short audio clip - in this case the first 20 seconds or so of Herbie Hancock's "Chameleon" - and have analyzed it with an FFT. I'm only interested in the flux values, which I use to drive some oscillators. The controller manipulates certain features of the FFT and the oscillators in order to control a continuous stream of sound. The user can change the window size of the FFT, which controls the rate of the oscillators. He/She can manipulate the volume and pitch range of the oscillators as well. While the initial set of oscillators is always droning (unless the volume is at zero), the user can also add additional oscillators and remove them in one sweep. This last feature allows for rhythmic variation and makes for cool new sounds. All of the oscillators, including any extras the user might throw into the mix, are all governed by the same parameters and can be manipulated in synchrony.
There is also the right (thumb) joystick, which does some fun things, like control oscillators of its own. That's actually all it does. I guess it just does a fun thing. The farther from the center of the x axis it's pushed in either direction, the higher the pitch that results.
To recap, the controls are:
- Left Thumb Pad UP = SLower Flux-Driven Oscillators
- Left Thumb Pad DOWN = Faster Flux-Driven Oscillators
- Left Button 1 = Louder Flux-Driven Oscillators
- Left Button 2 = Softer Flux-Driven Oscillators
- Right Button 1 = Higher Pitched Flux-Driven Oscillators
- Right Button 2 = Lower Pitched Flux-Driven Oscillators
- A Button = Add another Flux-Driven Oscillators
- B Button = Removes all user-added Flux-Driven Oscillators
- Right Joystick = Makes some cools sounds with even MORE oscillators!
The sound can become rather dense, which is great in that it creates new textures, but it might become overwhelming were the instrument played by 25 or so PLOrkers in unison. My thoughts on using the instrument in an ensemble are that fewer oscillators should be controlled by each player, which would require minimal changes to the code.
If you want to see the code, then click here to download it
In order to run it, just make sure the controller is connected first, then add the shred. Everything is controlled by the controller from that point on (hence the name).
Watch Me Play it
My goal in the performance was to show off some of the more stimulating sounds that I came across while experimenting.
What to include on your project page
- A description of your project
- Your code
- If it's short, you can make a new page for it like this one
- Or, if there's a lot of it, put it in a .zip file so that people can upload it.
- We suggest: put it in your public_html directory on your network drive, then make a link, e.g. to http://www.princeton.edu/~yourname/yourfile.zip. Let us know if you need any help!
- Instructions on how to run your code
- A sound or video recording of your piece. Going lo-fi and using built-in webcam from another laptop (e.g. PLOrk machine in studio B) is fine. But for audio, if you're using chuck, best to use rec.ck for writing chuck's output directly to a file.
- See directions above on putting it on your network drive and linking to it