Homework 2 (due Wednesday February 21, 11:59pm)

Analog Synthesizer (25 points)

Implement a minimal "analog strip" in SuperCollider with a GUI (see GUI classes and examples from previous classes). In analog synthesizers that would normally consist of:

  • VCO (Voltage Controlled Oscillator)
    three switchable (see "Select.ar" for how to switch between them) waveforms:
    • square wave with pulse width modulation
    • sawtooth wave
    • triangular (hmmm, is there a triangular osc in sc?)
    modulation inputs:
    • ADSR envelope for pulse width of "square wave" oscillator
    • low frequency oscillator for vibrato (with two controls, amount and frequency)
  • VCF (Voltage Controller Filter)
    a Moog style low pass filter, 24dB / octave rolloff, with controls for cutoff frequency and resonance
    modulation inputs for cutoff frequency:
    • ADSR envelope
  • VCA (Voltage Controlled Amplifier)
    a gain stage with controlled gain.
    modulation inputs:
    • ADSR envelope

You are free to implement this as you like, either in one SynthDef or using several SynthDefs connected through audio busses.

For the GUI you should be able to switch between main oscillator inputs (using a "PopUpMenu"), have sliders for the ADSR envelope parameters, cutoff frequency and resonance for the filter, etc, etc.

Last, but not least, add a button to the gui to test the synth, so that it plays a C minor arpeggio.