From CCRMA Wiki
Revision as of 11:14, 17 February 2009 by Ge (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Homework #2: "Generative Clouds"


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: 2009.2.23 11:59:59pm (or thereabout), Monday.

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)
  • use some of the synthesis elements we talked about (e.g., SinOsc, TriOsc, SqrOsc, Noise, Impulse, Step, ResonZ, OnePole, OneZero, BiQuad, LPF, HPF, ADSR, etc.)
  • (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 a particular instrument, 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!
  • figure out what parameters you want to expose/export from your system, these parameters might serve as "seeds" or starting points, or guidelines/rules for your music generator to follow
  • 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...

  • for mapping your keyboard/mouse to your generative clouds S.M.E.L.T.
  • Graham Coleman's most excellent tutorial on ChucK for Music
  • ChucK unit generator reference (check out the section on STK instruments, as potential starting points for ready-to-go instruments)
  • ChucK examples
  • In particular, look at the examples under "STK". These might serve as ideas or starting points.
    • mand-o-matic2 : caffeinated virtual mandolin player (note: by itself, this example probably isn't very interesting (for example, it doesn't come from or go anywhere). However, by figuring out the parameters, and varying those over time somehow, and/or by arranging it with other "band members", one can use this as a building block.)
    • shake-o-matic : virtual shaker player, again a potential building block.
    • karp-o-matic : virtual stif karp player.
    • wurley : virtual wurlitzer player.


As usual, turn in all files by putting them in your Library/Web/220b/ directory.

  • 1) hw2.html should go into the 220b directory
  • 2) create a hw2/ directory, and put all the stuff below in there:
  • 3) all related source/sound files (.wav/.ck)
  • 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

Have fun with it!