15-322 (Undergrad) Final Project#
Computer music composition#
Important
The instructions here are tailored for 15-322 (undergraduate) students. 15-622 students complete this same composition as 15-622 Assignment 9, due one week earlier (Mon Nov 23), with a few other differences described on that page.
Due: Mon Nov 30 2026 by 11:59PM Eastern#
Warning
Absolutely no late submissions. Compositions are played in class the next day (Tue Dec 1st), so there are no late days or grace days for the final project.
Overview#
For your final project, you will create a computer music composition that combines techniques from throughout the course. Your piece will be played for the class in Week 14 (Tue Dec 1 and Thu Dec 3), and you and your classmates will vote for your favorites.
Your piece should be technically ambitious and an interesting listening experience. Computer music does not have to sound like something you’d hear on the radio. Prioritize exploring what you can do with computer music programming over making something conventionally “sound good.” For inspiration, check out the sound examples throughout the textbook, or this playlist of electronic and computer music curated by Prof. Jesse Stiles.
Your piece must use the creative tool you built in Assignment 9 to synthesize or modify sound. You may keep improving the tool after Assignment 9.
Python / Pyquist and DAWs#
A non-trivial portion of your composition must be produced with Python / Pyquist, and your code must use a pq.Score in some manner (e.g., rendering a melody, a drum pattern, or a sequence of sample or grain triggers with your own instrument functions).
You may use a DAW (Ableton, Logic, Reaper, FL Studio, GarageBand, etc.) to arrange, mix, edit, and master material produced by your code. However, composing the piece entirely in a DAW and generating only a sound effect in Python is not acceptable.
If your Assignment 9 creative tool is not written in Python / Pyquist (e.g., a VST plugin or a web app), integrate it with your Pyquist code in one or more of these ways:
Synthesize sound with your tool and bring that sound into Pyquist (e.g., load a recording of your tool with
pq.Audio.from_fileand process or arrange it in code).Process sound exported from Pyquist with your tool (e.g., render a stem in Pyquist and run it through your plugin).
Combine your tool’s output with Pyquist sound outputs in external mixing software.
Techniques#
Your piece must use at least 4 computer music techniques studied in this course, implemented in your Python / Pyquist code. Your Assignment 9 tool’s technique may count as one of the 4, even if your tool is not written in Python. Examples include:
Synthesis: additive synthesis, wavetables, AM / ring modulation, FM synthesis, subtractive synthesis, sample-based / granular synthesis, physical modeling (e.g., Karplus-Strong)
Processing: filters and EQ, convolution (e.g., convolution reverb), STFT / phase vocoder effects, delay-based effects, spatialization, LPC
Score-level / algorithmic: algorithmic composition, Markov chains, generative patterns and arpeggiators, data sonification, MIDI transformation (e.g., deriving arpeggios from a chord progression)
COMPOSITION.md must document where each technique is used, both in your code and in the piece.
Concert, voting, and anonymity#
All compositions will be played by the instructor in class during Week 14, with your visual projected on screen (see below). Attendance at both Week 14 class sessions is required and is part of your grade.
During the concert, students will vote for their favorite pieces. The composition with the most votes receives a small prize.
You may remain anonymous. The name printed in the concert program and shown on your visual can be your real name, an artist moniker, or “Anonymous” (see the ## Sharing section of COMPOSITION.md).
Content
Music is often provocative, and that’s part of what makes it powerful. However, your piece (including its title, program notes, and visual) will be played for an audience of your classmates. Please avoid material and themes that may be perceived as offensive or triggering to another student in the course. If you’re unsure about something, ask the instructor before submitting.
Reusing material#
You may build on material made by others, within these limits:
Audio samples: you may use samples of audio content made by others, up to 5 seconds in length each, provided you cite your sources and your use of each sample is obviously transformative. Respect each sample’s license (e.g., Freesound sounds usually require an attribution in
## Citations).Covers and score material: you may create a cover, or use score material from TheoryTab, MIDI files, or other sources, provided you cite your sources and your work is obviously differentiated from the original.
Cite everything in
COMPOSITION.md, including samples, MIDI files, melodies, chord progressions, and any images in your visual. Failure to properly cite audio or score sources may be considered an academic integrity violation.
Danger
Absolutely no AI audio, image, or video generation is allowed in this project. You may use AI to generate code that produces audio, images, or video, under the AI policy. You may not use tools that directly generate multimedia (e.g., Suno, Midjourney, Seedance), including for your visual.
Deliverables#
Audio: composition.wav#
Stereo (2-channel) WAV, 44.1kHz or 48kHz, 16-bit or 24-bit
60–120 seconds long
No clipping, and normalized (peak between -3 dBFS and 0 dBFS)
No long periods of silence (more than 5 seconds)
If cutting your piece to 120 seconds significantly hurts it, you may also submit a longer version as composition_extended.wav (up to 5 minutes). We will play the 120-second version in class, but consider the extended version when grading.
If any clipping, distortion, or silence is intentional, explain it in the ## Mixing section of COMPOSITION.md.
Visual#
Your visual is projected while your piece plays. Submit one of:
A slide:
visual.pdf,visual.png, orvisual.jpg. One page, landscape, 16:9. Include an image related to your music, the title of your piece, and optionally your name (or moniker). Your program notes are printed separately, so you don’t need much text.A video:
visual.mp4orvisual.mov. 16:9, ideally 1080p, with your composition audio embedded and in sync. You must still submitcomposition.wav. OBS is a good free tool for recording live visuals.A link: if your video makes your zip exceed 100MB, submit
visual.txtcontaining a shareable link (e.g., Google Drive, viewable by anyone at CMU) instead of the video file.
Write-up: COMPOSITION.md#
Click here to download the template for COMPOSITION.md. Keep all ## Section Headings unchanged and replace the instruction text under each one with your own writing. It covers:
Title and program notes (at most 200 words), printed in the concert program
Motivation: your inspirations and goals
Computer music techniques: each technique, where it is in your code, where it is heard in the piece (timestamps), and how it works, plus where your code uses
pq.ScoreCreative tool: how you used your Assignment 9 tool, where it is heard, and any changes since Assignment 9
Mixing: how you mixed and mastered the piece
Code execution instructions, AI workflow, other tools, and citations
Sharing: whether we may post your piece online after the concert, and the name to print in the program
Code: src/#
All code used to generate your composition, plus the assets it needs (samples, MIDI files, etc.). This must include your Python / Pyquist code and (a version of) your Assignment 9 tool, or a clear pointer to the tool in ## Code execution instructions if it is large. Leave out rendered stems, large frameworks, and build artifacts.
Submission#
Bundle the following into a single .zip file (under 100MB) and submit it via Gradescope.
composition.wav: your composition (60–120s).composition_extended.wav(optional): a longer version (up to 5 minutes).Visual: exactly one of
visual.pdf,visual.png,visual.jpg,visual.mp4,visual.mov, orvisual.txt.COMPOSITION.md: your write-up, from the template.src/: your code and assets.
You may resubmit as many times as you like before the deadline. We will play and grade your latest submission.
Rubric#
The Gradescope autograder checks the audio requirements and submission format (20 points). The remaining 80 points are graded manually after the deadline.
Criterion |
Points |
|---|---|
Audio requirements (autograded). 4 points each: stereo WAV at 44.1/48kHz and 16/24-bit; no clipping and normalized; no silence longer than 5 seconds; length 60–120 seconds. |
16 |
Submission format (autograded). Files named and structured as specified; |
4 |
Visual. A slide or video suitable for the concert, with the title of your piece and a relevant image. |
4 |
Motivation. |
4 |
Computer music techniques in Python / Pyquist. 5 points per technique that is implemented in your Python / Pyquist code (or in your Assignment 9 tool) and explained well (where in the code, where in the piece, how it works), up to 4 techniques. If a non-trivial portion of |
20 |
|
4 |
Creative tool. Your Assignment 9 tool is used to synthesize or modify sound that is clearly audible in the piece, and |
12 |
Mixing. The piece is intentionally mixed (amplitude control over time, balance, focus), free of unintended artifacts like clicks, and the mixing is described concisely. |
4 |
Program notes. Interesting to read, and say something about how the piece was made. |
4 |
Uniqueness of implementations. 6: very unique and/or complex. 3: some development, but close to class examples. 0: replicates class examples. |
6 |
Overall creativity. 6: has impact or evokes a response. 3: relates to your stated motivation, but not strongly. 0: uninspiring. |
6 |
Week 14 attendance. Attended both Week 14 classes (Tue Dec 1 and Thu Dec 3). 16 for both, 0 for one or none. |
16 |
Total |
100 |