Assigned Date: Monday, Apr. 2, 2018
Due Date: Wednesday, Apr. 11, 2018
Due Time: 30 mins before class
Last modified on April 03, 2018, at 05:18 PM (see updates)
Connect a MIDI controller to your code and use it to perform something interesting. This performance may be musical, visual, or other - your choice.
It just has to be interesting.
Using the provided MIDI library, connect and extract data from a MIDI controller.
If musical, your performance could consist of pre-constructed excerpts of music (the material and style are up to you). For instance, you could have a few phrases, sequences of chords, and/or drum patterns. You could reconstruct an existing piece that you like (i.e., a cover). Or you could construct a piece that's mainly percussive (combining different drums patterns). Or use AudioSample to create a MIDI sampler... Many other possibilities exist.
For example, see Stevie Wonder's pioneering 1979 album "The Secret Life of Plants" (and here).
Your goal is to build an interesting performance. Keep Interest Curves in mind. I.e., your performance should engage your audience at different points. Also, it should have a beginning, middle, and end, with some material that's repeated as needed.
The performance should last between 1 and 3 minutes.
NOTE: Also, create a paper description (timeline script, score) of your performance to assist you while performing. What happens first, what second? How to you finish? How you notate this is up to you. Anything that makes sense is fine. This way you can free your mind from remembering the order of things and focus on creating a memorable experience.
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." 
You should create comments to describe the different blocks of code and the function they play in your performance.
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 in class on the due date. This should consist of two things:
- your Python program, and
- the script of your performance (what happens and when, clearly indicated).
- Upload the same on OAKS. There should be several files in your submission (your program, the performance script, and any audio and/or image 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:
- Apply selection (if statements), relational operators, logical operators
- Apply functions
- Understand and use function callbacks
Also how to:
- Use the MIDI interface to extract data from MIDI devices
- Connect MIDI controllers to create interesting functionality
- Cooper, D. and Clancy, M. (1985) "Oh! Pascal", 2nd ed., W.W. Norton & Company, New York, p. 42.