CITA/CSCI/FYSE 180 – Fall 2024 – Homework 5

Assigned Date: Wednesday, Oct. 30, 2024
Due Date: Wednesday, Nov. 13
Due Time: 30 mins before class

Assignment

This is a synthesis of Homework #3 and Homework #4.

It is OK to use the exact same sound material from Homework #4.  It is also OK, to update it, as you see fit.

What

Using buttons, sliders, and other GUI elements, create a Music Production Controller (MPC).  You may use regular controls, however musical controls provide much more flexibility in terms of design – try to use these for a better design / musical outcome.

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

Details

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 / panning of your audio material.

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 1-3 minutes (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.

  • Each WAV file should be relatively short.
  • Store your WAV files in the same folder as your program and JEM.

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.

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., superDuperMusicController.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).

By Friday, Oct. 25, identify the soundscape story line / space / narrative you selected on the Ed Discussion board (30 mins before class – again).

Assignment

This assignment explores musique concrète (also see this), acousmatic music (also see this), and soundscapes.

In this context, write a Jython program that generates an interesting piece of music.

Remember – we are thinking of music as sound organized in time.

Initial Design

As you begin, think of the following:

  • Select a theme, concept, or story.
  • Then, think of a narrative or structure.  What are you trying to say?
    • Think of the difference between impressionism and expressionism, as discussed in class.
    • Are you after an impression, an emotion, an aesthetic?
    • Is there a narrative?
  • What are the primitive elements – sound objects?

After you decide on the above:

  • Think of Interest Curves.
    • Draw your interest curve, first…  This will save you immense time.
    • Then, on top of this drawing, describe / write in the piece elements.  How will you achieve these interest points?
      • Where does each sound begin?  Where does it end?
      • Drawing it on paper – first – this will expedite writing in Python.
      • Experimenting in Python is OK, but remember to return back to your paper drawing.
      • You will submit your drawing together with your program.  Do it first – it will save you time.

Technical Details

Your piece should follow these:

  • 1-min long  – a little more is ok (but no less).
  • Utilize 7 +/- 2 of individual, unique sound recordings – stored as WAV files, loaded in as AudioSamples.
    • You may record them, or download them from the Internet.
    • If you download them from the Internet, provide names and URLs in the header documentation – VERY IMPORTANT.
  • Keep your recordings short – less than a second, up to 7 seconds long.  No more (but ask me, if your idea requires an exception to this – I may allow it).
  • Store all your WAV files in the same folder as your program and JEM.
  • Use AudioSamples only – no MIDI.

Piece Performance

  • Use a Score (different phrases, parts, and notes) to structure and lay out your piece.
  • Consider creating sound loops, from smaller sound objects.  See example presented in class.
  • To make your piece more interesting, consider structuring your sounds as:
    • background (backdrop / carpet sound – ambient, longest sounds – probably for the duration of the piece – provides context),
    • horizon (middleground – longer sounds – define different sections in your story, narrative, if any), and
    • foreground (prominent sound events – immediate sound events that grab your attention, and move the story / idea forward).
  • Consider adding things, but also taking away things.
  • Sometimes, less is more.

Final Thoughts:

  • Design, design, design…
    • Think.  Ask questions on the Ed discussion board.
  • And of course, start early.

Remember

What is your piece about?  What is the story, emotion, or soundscape it tries to convey?

Draw the interest curve of your piece.  How are you going to achieve these changes in interest (add something, subtract something)?

What sounds will you use?

How will you overlay them?  Draw this out on paper first.

Design, design, design – think and make decisions on paper.  Code later.  Return back to paper often.  Do NOT think in code… think on paper.

Always remember the adage –

“20 hours of coding… can save you two hours of design!!!”

Program Documentation

Follow the documentation instructions from Homework 1. In particular, your header documentation should:

  • Mention the name of the piece and what it is trying to capture / achieve.
  • The names and URLs of any sounds you used from the Internet (or elsewhere).
  • Anything else that’s interesting to share.

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.

Submissions

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

1. Bring to class the following:

  1. Your initial design on paper.  Write your name on it.
  2. A printout of your Python program.
  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, and
  2. all your audio files, so I can run it on my computer, if I wish.

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.
Skip to toolbar