Music 220a Fundamentals of Computer-Generated Sound

Chris Chafe <cc>, Rodrigo Segnini <rsegnini>, CCRMA / Music Dept./ Stanford University
Meets at The Knoll, Ballroom on Tuesdays and Thursdays 10:00-11:30
Text - Cook, P. Real Sound Synthesis for Interactive Applications
Reader - Pierce, J. The Science of Musical Sound (reproduced from out-of-print paperback)
Course Topics for the 220 sequence Weekly Syllabus Assignment submission track sheet

Cranking sounds with STK
Cook pp.xi-10, pp.239-48

Pierce pp.ix-37, pp.223-27
assignments 1.0 1.5 (demo)

Basic plumbing
Cook pp.21-36,
Pierce pp.38-60
assignments 2.0 2.5 (mic)

C++ programming environment, anjuta



Tube analysis (snd->gimp->html)
Cook cp.4,9;
Pierce cp.4

assignment 3.0 (via e-mail)


Pierce, cp.8
new coursework quiz online 10/16
assignment 4.0 (also check slides)


snd, sound editing and analysis



Additive Synthesis
Cook, cp.10

assignment 5.0 (also check slides)




midterm nov 12

graphics editing, gimp




Chowning Synthesis of Complex Audio Spectra
by means of Frequency Modulation

assignment 6.0 (...detailed one in html)
moreC (voluntary assignment)


Streaming, Real Time Tracking, Polyphony, algorithm, ...

Choice of assignments 7, 8 or 9 or
Final Project
(check slides for details)

presentation dec 9 (monday, 3:15p)


stk, synthesis toolkit in C++

link to class documentation
Coursework (SUID req.)
Basic STK Tutorial
Basic Unix Tutorial
Basic C++ Tutorial

also click on the pictures for info about each application
& pp under week number link to lecture's slide files in open office and powerpoint formats

new stuff...

create applications for generating, analyzing and processing musical sounds (with a variety of approaches)

f1 f2 STK files to become familiarized with the syntax [used in assignment 1]
index.htm master index for homework submission/posting
assig2.tar.gz project files: click, record, thru [used in assignment 2]
anjutaSet.txt how to write code independently of the project files given in class [optional] (*)
(*)the instructions described above were overridden with the new STK release. Still, you can use it as a guide to set things up in a computer outside of CCRMA
assig3.tar.gz project files: stk-term.prj [used in assignment 3]
C++.cpp all the programming you need to survive thorugh this course
assig4.tar.gz project file: filter/src/main.cpp [used in assignment 4]
assig6.tar.gz unpacks into directory <amfm> [used in assignment 6]

[This page will be updated weekly. Always press reload in your browser to get the latest version]
10/03: All assignments are due a week after being released (*). Readings are mandatory, but you are solely responsible for doing them in a timely fashion. The quizzes in the coursework page are designed so that they can be responded while reading (kind of annotated study). They are not graded, but we know whether and when you have done them !! Questions are released on Wednesday afternoon. TA's office hours are also Wednesdays 3-5p, and other days by appointment.
(*)For week2 you should plan to chop the pvc tube and build your mic before, for they are required tools in the assignment. All required material waits in the corridor, next to the SysAdm's office.
10/04 The text file with the instructions for assignment2 now contains an extra line making explicit that a directory named <project> must be created inside ~/220. Also, although you can build (F10) and execute (F3) in anjuta the 3 files of this assignment, you may get some error/warning messages. This bug will be fixed for next week's assignments. Some of it can be corrected if you type <make> inside ~/220/stk-4.0/src/ and follow the instructions in <anjutaSet.txt> linke above. And BTW, to open the three files in assignment2, remember to use <file:open project> and not <file:open file>.
10/10 Assignment 3 has been sent to those who have completed Assignment 2. For those of you who have not done so yet there is still room to do it. If you have doubts, make use of any of the following meetings outside lecture times this week: Fri(11) 11-1, Sun(13) 3-5p, Mon(14) 3-5, or send questions by e-mail.
The path for submissions is ~/Library/Web/220/<put files in this directory>. It must include the <index.htm> file linked in the Downloads section, an html document named <hw#.htm> (# is the assignment number) for every assignment, and all supporting audio, picture, text files, etc., as required. If you think you completed your assignment but have not received the following one, e-mail me (rsegnini) ASAP. I can only check those assignments submitted according to the instructions set forth in assignment 2.0. Don't let assignments pile up. You will need to master them in a timely manner to keep up to pace with the lectures.
10/15 Assignment 4 was posted today. Together with assigment3, both are due 10/22. TA's office hours have changed to accommodate the majority of the class: Fridays 4:30-6:30p. E-mail or out-of-class impromptu questions are still welcome, but one-on-one advice will be confined to part of Thursday's lecture and the Office hour time. Chris can also be reached at his Trailer office (better by appointment).
New coursework quiz online 10/16. These quizzes are a good source of preparation for the midterm on 11/12. But more importantly, don't miss Tuesday's lectures. An attendance sheet is being passed at every meeting.
Coursework announcements are sent via the e-mail you have registered in your coursework profile. You may also check your ccrma e-mail from the following url: If you have not received assignment3 from me, you must email <rsegnini> ASAP. See if your submissions are visible by clicking here.
[New expanded tutorial for STK is online. See link above]
11/7 the rest of the quarter in a nutshell... (digested version from e-mail sent through Coursework)
We still have an assignment 6 which has been alluded to in class, plus an assignment 7 which is due by the end of the quarter *OR* can be turned into a small-scope project. Our class meeting during finals week will be used for project presentations and a discussion of them. Note: these are individual projects, not by teams. As shown on the syllabus chart, there are 3 more assignment topics beyond assignment 6. Of course, they're all great and we'd really like to kill off your Thanksgiving break with them. Reality says these should become lecture topics and that we will require you to only pick one, or pick an Stk-based project to do instead. The resulting variety will make for a more interesting class. Project scope is small given the remaing few weeks. After you finish assignment 6, email your choice of project or one of the three options for assignment 7. They have to be discussed and approved before you start.
11/7 About moreC (voluntary assignment): this quick exercise is our way of bringing C++ newcomers towards self-sufficiency. They've seen and used all of what's there. Now's the time for them to actually practice the same language elements from scratch, on their own, without templates or us looking over their shoulders. The gain in confidence will be well worth the short time it takes. It is voluntary and should happen between assignments 5 and 6.
11/7 Your account's size should be kept at the minimun possible. Large sound files can be saved at /usr/ccrma/snd/220a/<username>.
In order to make files in this directory (i.e: /usr/ccrma/snd/220a/<username>/<filename.wav>) readable from the web, you must create a symbolic link in your ~/Library/Web/220/ directory pointing to it. Your html document should point to the symbolic link, which in turn gives public access to a file in the /usr/ccrma/snd/ directory.
To create a symbolic link, type ln -s <sourcefile> <targetfile>, i.e.:
ln -s /usr/ccrma/snd/220a/<username>/filename.wav ~/Library/Web/220/filename.wav * updated *
Finally, create a link from the html document to ~/Library/Web/220/filename.wav

for more info about the command <ln> type <man ln> on a shell window