Fall2012.CSCI180Homework2 History

Show minor edits - Show changes to markup

Changed line 2 from:

Due Date: Friday, Sep. 14\\

to:

Due Date: Monday, Sep. 17\\

Changed lines 1-3 from:

Assigned: Wednesday, Aug. 27, 2012
Due Date: Wednesday, Sep. 5
Due Time: 11:55am

to:

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

Changed line 65 from:
  1. what your program does - e.g., "This program plays Chopen 's Nocturne,
to:
  1. what your program does - e.g., "This program plays Chopen's Nocturne,
Changed lines 64-65 from:
  1. Purpose: < ! Replace this comment with a simple, yet complete description of what
  2. your program does - e.g., "This program plays playing Chopen 's Nocturne,
to:
  1. Purpose: < ! Replace this comment with a simple, yet complete description of
  2. what your program does - e.g., "This program plays Chopen 's Nocturne,
Changed lines 64-66 from:
  1. Purpose: < ! Replace this comment with a simple, yet complete description of what your
  2. program does - e.g., "This program plays playing Chopen 's Nocturne Op 72. No. 1."
  3. The description may be several sentences long. ! >
to:
  1. Purpose: < ! Replace this comment with a simple, yet complete description of what
  2. your program does - e.g., "This program plays playing Chopen 's Nocturne,
  3. Op 72. No. 1." The description may be several sentences long. ! >
Added lines 1-101:

Assigned: Wednesday, Aug. 27, 2012
Due Date: Wednesday, Sep. 5
Due Time: 11: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:

(:source lang=Python tabwidth=3 -trim :)

  1. Author: "Your names"
  2. Email: "Your email addresses"
  3. Class: CSCI 180
  4. Assignment: HMWK2
  5. Due Date: The assignment's due date
  6. Certification of Authenticity:
  7. < ! Delete one of the two statements below - also delete this comment ! >
  8. I certify that this lab is entirely my own work.
  9. I certify that this lab is my own work, but I received
  10. some assistance from: "add people's names, Web links, or other references"
  11. Purpose: < ! Replace this comment with a simple, yet complete description of what your
  12. program does - e.g., "This program plays playing Chopen 's Nocturne Op 72. No. 1."
  13. The description may be several sentences long. ! >

(:sourcend:)

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:

  • Avril 14 (MIDI and Python), by Daniel Hanf
  • Nonsense (MIDI and Python), by Samuel Cooper (original)
  • Intro (MIDI and Python), by Hudson Jones
  • Take Five (MIDI and Python), by Johnathan Hegler and George Woolston
  • Changes (MIDI and Python), by John Thevos
  • Clocks (MIDI and Python), by Jordan Freeman
  • Kids (MIDI and Python), by Alicia Modoor

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.