From CCRMA Wiki
(Redirected from 220b-winter-2010/3)
Jump to: navigation, search

Homework #3: "Generative Drum Machine + Soundscape"


In this assignment, you are to create a live generative musical system in ChucK, defining its parameters and creating a piece of music using the system (via real-time high-level input).

Due date: 2011.2.22 11:59:59pm (or thereabout), Tuesday.

(NOTE: no late submissions will be accepted for this assignment)

Tools at your disposal

  • ChucK
  • code
  • keyboard, mouse


What to do:

  • create a software system in ChucK that generates music "automatically" or "semi-automatically" (i.e., with limited "high-level" human interaction)
    • a core component of this should be a generative drum machine
    • also think about a overall generative soundscape the envelopes the drum machine
  • use some of the synthesis elements we talked about (e.g., SinOsc, TriOsc, SqrOsc, Noise, Impulse, Step, ResonZ, OnePole, OneZero, BiQuad, LPF, HPF, ADSR, STK instruments, Comb filters etc.)
  • use some of the technique we talked about (e.g., shreds, events, chance, lookup tables, Markov chains, etc.)
  • expose some high level parameters (e.g., density, excitement, mood, texture) and control them using input
    • for example: mouse, keyboard,
    • (optional): use audio analysis as a control for the synthesis (e.g., using ChucK Unit Analyzers)
  • here are some example ideas (you can use, combine, extend these, or go with something else altogether)
    • modeling playing style of something percussive, or a group of instruments ("real" and/or imagined)
    • model a particular compositional style (e.g., "classic" Musique Concrete, a certain approach to minimalism)
    • leverage or musically sonify a mathematical model or a computer algorithm
    • a system that somehow evolves over time, giving a set of starting parameters
    • invent something new/crazy!
  • it might be helpful to design/partition your system into modules that you can exert independent control over, or that take care of different types of tasks/sounds in the system
  • create/perform a composition using your system, paying attention to overall form, density, and texture throughout (think "sonic clouds"...)


Not all of these are directly relevant, but may serve as basic building blocks...


As usual, turn in all files by putting them in your Library/Web/220b/hw3/ directory and email the link to Ge and Nick.

  • 1) create a hw3/ directory, and put all the stuff below in there:
  • 2) index.html should go into the hw3/ directory
  • 3) all related source/sound files (.wav/.ck) NOTE: You must turn in a .wav file showcasing a performance on your system.
  • 4) a short README text (readme.txt) file that:
    • specifies instructions on running your programs
    • describes your process/adventure, and perhaps the ideas (technical/aesthetic) behind the composition
    • gives credit, if needed, for the sounds you are using
    • describe any difficulties you encountered in the process
  • 5) email Ge And Nick

Have fun with it!