Fall 2012»CSCI 180 Homework 2

CSCI 180 Homework 2

Assigned: Friday, Sep. 7, 2012
Due Date: Monday, Sep. 17
Due Time: 10:55am

Last modified on September 10, 2012, at 04:15 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.

Purpose

This assignment focuses on:

  • creating interesting music with jMusic
  • MIDI melodies
  • MIDI percussion (optional)

Assignment

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

For a quick overview of music notation, see Ch. 2 of our textbook.

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.

Documentation

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 names"
#   Email:      "Your email addresses"
#   Class:      CSCI 180
#   Assignment: HMWK2
#   Due Date:  The assignment's due date
#
#   Certification of Authenticity:     
#
#     < ! Delete one of the two statements below - also delete this comment ! >
#
#      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:  "add people's names, Web links, or other references"
#
#   Purpose: < ! Replace this comment with a simple, yet complete description of
#         what your program does - e.g., "This program plays Chopen's Nocturne,
#         Op 72. No. 1."  The description may be several sentences long. ! >
#
 

Submissions

You will submit your assignment via OAKS. 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.

Grading

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 earlier submissions:

Relevant Quote

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

Reference

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