Assigned Date: Friday, Apr. 7, 2017
Due Date: Friday, Apr. 14
Due Time: 30 mins before class
Last modified on April 10, 2017, at 09:49 AM (see updates)
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).
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 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).
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.
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 Homework 1.
You will submit your assignment by both handing in a printout in class, and online via 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 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.
Your grade will be based on how well you followed the above instructions, and the depth/quality of your work.
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).