Music 256a / CS 476a | fall 2014
Music, Computing, and Design I:
Software Design and Implementation for Computer Music

Ge Wang

assignments | final projects | mailing list | MCD

class: MW 3:15-5:05pm
location: CCRMA Classroom (the Knoll)
prerequisite: prior programming experience
this course is required for: Music 256b: Mobile Music

course summary:

This course focuses on software design and implementation for computer audio. The goal is to provide students with an understanding of the strategies, best practices, and tradeoffs in building audio software systems of various sizes (S, M, L, XL), with a focus on interactive ("real-time") systems. We will both "zoom out" and look at high-level design and structure as well as "zoom in" and dissect code in a hands-on, "in-the-trenches" manner. Course work is designed to put concepts/ideas into practice, and includes several small programming assignments, in-class quizzes, and a large-ish final software project. Prerequisite: prior experience programming in C/C++ and/or Java. This course is required for Music 256b: Mobile Music

256a topics include:

  • essential data structures and algorithms in audio programming
  • design principles and patterns for audio software
  • building real-time software systems for computer music
  • audio optimization techniques (and when to optimize)
  • inteactive system integration (audio, graphics, networking, system logic, etc.)
  • software engineering best practices
  • experiential design and aesthetic of audio software
  • (see fall-2014, fall-2013, fall-2011, fall-2010 and fall-2009 final projects!)

  • homework #1: Real-time Audio, Buffers, and Waveform
    due date: Tuesday, 2014.9.30, 11:59:59pm

  • homework #2: Sound Peeking
    due date: Tuesday, 2014.10.14, 11:59:59pm (or thereabouts)

  • homework #3: Audiovisual Music Sequencer!
    part #1 due: Monday, 2014.10.20, in-class
    part #2 due: Thursday, 2014.10.30, 11:59:59pm
    part #3 due: Monday, 2014.11.3, in-class

  • final project: AudioVisual Music Software Product
    "design and implement a music software system in C/C++/Java, leveraging real-time audio, interaction, and graphics; and -- build it with aesthetics."
    proposals: Monday, 2014.11.10
    milestone 1: Monday, 2014.11.17 (in class)
    milestone 2: Monday, 2014.12.01 (in class)
    final presentation: noon, Wednesday, 2014.12.10
    (see the final projects!)

MCD | CCRMA | music | CS | stanford