Spring 2018»CITA 180 Homework 4

CITA 180 Homework 4

Assigned Date: Friday, Feb. 16, 2018
Due Date: Friday, Feb. 23
Due Time: 30 mins before class

Last modified on February 21, 2018, at 03:55 AM (see updates)

Assignment

In homework 3, you were asked to write a Jython program that generates an interesting piece of music using pre-recorded sound material.

Here, we revisit this with the following added implications:

  • create a high-level structure (e.g., ABA, AABA, AABACA, etc.),
  • think carefully about your interest curve (i.e., how you keep your audience engaged throughout the piece),
  • also remember that - sometimes - subtracting something may be as powerful as adding something new.

To Do

Use about 3 to 7 different AudioSamples (more or less is OK - with approval).

  • Each audio sample should be relatively small (e.g., less than 12 secs).
  • You may use loops (see example below) to create longer ambient or drone backgrounds.
  • For polyphony, it is OK to load multiple copies of the same audio file - these do NOT count as separate files.

Use at least 3 different Mod functions to construct your Score.

The piece should last about about 1 to 3 minutes approximately.

Create a sketch of your score on paper (use MS Word, Google docs, or by hand). It should explain [1]:

  • the concept of the piece (i.e., what is this piece about, what you are trying to communicate).
  • the high-level structure of the piece (e.g., ABA, AABA, ABCA, AABACA, etc.),
  • the sonic entities used and their symbolism
    • mention something about each sound - what it is, how it was captured, why you included it, etc.
    • if you use other people's material, provide references (i.e., names and URLs)
  • the macrocomposition or how sonic entities line up (and why)
  • (for bonus points), the microcomposition or low-level interactions of the sonic elements (i.e., creating or assembling complex timbres from the sonic material).

Notes:

  • Make sure your computer's CPU and memory can handle all your audio files, before working on your score.
  • NEW: Try the new JEM editor. It includes an experimental Play.sound() function, which allows you to combine audio and MIDI instruments within the same score.
    • For example, try Play.sound( score, [a1, PIANO] ).

Submissions

Do all four:

  1. Hand in a sketch of your score on paper.
  2. Hand in a printout of your Python program in class on the due date. Attach the sketch of your score.
  3. Upload your program file and audio files on OAKS.
  4. Be ready to perform it in class.

Your program should have a meaningful name, e.g., birdsAndSeaguls.py or desertMoon.py, or nightAlone.py, etc.

Program Documentation

Follow the documentation instructions from Homework 1.

In addition, your header documentation copy and paste the same information as in your score (see above):

  • the concept of the piece (i.e., what is this piece about, what is it trying to communicate / achieve, etc.).
  • the high-level structure of the piece (e.g., ABA, AABA, ABCA, AABACA, etc.),
  • the sonic entities used and their symbolism
    • mention something about each recording - what it is, how it was recorded, why you included it, etc.
    • if you use other people's material, provide references (i.e., names and URLs)
  • the macrocomposition or how sonic entities line up (and why)
  • (for bonus points), the microcomposition or low-level interactions of the sonic elements (i.e., creating or assembling complex timbres from the sonic material).

Grading

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

Example

The following code demonstrates how to create a loop. This may be used for ambient or drone backdrops of sound to build on.

from music import *

loopTimes = 4

# load audio instruments
a1 = AudioSample("moondog.Bird_sLament.wav")

# create musical data structure
score = Score()

part1 = Part(0, 0)

phrase1 = Phrase()

# create musical data
pitches   = [A4] * loopTimes
durations = [4.12152] * loopTimes   # duration is in seconds (assuming 60bpm)
volumes   = [120] * loopTimes
pannings  = [0.5] * loopTimes
lengths   =  durations              # force playing length to be same as noted duration!

phrase1.addNoteList(pitches, durations, volumes, pannings, lengths)

part1.addPhrase(phrase1)

score.addPart(part1)

# play it!
Play.audio( score, [a1] )
 

Reference

[1] Xenakis, I. (1971). Formalized Music: Thought and Mathematics in Composition. Indiana University Press, p. 22.