Spring2016.CITA180Homework2 History

Show minor edits - Show changes to output

Added lines 1-58:
'''Assigned Date''': Tuesday, Jan. 26, 2016\\
'''Due Date''': Tuesday, Feb. 2, 2016\\
'''Due Time''': 2:00 PM

Last modified on {$LastModified} (see [[http://www.cs.cofc.edu/~manaris/index.php/Spring2016.CITA180Homework2?action=diff&source=n&minor=n | updates]])

!!Assignment

Write a Jython program that generates an interesting piece of music.

The piece should contain at least three different Parts with corresponding instruments.

It is OK to add percussion (drums), if you wish.

!!Documentation

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.

Follow the documentation instructions from [[http://www.cs.cofc.edu/~manaris/?n=Spring2016.CITA180Homework1?action=print | Homework 1]]. In particular, your header documentation should mention the name of the piece where the melody comes from, and, if you used a score available on-line, include the URL where the score can be found.
(:sourcend:)

!!Submissions

You will submit your assignment by both '''handing in a printout of your program in class''', and '''on-line''' (both the '''Python code''' and a '''MIDI file''' generated from your program)''' via [[https://lms.cofc.edu/ | OAKS]]. Be prepared to perform your music in class. Your submission consists of:

# Hand in a '''printout of your Python program''' in class on the due date.

# Upload your '''program file''' on [[https://lms.cofc.edu/ | OAKS]]. Give your program a meaningful name, e.g., '''furElise.py'''.

# Upload a '''MIDI file''' (generated from running your program) on [[https://lms.cofc.edu/ | OAKS]]. Give your program a meaningful name, e.g., '''furElise.mid'''.

# Be ready to perform it in class.

!!Grading

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

!!Learning Objectives

This assignment has the following objectives:

* Understand the fundamentals of music theory.
* Analyze music and create musical studies modeled on pre-existing works.
* Apply numeric and string data types to represent information.
* Use variables in program development.
* Use predefined classes in program development (object-based programming).

Also how to:

* Create interesting music with JythonMusic
* Program MIDI melodies, chords, etc.
* Program MIDI percussion (optional)

!!Reference

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