Introduction

From the Blue Book:

Study of the theoretical and practical fundamentals of computer-generated music, with a focus on low-level sound representation, acoustics and sound synthesis, scales and tuning systems, and programming languages for computer music generation. Theoretical concepts are supplemented with pragmatic issues expressed in a high-level programming language.

Prerequisites: Ability to read music. After CPSC 202a and 223b. (Or with permission of the instructor.)

A more accurate description:

This course is a study of computer music concepts at the sound level: audio processing, sound synthesis, and instrument sound design. At the same time, the course will teach you advanced ideas in programming languages: e.g. functional programming in Haskell, higher-order functions, data abstraction, type systems, lazy evaluation, stream processing, monads, and arrows. The course is suitable for Computer Science majors, Computing and the Arts majors, Music majors with the appropriate background, as well as any undergraduate or graduate student with a keen interest in computer music and programming language concepts.

At the outset, you will have to learn Haskell programming basics. To do this, we will follow the same introductory material used in CPSC 431/531. Those students who took that course last year will find the early work easy, whereas new students will likely find it challenging. Therefore we will provide help sessions for new students in the first couple of weeks to facilitate learning Haskell.

How much music do I need to know to take this course?

The truth is, not much. It is sufficient that you understand standard music notation, and a little about scales and chords. You do not need to know much music theory, and you do not need to play an instrument. Of course, the more you know about music, the more you will be able to apply the concepts learned in this class in musically creative ways. This will be especially useful for your final project, but it is also acceptable to do a non-musical final project, for example one involving special effects (acoustics, reverb, distortion, etc.) or some other audio processing capability (e.g. changing tempo without changing pitch, automatic harmonization, etc.).

Note:

This is not a course simply to learn how to use music technology. For those interested in that, please consider taking one of the technology courses offered in the Department of Music. This is a course to learn about the mathematical and computational principles that underlie music technology. The assignments and the final project will focus on these issues.

This does not mean that you cannot create music in this course! To the contrary, I certainly hope that at least some students will use their creative skills to generate interesting music.

A key component of the course will be a final project in which students either create some interesting music or create some interesting music technology, and we plan to have a concert/demo at the end of the semester to showcase student compositions and/or tools. But since this is, after all, a computer science course, your effort must reflect something interesting from a CS point of view — there must be some computer science to go along with the creative artifact.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>