Spring2017.CITA180Homework5 History

Show minor edits - Show changes to output

Added lines 7-8:
On this assignment you may work with one partner, if you wish (only one). It is OK to work on it solo (by yourself). Regular collaboration policy applies (i.e., no collaboration outside your team).
Changed lines 13-15 from:
'''Your performance should last anywhere between 1:30 minute and 3 minutes''', and should consist of at least 3 sounds and regular notes played on the MIDI keyboard. The sounds and notes should be played together at different times to achieve the end result.

'''Each audio file should be no more than 15-20 seconds
.'''
to:
'''Your performance should last anywhere between 1:30 minute and 3 minutes''', and should consist of 3 (or more) sounds. The sounds and notes should be played together at different times to achieve the end result.

Moreover, one (or more) sounds should be played by pressing MIDI keyboard keys
. The pitch/frequency of the sound(s) should change according to which key was pressed.

'''Each audio file should be small (and definitely no more than 15-20 seconds)
.'''
Added lines 1-56:
'''Assigned Date''': Friday, Apr. 7, 2017\\
'''Due Date''': Friday, Apr. 14\\
'''Due Time''': 30 mins before class

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

!!Assignment

Write a Jython program that creates an interesting musical performance (your choice).

'''Your performance should last anywhere between 1:30 minute and 3 minutes''', and should consist of at least 3 sounds and regular notes played on the MIDI keyboard. The sounds and notes should be played together at different times to achieve the end result.

'''Each audio file should be no more than 15-20 seconds.'''

The performance should use only the MIDI keyboard as a controller (i.e., no GUI interface, etc.)

Design before you implement. (Remember - "20 hours of coding can save you 2 hours of design"!!!)

Your goal is to dazzle us.

!!Documentation

Your header documentation should mention the names and URLs of the audio material you downloaded off the Internet (I should be able to find it). Or if you recorded yourself, your should describe what each audio recording is.

Again, follow documentation instructions from [[http://www.cs.cofc.edu/~manaris/?n=Spring2017.CITA180Homework1?action=print | Homework 1]].

!!Submissions

You will submit your assignment by both '''handing in a printout in class''', and '''online''' via [[https://lms.cofc.edu/ | OAKS]].

Be prepared to demonstrate your program in class.

Do all of the following:

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

# Upload the same on [[https://lms.cofc.edu/ | OAKS]]. '''There should be several files''' in your submission (your program, the image, and the audio material used).

# Be ready to demo your program 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:

* Use a MIDI device to control a Python program.
* Manipulating audio samples in Python.
* Creating an interesting performance out of smaller elements.
* Play MIDI notes via an external device
* Implementing callback functions.

* Use various data types and API calls to achieve a desired programming task (algorithmic design).
* Use predefined classes in program development (object-based programming).