Syllabus Projects

Course Number: 15-322
Class Times: Tues/Thurs 3:00pm - 4:20pm
Location: Hamerschlag Hall B131

Roger B. Dannenberg, Instructor

rbd@cs, 268-3827, Wean Hall 3214 and 3213
Office hours: by appointment

Fan Li, Teaching Assistant:

hustlf@cs.cmu.edu, 268-7296, Newell Simon Hall 3612B
Office hours: Thursday 4:20-6:00 or by appointment

Description: Computers are used to synthesize sound, process signals, and compose music. Personal computers have replaced studios full of sound recording and processing equipment, completing a revolution that began with recording and electronics. In this course, students will learn the fundamentals of digital audio, basic sound synthesis algorithms, and techniques for digital audio effects and processing. Students will apply their knowledge in programming assignments using a very high-level programming language for sound synthesis and composition. In a final project, students will demonstrate their mastery of tools and techniques through the implementation of a significant sound-processing technique and musici composition.

Prerequisites: any introductory programming course, or permission of the instructor.

This is the home page for my course, Introduction to Computer Music. If you are wondering what the course is really about, read on.

About the Instructor

Roger B. Dannenberg is an internationally known researcher, composer, and performer specializing in Computer Music. His invention of computer accompaniment led to the creation of the SmartMusic product used by thousands of music students every day. His work on real-time techniques and software synthesis have influenced the design of many systems in use today. Dr. Dannenberg is currently working on music understanding by computer and advanced programming techniques for interactive music. As a performer, Dannenberg plays trumpet in various jazz groups in Pittsburgh, including Capgun Quartet. As a composer, Dannenberg has written works for computer, trumpet, and chamber groups, including recent commissions by the Wats:On? Festival, U3, and the Pittsburgh New Music Ensemble. He has also performed his compositions in Havana, Mexico City, Paris, Pisa, and Curitiba, Brazil, as well as across the United States.

Who Is This For?

I want this course to be open to a wide range of students. It is a Computer Science course, but most of the content is orthogonal to programming or traditional computer science. If you are a great computer science student or even a great programmer, you will be able to use your special skills in this class to your advantage.

On the other hand, if you are a musician with intro-level programming skills, you can get  by without writing a lot of difficult programs. Your musical knowledge and intuitions will also be of great value. However, this course does have technical content. You will need to learn and apply basic concepts of sampling theory, frequency, amplitude, spectral content, modulation, and so on. These subjects will not be taught at the level of rigor I would expect to see in an EE course on linear systems, but they are technical nonetheless. I think these are essential skills for modern musicians and composers (and computer scientists!).

Course Content

Computer Music includes many things. This course focuses on using computers to create and manipulate sound. Things that will be covered:

what is sound?
how do computers represent sound?
sound synthesis techniques
sound manipulation techniques
a "sampling" of major composers and compositions

Things that will not be emphasized:

MIDI
algorithmic composition
real-time interactive systems

You may notice that the things that will be covered have to do with music as an audio signal. The course will teach how to manipulate audio signals to achieve musical goals. The things not emphasized tend to deal with music as "events" such as notes, phrases, and other structures, which can be analyzed, generated, and manipulated by computer. A companion course, Computer Music Systems and Information Processing, explores these aspects of computer music. Also not taught are techniques for real-time interactive systems. This is perhaps my major research area, but I think it first requires mastery of fundamentals taught in this course.

Textbook

Curtis Roads, The Computer Music Tutorial. This is a BIG book. It's great. It covers most of what we will do in class, but it does not cover the language Nyquist or the editor Audacity, nor does it talk about composers, composition, and specific compositions that we will listen to in class. The scope of this book is much larger than the scope of the class, so there is plenty of extra material in case you want to explore areas outside the class. Also, the book is a great reference for student projects. It may seem overkill to buy such a comprehensive book that we cannot fully utilize, but the book is actually cheaper than what I consider to be good alternatives. 

The Nyquist Reference Manual is a book in electronic form. You can print it (and bind it, and I'll autograph it, but I digress ...) from a PDF file, or you can access it on the web or from your local Nyquist installation. The first half (up to the chapter "Nyquist Functions" is intended to be introductory and explanatory, so please use this to supplement the Nyquist lectures.

Grading

Attendance is required. You should not expect your grade to be higher than the percentage of classes you attend.
Homework, including composition assignments, counts 60%. Do not skip homework assignments or, as simple math will tell you, your grade average will plummet.
The Project counts 40%

Organization

Feel free to let me know what you would like to learn about. There are some basics we have to cover, and I'll have no trouble filling the time, but I am open to suggestions.

The general plan starts with an examination of sound. What is it, how to we describe it and measure it, and how to we store it on a computer? There are some simple but profound answers, and anyone working with sound on computers needs to know them.

We will immediately begin to learn and use Nyquist. Nyquist is probably the most powerful programming language for audio manipulation, sound synthesis, and computer music composition. Nyquist was designed and implemented by me and my students, and we have used it for over a decade. It now runs under Windows, the Macintosh, and Linux, so you will be able to use it on your favorite machine (it is also free).

Nyquist will be used to experiment with what we learn in class. For example, if we learn about FM Synthesis, rather than listening to examples or playing with an FM synthesizer, we'll program an FM Synthesizer in Nyquist (maybe 10 lines of code) and use it to make music. We'll spend most of our time learning about different techniques, always exploring three aspects:

Theory: What's going on with the musical signal? How does it work?
Programming: How do we express the process as a program? What are the possibilities for control and expression?
Esthetics: How do I make music with it?

As the semester moves on, everyone will be expected to create music. I don't expect masterpieces, nor do I require a musical background. I will require an appreciation for artistic intentions and a serious effort to create something interesting. Often, the students with the least musical baggage produce the best work. I hope everyone will hear music differently after this course. The main homework assignments require music compositions that demonstrate your mastery of technical material from the course..

The course includes a semester project. Projects may be team efforts as long as the efforts of team members are well-defined. I particularly hope "technical" majors and "non-technical" majors will team up. The basic idea of the project is to implement an interesting method for sound processing and to use the method to create a musical work. For example, you might create a multi-band filter controlled by cellular automata and compose a piece based on filtered crowd noises. I will strongly encourage programming projects to contribute to the growth/improvement of Nyquist and an open-source audio editor Audacity. By working in the context of these existing programs, student work benefits future classes and other researchers and composers. These become "real" projects, not so much in the sense of scale, but in the sense that they should really work and be ready for real users. The research literature is a good source of projects, e.g. take something described in the literature, implement it, document it, and demonstrate it.

In addition to the semester project, there is a semester composition, where students integrate what they have learned and produce an original composition. There will be a concert at the end of the semester featuring many of these student works.

I have enjoyed teaching this course since fall 2002. The last time before that I taught an Intro Computer Music course, the main computer was an IBM PC/AT with a whopping 10MB disk drive. It seems that everything has changed since then. Most students will be able to do their work on their own personal computer, and there's little need for a big studio of special equipment as in the past. That means students can continue to use and apply everything they learn even after the semester ends.

Roger B. Dannenberg
3213 and 3214 Wean Hall
dannenberg@cs.cmu.edu
268-3827