Spring 2013»HONS 381 Homework 3

HONS 381 Homework 3

Assigned Date: Friday, Feb. 22, 2013
Due Date: Monday, May 11, 2013
Due Time: 10:50am

NOTE: No late days can be used for this assignment.

Last modified on March 01, 2013, at 06:40 PM (see updates)

This is a solo assignment (i.e., you must work on your own). You may discuss the assignment only with the instructors.


This assignment aims to develop and apply skills in:

  • conceptualizing music design
  • thinking compositionally in terms of musical time/space.
  • exploring music creation without pitched sounds
  • realizing one’s composition in performance


Compose a 2 minute piece for 4 laptop performers using Python music percussive MIDI sounds only (MIDI channel 9).


Drawing inspiration from performing Terry Riley’s “in C”, design and implement a similar construction made of short passages, exploring the process of arranging them in time and space to create a short piece that has a clear formal scheme.

Step 1: Form/Musical Narrative

Working on graph paper, explore the interaction of four independent musical voices (quadro-phony) generating musical structure and narrative. Some of the elements you can map out on the graph paper are:

  • Register: High vs. low sounds with a clear trajectory. For example, the piece may start with only low sounds, progress through the layering of progressively higher sounds, and end with only high sounds.
  • Density of events: A piece may start with very sparse sounds, and progressively get more dense by having sounds occur closer to each other, or on top of each other.
  • Dynamics: A piece can start soft, increasingly become loud, and then gradually fade out to nothing.
  • Ensemble Interaction: Structure can be built on entrances, and layering of the different performers triggering patterns on cue.

Combine trajectories of at least two of the above elements to create an interesting narrative.

Try to create interesting shifts/contours/peaks and valleys of activity.

Be sensitive to how a listener may follow these shapes, aiming to balance continuity, surprise, gradual intensification, or even moments of silence. The following graph displays levels of audience interest over time. Developing such a graph ahead of time helps design how to "hook" and keep the audience engaged throughout the duration of a performance or activity [1].

You should develop a similar graph for your composition. After your planning stage has crystallized into something you feel will generate interesting shapes, save your graph, and walk away from it.

Step 2: Sound Palette Creation

Go to Appendix A, and look at the available Drum sounds. Audition them one by one, categorizing into:

  • high-mid-low
  • short-medium-long
  • metallic-wooden-skin(membrane)

Judge them according to what you think would serve your Form/Narrative plan. Start building your sound palette. Ask yourself:

  • where would this sound fit in?
  • Does it connect with any of the other sounds I have selected?

Aim for a collection of sounds that have maximum variance/deviation in one of the above categories (e.g., extreme high to extreme low), but are similar in another (e.g., all metallic). You can always modify your sound palette collection, but it helps to have a starting point to work with.

Step 3: Pattern Building

Now you are ready to create the actual musical material to “fill in” your formal structure, using the sounds you have selected.

This is the stage in which you will “improvise” or “experiment” with connecting things, always keeping in mind your formal plan in the graph paper.

Depending on your design, you may want to put together short or longer musical passages. Try different combinations of the sounds you have selected. Keep in mind what may happening simultaneously with the passage you are currently working on. For example, if you have a long pattern of low membrane drum sounds (such as Bass Drums), you may layer short high-pitched metallic passages over this passage, triggered by another performer.

Build a list of your patterns as you make them, either in standard musical notation, an improvised notation, or in Python. Possibilities:

  • You do not have to use all of them.
  • You can use some of them more than once.
  • You could select very few patterns and build texture by
    • repeating them several times,
    • played with different sounds, and
    • by different performers.

Consider use of Mod transformation functions (see Ch. 4 of textbook). One could start with relatively minimal musical material and, through transformations (similar to those found in, say, J.S. Bach canons), generate new, complementary material (i.e., patterns that interweave well with each other when layered).

Explore, improvise, imagine, create. Your creativity is the limit.

Step 4: Putting it together

So far you have been engaged in a selection/elimination process to reduce the endless possibilities into a tangible pool of interesting material. Now you need to finalize your piece by assembling these elements together.

Combine the best outcomes of your experimentation into a meaningful musical structure, as follows:

  1. Look at all your material (graph, sounds, passages). Visualize possible combinations, and imagine how the piece would unfold over time. You are not expected to have a crystal-clear aural impression of your piece - just use your “inner ear” to try and “hear” your piece, and allow yourself to be surprised, disappointed, aesthetically pleased. All this is part of the composing game.
  2. Once you think you can “see” your piece, think for a moment how you will present it to the 4 performers. Following the “In C” model, your best bet is to create a list of the passages each performer will be playing through, and put them in order, give them numbers, and give each performer their Part (already put in Jython, that is), along with instructions on when to do what.

    You also need a “master document”, a score for the conductor/bandleader, who could be in charge of cueing each passage for each player. You can realize the master document in praph paper, using seconds for the timeline, or beats/measures. It’s up to you. However, factor in the fact that the four performers will not be synchronized accurately, due to lag in starting playback, as well as human margin of response. This may lead you to select longer, slower passages to build your piece, where accurate synchronization isn’t crucial.
  3. The time to commit your decisions to posterity is now here. Go ahead and create your master document, taking charge of what happens when. Try to keep all four performers engaged (giving them something to do or prepare for at all times). Be as detailed as possible in notating your graph score, adding additional sheets with explanations to symbols used, and the passages used.
  4. Create each individual part in Jython, saving four separate files, one for each performer. You don’t actually get to hear the whole piece until we rehearse and perform it in class. Be ready to share each part with the assigned performers as we assign roles to everyone for the presentation.
  5. After all is finalized and delivered, prepare how you will introduce, explain and teach your piece to the class.


Your program should be fully documented. Follow the Golden Rule of Style: "A program should be as easy for a human being to read and understand as it is for a computer to execute." [2]

In general, you should comment any variable, obscure statement, block of code, function, and class you create.

Your comments should express why something is being done, as opposed to how – the how is shown by the code.

Top Documentation

Additionally, your code should always include opening comments as follows:

#   Author:     <Your Name(s)>
#   Email:      <Your email address(es)>
#   Class:      HONS 381
#   Assignment: Homework 2
#   Due Date:   <The assignment's due date>
#   Certification of Authenticity <remove one of the following>:     
#      I certify that this lab is entirely my own work.
#      I certify that this lab is my own work, but I received
#      some assistance from:  <Name(s)>
#   Purpose: <Provide a simple, yet complete description of the task being
#         performed by this program. It may be several sentences long.>


Submit the following on OAKS. Also bring copies of everything to class on the due date.

Each of the following should be submitted as a separate file. Use meaningful filenames. Include the name of your composition in each filename (e.g., "birdsFlyHigh_Sketch.pdf", "birdsFlyHigh_DrumSounds.pdf", "birdsFlyHigh.py", etc.).

  1. Your original graph sketch from Step 1 (in JPEG, PNG, or PDF format).
  2. A list of drum sounds you used, categorized as in Step 2 (in PDF format).
  3. A list of the individual passages you created from Step 3 (in PDF format).
  4. The finalized Score, with accompanying instructions (in PDF format). For example see Terry Riley's in C.
  5. A Python program with 4 individual parts for the performers, in code, with comments. Submit one .py file that plays the complete piece. Be ready to play this in class (on your own laptop - solo - to demonstrate your work to the rest of us). Based on this "preview" performance, we will decide which pieces we might perform together.
  6. A journal of your thoughts, ideas and process, from beginning to end (in PDF format).


Your grade will be based on:

  • following the above process step-by-step, documenting your progress, and submitting all deliverables;
  • successfully realizing parts in Python; and
  • producing a detailed, easy to follow master document.

Your grade will also depend on your imagination/creativity/originality in your design.


  1. J. Schell (2008), The Art of Game Design, Morgan Kaufmann, p. 248.
  2. Cooper, D. and Clancy, M. (1985) "Oh! Pascal", 2nd ed., W.W. Norton & Company, New York, p. 42.