






Assignments
For due dates, see Syllabus.
Assignment #1: Play a Composition.
Using Squeak, play some composition (yours or someone else's) of:
- Over 30 seconds and over 10 notes,
- With at least two occasions of more than one note playing at once,
- With at least two different timbres being used.
Grading:
- 50 points for an executing piece of code (30 points), that plays for over 30 seconds (10 points) and contains over 10 notes (10 points)
- 15 points for getting two notes to play at once
- 15 points for playing more than one timbre
- 20 points "It sounds good" – we'll be flexible on this, but just playing random chaos won't be an "A"
Turnin: Create a Squeak project with your code, put it on the Web somewhere, and mail the URL to Mark (guzdial@cc.gatech.edu) before classtime on the due date.
Assignment #2: Improve the Base Oscillator.
Improve the Oscillator provided in class in Squeak. Implement:
- Truncation: Choose the next sample by simply truncating the decimal part.
- Interpolation: Interpolate between two integer indices into the wavetable by using the decimal portion to choose an interpolation between the two wavetable values.
In addition, create a simple envelope generator which can be used as the amplitude input to the oscillator. (Make sure it works for truncation, interpolation, androunding, i.e., you'll have to reimplement rounding). Your envelope generator should input the number of milliseconds to maximum amplitude (attack), a maximum amplitude, a duration, and the number of milliseconds to zero amplitude (decay).
Turn in (a) your code; (b) your workspace code for executing each of the above with your code; and (c) execution times for each of rounding, truncation, and interpolation, both with and without an envelope. Also, compute the execution times of generating the wavetable at sizes of 1024, 2048, and 4096. Put all of these in a Project on the Web somewhere, and mail Mark the URL before class time on the day that the project is due.
Grading:
- 20 points for implementing truncation (10) and interpolation (10). (This better be darn easy since one of the two of these is done for you!)
- 60 points for the simple envelope generator, with attack (10)), sustain at maximum amplitude (10), and delay within the duration (10). 10 points for working with each of rounding, interpolation, and truncation oscillators.
- 20 points for providing execution times in milliseconds (do at least three runs and report the average) for each of truncation, rounding, and interpolation both without (5 points) and with envelope generator (10 points). 5 points for providing execution times of wavetable generation.
Assignment #3: Synthesize the Sound of a Real Instrument.
Using the AudioExplorer (see Active Essays), come up with your best guess for a given instrument's spectral envelope. Generate a waveform for a given note by that instrument with approximately the same spectral envelope. Try to do it as flexibly as possible. Real-time performance is not required. USE WHATEVER CODE YOU WANT, BUT YOU MUST ACTUALLY IMPLEMENT AN INSTRUMENT (e.g., NOTE THIS IS A CHANGE: You CAN use code existing in Squeak).
Suggestion: Think about making it work in Csound first, then put it into Squeak, if you find the oscillators, envelopes, and filters of Csound easier to think with.
Turn in your code (including Workspace code for executing your code) and a 1-3 page paper on your instrument, what you did, and why you did it (e.g., think about how real instruments' spectral envelopes look for different frequencies, and how your code could be reused to generate other frequencies for the same timbre). Turn in as a Project on a websiting mailing Mark the URL. (Put the paper in as GeeMail, as a Workspace, whatever you want.)
Grading:
- 50 points for an executing piece of code (30), that actually makes a note (10), that sounds like the desired instrument (10).
- 25 points for a reasonable analysis of some instrument.
- 25 points for a reasonable explanation of how you made that timbre.
- EXTRA 10 POINTS: For implementing a dynamically changing instrument (e.g., envelopes on partials?)
STUDENT PROJECT #1.
Implement IN SQUEAK a single example of cSound code from any chapter in the cSound book that uses at least three different unit generators (oscillators, filters, buzz, FOF, delay lines – any opcode other than assignment counts). You will also PRESENT your work with a live demonstration of your instrument playing some composition. (If sound generation is more than 30 seconds, you may provide an AIFF file instead.) Finally, you will provide a 2-5 page paper.
The paper and presentation should explain:
- How the original cSound code worked
- What was interesting about the code, e.g., so why was it in the chapter in the first place?
- How you did the translation into Squeak – specifically, how did you do it to be a general instrument? (Hint: If all your code does is make a single noise and can't be reused for anything else, that's less than wonderful)
You may use any code in Squeak or provided in class.
Turn-in (a) your code; (b) the workspace code to execute to test your code; (c) your presentation (as powerpoint, Squeak project, or PDF), and (d) your paper.
Grading:
- 30 points: Working Squeak code that seems to do what the cSound code does
- 20 points: Good understanding of the original cSound chapter, evidenced in presentation (10) and paper (10)
- 25 points: Quality of presentation: Clear, well-paced, good demonstration with explanation
- 25 points: Quality of paper: Good grammar, well organized, good examples (of code – everything can go in an appendix, useful, explanatory snippets can appear in the body), clear explanations.
Assignment #4: Generate a Harmonic Progression.
Use music generation software of your choice to create two random harmonic progressions with the following characteristics:
- Each progression must be 8-16 measures long (4/4 time)
- The progressions must be in a random key (one each of major and natural minor)
Use Harmonic Progression chart from class for chord changes.
Turn in your code, plus at least two sample random progressions (the progressions must be ones that were created by your program, using a known seed for the random number generator!). Put the submission on a web-site and E-mail the URL to Jim. Make sure you include instructions on how to run your program (what software you used, etc). A MIDI file is the preferred output method for the progressions.
Grading:
- 50 points for an executing piece of code (30), that generates a progression (10), that follows the supplied harmonic progression chart (10).
- 30 points if the program does voice leading.
- 20 points if all three diatonic triads (major, minor, diminished) are used at least once between the two sample progressions.
Questions on Assignment 4
THE BIG FINAL STUDENT PROJECT!
You are to compose a piece of at least 90 seconds in duration with various specific requirements:
- You synthesize the instruments yourselves: Sampled, FM, Additive, whatever, in Squeak or CSound.
- You must have at least four instruments in it.
- You should do some voice leading and use all three diatonic triads (major, minor, diminished).
(Jim may add more here later.)
You are to post an MP3, code, and PowerPoint presentation here before presentation day during Finals Week. The MP3 should be your composition played. The Powerpoint (of 3-4 minutes duration) should explain how you did what you did.
You present these at our final on Friday December 14, 11:30-2:20.
Questions Page for Final Project
Links to this Page