CS 499 / 002

Computational Music Synthesis

Professor

Sean Luke

Meets

Tuesdays, 4:30 to 7:10 PM, in Room 206 of Planetary Hall

Prerequisites

A 499 course does not have prerequisites enforced by PatriotWeb, but instead will be enforced by the instructor. The prerequisites are:
  • CS 310. You should be proficient in Java.
  • CS 213. Multivariate Calculus.
  • CS 367. Low-level systems programming and bit manipulation.
  • A music backgound would be helpful. Ideally you would have had training in an instrument or voice, or have had music composition or performance experience, or have had some background experience in electronic music music production or acoustics. It'd be good to have a very basic working knowledge of some music theory. Stuff like: what is a dominant 7th chord, for example? How many sixteenth notes are in a measure? What is a minor third? How many notes are in an octave in traditional western tuning? What is syncopation? About that level of knoweledge.
  • It might also be helpful, but hardly required, to have some basic physics experience (especially acoustics).

About the Class

This course will introduce the student to scientific and engineering topics, computer algorithms, and software design issues involving the development of software and hardware music synthesizers, controllers, MIDI devices, and sequencers. The class is hands-on, involving real synthesis examples and software development. Topics covered will involve music synthesis history, acoustics and psychoacoustics of sound and music, digital representation of sound, several synthesis methods, controllers, and artifical intelligence applications. The class will include assignments and a final project.

This semester given time we will also attempt to introduce some topics in computational creativity, music UX and interfaces, and artificial intelligence applications to music and audio.

Required Course Materials

You are asked to obtain a new or used USB MIDI controller device of some sort, without which you will not be able to complete assignments. This could be a USB MIDI keyboard, such as a Novation LaunchKey, Arturia MiniLab, or Akai MPK Mini. You could also use a DIN-5 MIDI Keyboard or synthesizer in combination with a MIDI USB Interface.

Warning

This course will hit you with a firehose of information. It will be very challenging but (I hope!) interesting and eye-opening. You should be prepared to draw ideas from multiple areas outside of computer science. Projects will be nontrivial and in Java.

Course Web Page

http://cs.gmu.edu/~sean/499/

Grading

Grading will be divided roughly as follows: 20% Midterm, 20% Non-cumulative Final Exam, 60% Assignments and final Project.

Honor Code

The class enforces the GMU Honor Code, and the more specific honor code policy special to the Department of Computer Science. You will be expected to adhere to this code and policy.

Disabilities

If you have a documented learning disability or other condition which may affect academic performance, make sure this documentation is on file with the Office of Disability Services and come talk to me about accommodations.