CITA/CSCI/FYSE 180 – Fall 2023 – Homework 6

Assigned Date: Friday, Nov. 15, 2024
Due Date: Friday, Nov. 22
Due Time: 30 mins before class

Assignment

This is a continuation of Homework #5.  It is OK to use the exact same sound material from Homework #5.  It is also OK, to expand it, as you see fit.  In addition, expand on the visual (via GUI elements – see Homework #3), aspects of your performance.

This assignment synthesizes several things we have seen already in class, namely graphics elements (the GUI library), music elements (the Music library), and now the MIDI library.

What

Write a Jython program that creates an interesting musical and/or artistic performance (your choice).

The performance should use the AKAI Mini MIDI controller (found in the lab) or other similar MIDI controller – as needed – to control the presentation of your audio and visual material (e.g., start, pause, resume, stop, and adjust the volume / frequency / panning of your audio – or show / hide / move visual material).

Design your performance well. You will be graded on the aesthetics of your visuals, as well as the aesthetics of the music you produce.

Your performance should last about 1 minute (but a little longer, if interesting, is OK). It should consist of smaller audio samples, which are played together at different times to achieve the end result.

The piece should utilize 7 +/- 2 (or so) different WAV files, loaded in as AudioSamples.

Your program may contain some MIDI material, if you wish, such as percussion (channel 9).  But the majority of the piece should be WAV files.  Also, see MidiSequence.

Also, see Animation, and Timers.

Design, design, design – think and draw on paper first.  Code later.  Return to paper often.  Do NOT think while coding… think on paper.  It saves time.  Remember – “20 hours of coding can save you 2 hours of design”.

Submissions

Your program should have a meaningful name, e.g., superDuperMusicAndArtPerformance.py.

1. Bring to class the following:

  1. A printout of your Python program.
  2. Your initial design on paper.  Write your name on it.
  3. Be ready to perform your program in class – part of your grade depends on this.

2. Also, submit on OAKS:

  1. Your Python (.py) file – e.g. superDuperMusicController.py
  2. all your audio files, so I can run it on my computer, if I wish.

Program Documentation

Follow the documentation instructions from Homework 1.

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.” [1] 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.

Grading

Your grade will be based on how well you followed the above instructions, and the depth/quality of your work.

Reference

  1. Cooper, D. and Clancy, M. (1985) “Oh! Pascal”, 2nd ed., W.W. Norton & Company, New York, p. 42.

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 interesting tasks.
  • 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