Homework: Effects and Patterns

  • Out: Oct 25, 2022 Tuesday
  • Due: Nov 1, 2022 Tuesday

Objective and Overview

Homework 3 should be a quick study to work with some essentials in Chuck. Its components might help you imagine more final project possibilities.

Provide a microphone to use with your laptop or device, as this homework will involve real-time input to chuck. Built-in laptop and mobile mics are ok for testing but they're noisier and often have automatic gain control which will affect quality. Better is an external mic and an audio interface or recorder that will connect to your computer. The DIY air mics we've made are great for this. CCRMA has a few loaner audio interfaces and mics this year (which will need to be checked out at the 2nd floor admin area -- self-serve). See the teaching team if any questions.

Key Steps

  1. Be up-to-date with HW1 and HW2. Absorbing operational hints from them about debugging will help.
  2. As with the earlier homeworks, copy the starter code directory to two directories, one of which is your working directory and the other is the hw3 homework factory subdirectory where the final version of index.html will constitute your finished work. Usually, the working directory will be on your own computer while the homework factory copy will be on your CCRMA server directory.
  3. Find the time to test out each example in this repository, there a lot of them.
  4. Homework 3's assignment is to use adc input in combination with effects processing and pattern generation.
  5. Experiment with your voice instrument and record your work to .wav files.
  6. Make a mix of different versions using an audio editor and export to a single .wav file called hw3.wav
  7. Copy the mix file to your top-level homework factory directory. It should be there as 220a/hw3.wav (and not in a subdirectory).


The examples introduce several new concepts in turn:

  • ADC input (from microphone)
  • UGen's for effects processing (resonator, pitch shifter)
  • pattern generating functions (chaos, periodic, random)
  • FFT-based tracking (spectral centroid, RMS amplitude)

Some of the examples

  • inOut.ck
    • Send mic to speaker through chuck as if a straight wire.
  • inEfx.ck
    • Resonance filter affecting mic signal
    • Time-varying with slow, rectified sine pattern
  • plotChaotic.ck
    • Print changing values from the logistic map chaotic function.
    • x is chaos state variable.
    • r is chaos "heat".
  • plotPeriodic.ck
    • Print changing values from a low frequency periodic signal.
    • f is wave frequency.
    • a is wave amplitude.
  • plotRandom.ck
    • Print changing values from a random walk.
    • l is low bound.
    • h is high bound.
  • FFT.ck
    • Pass your input signal to spectral centroid and RMS amplitude trackers.
    • Print their changing values.
    • Apply changing values to a SinOsc simultaneously.
    • l is low bound.
    • h is high bound.
    • Trackers are borrowed from analysis/features/centroid.ck and analysis/features/rms.ck.

Also play around with the following examples of combinations:

  • combineEfxRandom.ck
  • combineClarinetChaotic.ck
    • Clarinet UGen
    • Logistic class from above for chaotic variation

The combineEfxRandom and combineClarinetChaotic above present combinations of respectively, adc + efx, physical model + patterns.


Homework 3's assignment is to use adc input in combination with effects processing and pattern generation. That's what's essential, but don't be constrained by what's in the examples. Feel free to explore other FFT-based tracking, efx or combine some synthesis from earlier work.

Capture the output of different real-time performances as .wav files by using the record feature.

Construct some contrasting musical materials that differ in a big way. Record them and listen back to hear if the differences are strong enough.

Please don't just recycle the above examples. Customize them, explore their possibilities.

Combine the recordings and layer them in an audio editor, for example, Audacity. The composition should have more than one thing going on at a time and we'll be listening for at least one big change in the music. You might consider sporking a sequence of big processes at different times and overlapping them.

Open the .wav files in an audio editor, The final mix should be a single .wav file in your main homework factory directory 220a. The file should be named hw3.wav and not in a subdirectory.