Spring 2017»CITA 180 Homework 4

CITA 180 Homework 4

Assigned Date: Monday, Mar. 20, 2017
Due Date: Monday, Mar. 27
Due Time: 30 mins before class

Last modified on March 20, 2017, at 09:29 AM (see updates)


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 smaller parts (5-9), which are played together at different times to achieve the end result.

It should start, build up, and then finish in some meaningful way. Design it on a piece of paper, before you start coding it.

Your performance should consist of at least five and at most nine different musical elements which go well together. It may consist of existing audio loops or files (you can download them off the Internet, e.g., see Freesound.org), or you may record your own (e.g., via Audacity).

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

The performance should have a GUI interface (control surface), which allows - as needed - starting, pausing, resuming, stopping, and adjusting the volume / frequency of your audio material. You only need to have as many controls as your performance needs.

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

Your goal is to dazzle us.

NOTE: The audio material should be in .WAV format. It should be no longer than 15-20 seconds each. You should have 5-9 audio files.


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:

  1. Hand in a printout in class on the due date. This should consist of:
    • your Python program, and
    • an image of your GUI control surface.
  2. Upload the same on OAKS. There should be several files in your submission (your program, the image, and the audio material used).
  3. 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.

Learning Objectives

This assignment has the following objectives:

  • Manipulating audio samples in Python.
  • Creating an interesting performance out of smaller elements.
  • Designing a GUI with enough controls to carry out an interesting task.
  • 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).