Syllabus: Summer 2021

Course Info

  • Title: Fundamentals of Computer-Generated Sound (Music 220A)
  • Date: Monday and Wednesday
  • Time: 10:00AM - 11:20AM
  • Place: Class Zoom Link (fully virtual, TBD)

Teaching Team

Course Topics

  • Audio programming with Web Audio API and Chuck
  • 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

Not covered

  • How to use DAW's (Ableton, Logic Pro, ProTools, etc.)
  • Network Music Performance (JackTrip)
  • In-depth web development or JavaScript programming

Music Presentations

Every class begins with a few short music presentations and each student will take a turn (5-7 minutes) during the quarter. You should say a few words about what you picked, particularly commenting on why you are drawn to it, and (optionally) note any course elements relevant to your selection.

Assignments

  • 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. The submission via email will NOT be accepted.
  • The late policy: by one day late (24 hours)

Final Presentation

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 and complete either:

  • A program which demonstrates that interest, or
  • A composition (possibly highlighting some research aspect)

A final presentation of the projects will be held during the last week of class.

Documentation of your project, along with any pertinent information such as the motivations for the composition, design specification of the program, basic user documentation, and composition audio file (if applicable) is to be submitted to your homework directory as well.

Grading

Grading is based on student participation, satisfactory completion of all assignments and creativity. The latter is subjective, but 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 his/her 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.

Communication

Announcements will be posted on the course website and sent out via the course mailing list (220a@ccrma.stanford.edu). Assignments and lecture notes will be posted on the site as the course progresses.

Accommodations

The course has quite a bit of built-in flexibilty. If anything interferes with tracking the class, please speak to the instructor outside of class.

FAQ

Who is this course for?

Music 220A welcomes a wide range of students. It is a course about music composition but covers many topics relate 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 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 her/his learning methods and pursuing course goals using a combination of available resources: articles, tutorials, documentation, and consulting with the teaching staff and fellow students.

Tools/Software?

In this course, we will primarily use Web Audio API (JavaScript) and ChucK for audio and music programming.