256 Final Project

! C++ Code Processing Code ( Uses additional libraries controlP5 & oscP5 )

Control

Processing provides the graphical interface for the program. The sound object is a square, whose position in the X-Y space affects various aspects of the sound, most notably pitch, filtering and FM effects. The square's proportions can be expanded and contracted via the left / right arrow keys, which affects the rate the arpeggio is played, and the square can be moved around via the mouse.

The slash key " / " triggers the arpeggio, sending an OSC message to C++ to start the synthesis. Every played note triggers a bubble on a corner of the square. When the sound object is selected, a satellite or moon orbits the object as a way of visualising some of the control features, e.g LFO rate.

The GUI opens in a separate window and offers further control over the sound, particularly the butterworth filter. I found it difficult to get between the two windows with the mouse so added key control for the GUI -- q/w decrease/increase the filter cutoff, a/s the Q control, z/x the lfo rate for additional movement in the sound.

The space bar loops a background video, as well as the 'c' key.

Sound Design

The synthesis is in C++ using stk classes, as well as a butterworth filter courtesy of musicdsp.org. I ran into lots of trouble linking additional stk classes, so I had to reimplement my own sine FM synthesis, using a variety of sines for carrier/modulator/control rates. The routing is two chains in parallel, one straight through FM into an envelope into a reverb then with two simple delays. The additional parallel chain goes through the butterworth filter and adds a bit of squelch and definition.