Bill Manaris : Spring 2011 / CSCI 180 Homework 1

Assigned Date: Friday, Mar. 4, 2011
Due Date: Wednesday, Mar. 23, 2011
Due Time: 9:00am

Last modified on May 13, 2011, at 11:58 AM (see updates)

This is a pair-programming assignment (i.e., you may work with one partner). You may discuss the assignment only with your partner or the instructor.


This assignment focuses on:


In class we worked through several programs that put all jMusic data structures into practice (see Ch4 of the jMusic book). We looked at:

As mentioned earlier, MIDI has 16 channels (numbered 0 to 15). Of these, channel 9 is reserved for percussion. When adding notes to a part assigned to channel 9, the pitch of the notes determines which percussive instrument to use. Again, here are pitch numbers for some percussive instruments:

Here are more pitch numbers for percussive instruments.


Write a Jython program that generates an interesting piece of music. You have these options:

  1. Find an interesting minimalist piece (e.g., by Philip Glass), and transcribe it in jMusic.
  2. Find a song you like, and transcribe it in jMusic.
  3. Or, create your own song in jMusic. If so, the song needs to have both a melody and drums (all done in MIDI via jMusic).


Here is a quick overview of music notation for note pitches.

Rhythm Values

Here is a quick overview of music notation for note durations (rhythm values).

MIDI Instruments

jMusic provides the following MIDI Instruments.


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." [1]

In general, you should comment any variable, obscure statement, block of code, etc. you create.

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

#   Author:     <Your Name(s)>
#   Email:      <Your email address(es)>
#   Class:      CSCI 180, Section 1
#   Assignment: HMWK1
#   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.>


You will submit your assignment via OAKS (Dropbox folder). Be prepared to demo your music to the rest of the class. Your submission consists of:

  1. Your Python program. Give it a meaningful name.
  2. The MIDI file generated from your program.


Your grade will be based on how well you followed the above instructions, and the depth/quality of your work.

Some Interesting Earlier Submissions

Here are a few interesting submissions:

  1. Disturbed (MIDI and Python), by Andrew Armstrong
  2. Water Spring (MIDI and Python), by Evan Kosin
  3. Lux Aeterna (MIDI and Python), by Jacob Song
  4. Girls Just Wanna Have Fun (MIDI and Python), by Leslie Stovall and Megan Hoffspiegel

Relevant Quote

"Any amount of work can be done in any amount of time... only the quality varies." ~Joao Meidanis


  1. Cooper, D. and Clancy, M. (1985) "Oh! Pascal", 2nd ed., W.W. Norton & Company, New York, p. 42.
(Printable View of