Assigned: Friday, Sep. 23, 2011
Due Date: Wednesday, Oct. 5
Due Time: 10:50am
Assigned: Thursday, Sep. 22, 2011
Due Date: Thursday, Oct. 6
Due Time: 9:20am
Last modified on October 31, 2011, at 02:09 PM (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:
- creating interesting music with jMusic
- MIDI melodies
- MIDI percussion
In class we worked through several programs that put all jMusic data structures into practice. Write a Jython program that generates an interesting piece of music.
Pitch & Rhythm Values
Here is a quick overview of music notation for note pitches and note durations (rhythm values).
MIDI Percussion (optional)
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. Here are pitch numbers for some percussive instruments:
- 36 (C2) -- Bass Drum
- 38 (D2) -- Snare Drum
- 42 (FS2) -- Hi Hat (closed)
- 46 (AS2) -- Hi Hat (open)
- 49 (DF3) -- Crash Cymbal
Here are more pitch numbers for percussive 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." 
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 names
# Email: Your email addresses
# Class: CSCI 180, Section 1 (update appropriately)
# Assignment: HMWK2
# 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. Be prepared to demo your music to the rest of the class. Your submission consists of:
- Your Python program. Give it a meaningful name.
- 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 Submissions
Here are a few interesting submissions:
"Any amount of work can be done in any amount of time... only the quality varies." ~Joao Meidanis
- Cooper, D. and Clancy, M. (1985) "Oh! Pascal", 2nd ed., W.W. Norton & Company, New York, p. 42.