Syllabus: Fall 2024
Course Info
- Title: Fundamentals of Computer-Generated Sound (Music 220A)
- Date: Monday and Wednesday
- Time: 3:30 - 4:50pm
- Place: Knoll Building Classroom or Backyard (weather permitting)
Teaching Team
- Chris Chafe - cc@ccrma.stanford.edu
- Constantin Basica - cobasica@ccrma.Stanford.EDU
- Nick Shaheed (TA) - nshaheed@ccrma.Stanford.EDU
Course Topics
- Audio programming using webchuck (which is a Web Audio API based platform for the Chuck programming language)
- Digital sound synthesis: additive, subtractive, FM, and more
- Basic digital signal processing: filter, delay, convolution, and non-linear
- Web music technology for sound design
- Algorithmic music creation and composition
Optional DSP Fun (new Fall, 2024)
- In-depth DSP audio development in the FAUST language. Breakout session tutorials in class on Thursdays.
Non-topics
- How to use DAWs (Ableton, Logic Pro, ProTools, etc. -- see Introduction to Creating Electronic Sounds)
- Network Music Performance (JackTrip -- see Network Performance Practice)
General Work Plan
The course divides roughly into three periods.
Before Add / Drop Deadline
Three weeks of introduction, hands-on labs and demos, listening sessions and assigned reading.
Through Thanksgiving Break Week
Rapid sequence of homework projects with 1 assigned per week for 5 weeks. This will need dedicated time, it'll be very fast-paced. Right before Thanksgiving submit a final project proposal and start the final project work.
Culmination Period
Finish final project documentation and present the project in class.
Textbooks
- Real Sound Synthesis for Interactive Applications, Perry R. Cook (Stanford has online access)
- Programming for Musicians and Digital Artists: Creating music with ChucK, Ajay Kapur, Perry Cook, Spencer Salazar, and Ge Wang (Stanford has online access, but you'll need to login to Searchworks in another tab before clicking the link)
Music Presentations
Every class begins with a few short music presentations and each student will take a turn (5 minutes) during the quarter. Say just a few words about what you picked, particularly commenting on why you are drawn to it.
Homework
- Students will complete 5 programming assignments.
- The homework will be evaluated on correctness, functionality, thorough fulfillment of the stated requirements, and creativity.
- The musical work is to be submitted, along with code and a description, to your homework directory (not by email).
- Late homework runs the risk of not being evaluated. The homework factory automatically timestamps submissions (resubmitting updates the timestamp).
Final Projects
There will be no final examination for this class. Instead, beginning a few weeks before the end of the quarter, students (working individually, not in groups) will explore an aspect of audio or music programming of interest and complete either:
- A program which demonstrates that interest, or
- A short composition or performance (highlighting that interest)
Documentation of your project is to be posted to your homework factory directory. Include any pertinent information such as design specifications if creating a program, musical considerations if doing a music project, and any live webapps, or audio / video files (as applicable)
Final presentations of projects will be held during the last couple weeks of class.
Grading
Grading is based on student participation, satisfactory completion of all assignments and creativity. The latter is subjective, and when the teaching team notes something outstanding we will call attention to it.
Collaboration
Collaboration between students is an important feature of this course and of many courses at CCRMA. Students are encouraged to exchange ideas, opinions, and information constantly, and to help each other with programming projects. Good solutions are for sharing. Naturally, each student is responsible for completion of their own assignments and it's the unique, creative side of each assignment which distinguishes the individual work. Please be sure to make proper attribution to the originator of any ideas, words, programming code, or other ideas that you incorporate into your own work.
Homework Factory
The Homework Factory is a collection of all turned in work that's hosted online on the CCRMA servers. It's a place for idea sharing and easy access to work-in-progress and completed work. A CCRMA account is required to post or see items in the collection. It is "open" within "CCRMA borders" in terms of privacy. Feel free to request to opt-out of the collection (by contacting the instructors) and a substitute server will be provided.
Communication
Announcements will be circulated via Canvas. Assignments and lecture notes will be posted on the course schedule site as the quarter progresses.
Accommodations
The course has quite a bit of built-in flexibilty. If any accommodation is required, please contact any of the instructors.
FAQ
Who is this course for?
Music 220A welcomes a wide range of students. It is a course which engages in music composition and covers many topics related to computer science/engineering. The course is designed to launch students toward future courses and projects in the art, science and engineering of sound and music. Students with no prior pogramming coursework or experience are welcome. If you are already a great programmer, you will be able to use your skills in this class to your advantage, and will be expected to challenge yourself on the musically-creative aspects of the course. For those who are new to computer music programming, it will involve learning a new kind of instrument (i.e. writing code).
What is the work load like?
The one pre-requisite is ample time to devote to the material. Throughout the course you will gain the necessary abilities to work with various techniques of sound synthesis and digital signal processing. These subjects will be taught at the level needed for the homework assignments. Each student is responsible for defining their learning methods and pursuing course goals using a combination of available resources: assigned readings, tutorials, documentation, and consulting with the teaching staff and fellow students.
Tools/Software?
In this course, we will be using webchuck (which is a Web Audio API based platform for the Chuck programming language).
Students can choose to join the DSP group mentioned above to get an introduction to the FAUST language.
Teaching Team Statement
Stanford as an institution is committed to the highest quality education, and as your teaching team, our first priority is to uphold your educational experience. To that end we are committed to following the syllabus as written here, including through short or long-term disruptions, such as public health emergencies, natural disasters, or protests and demonstrations. However, there may be extenuating circumstances that necessitate some changes. Should adjustments be necessary we will communicate clearly and promptly to ensure you understand the expectations and are positioned for successful learning.