CITA/CSCI 180 – Spring 2019 – Homework 6

Assigned Date: Wednesday, Apr. 3, 2019
Due Date: Wednesday, Apr. 10
Due Time: 30 mins before class



Using buttons, sliders, and other GUI elements, create a Music Production Controller (MPC).

  • MPCs are electronic musical instruments (originally produced by Akai) that feature a grid of buttons that allow a user to playback (trigger) various samples.
  • Use an external audio editor (such as Audacity) to capture and manipulate arbitrary audio files and live inputs.
  • Then, plan a music performance using the produced audio samples together with your custom MPC.


Write a Jython program that creates an interesting musical performance (your choice). 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 your user interface well. You will be graded on the aesthetics of your GUI, as well as the aesthetics of the music you produce.

Your performance should last about 2 minutes (but a little longer is OK). It should consist of smaller audio samples (5-9), which are played together at different times to achieve the end result.

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


To get possible ideas for your submission, you may explore the following:

Program Documentation

Follow the documentation instructions from Homework 2.

Remember, 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.”  Your code should have general comments at the top, which explain what the program does. You should comment all variables, obscure statements, and blocks of code.

Follow the textbook examples on how to write comments.

Your code should be organized well, so it is easy to read and understand.


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 two things:
    • your Python program, and
    • an image of your GUI control surface.
  2. Upload the same on OAKSThere 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).
Skip to toolbar