Sound: Advanced Topics II

Columbia University
Spring, 2018 -- GR6611
Brad Garton and Mary Kouyoumdjian

course syllabus

I've been meaning to teach this topic in this seminar for several years now: web audio. We've been involved in other computer music-ey things (like the Unity/RTcmix project), and (honestly) I didn't think that audio running in a web browser could really do much. I was wrong! Seeing/hearing the work that several of our former students, and others of course, with browser-based music software has demonstrated how far web audio has come from just a few years ago.

A lot of impressive music apps now exist as html projects. We'll be looking at a few of them, but primarily we will be exploring how to create our own browser-based music apps. This will definitely be a learn-as-we-go semester, as neither Mary nor I have had much (any!) experience doing this kind of development. After doing a bit of exploring, we discovered the Tone.js package for doing web audio work. It's a meta-set of the basic web audio API, using the Javascript language within an html (web document) framework. If you haven't dealt with any of these things before, don't be frightened: we will not be assuming any heavy prior knowledge of this stuff in the class, Hey, we're the Music Department! We just want to make cool sounds! Seriously, though, a bit of programming experience will be helpful but not essential. Like I said above, we're also going to be learning about all this as the term unfolds.

Because of our relative lack of engagement with web audio, we plan to bring in a number of 'special guest stars' throughout the term, including Yotam Mann, the creator of Tone.js (Yotam was also a participant in this class several years ago). I've tentatively scheduled people on our course syllabus but the timing of some of our guests will be flexible. The amount of time we've alloted to various aspects of web audio may also be stretched or compressed based on what we'll need to cover in the class. Check the syllabus often to see what's in store (plus we'll be linking in all our code examples for every class on the syllabus). To be honest, we really have no idea if we can even cover one-tenth of the materials we have planned to cover, but hey, this is Columbia! Go Lions!

If anything, we'll learn a bit more about 'doing' music on the web, and hopefully we can even generate a set of interesting apps by the end of the term. The really fun part is that the code we develop should run on many platforms, so we shouldn't have any OSX vs. Windows vs. Android vs. iOS issues. You'll be able to use whatever works best for you. Hopefully.


Class meets on Tuesdays in 320H Prentis from 6:10 PM to about 8:00 PM. We may make assignments throughout the term intended to get you working with the development tools and also to spur class discussion. Some of the assignments may lead to your final projects for the class. We'll be discussing these projects later in the term.

Collected here are links to software and APIs that we will be using in class:

For a lot of HTML and Javascript examples, all you really need to do is google around and find a page that does similar things, then look at the html/javascript source for that page.

Although I said earlier that this should all be happily cross-platform, there are indeed differences in browsers and operating systems. You may note that the main Web Audio API is on Mozilla's web site, which would suggest that the Mozilla Firefox browser might be best. I've noticed that Google Chrome is actually better at some of the web audio things than Mozilla. Safari (my main browser) is third in web audio implementation. I'll probably use Chrome for most of the class example development.

Here are links to the different browsers. The good thing is that they're all free:

For our guest speakers, watch for announcements on the syllabus. As stated above, we may need to rearrange the classes as the term progresses to accommodate these guests. Plus if we're getting totally behind, then we'll modify the schedule accordingly.


Nearly all of the CMC studios and hardware resources are available for you to use. Check with me or Mary if you need to access our rooms.

If you prefer to work on your own computer, that's perfectly fine. We actually encourage this, especially given the content of the class this term.

You may sign up studios and machines for doing your work at the CMC using our new sign-up system. We do these using the Google Calendar app available through your Columbia cunix account (i.e. Lionmail). You will be receiving an invitation 'join' the relevant room calendars after the class starts. We'll be demonstrating how to use the system to reserve room times in class.

If you are having trouble getting access to the hardware or software you need, please let us know. The CMC is intentionally in a state of perpetual flux, reflecting the rapid evolution of the field of computer music. Our primary guide for the kinds of hardware and software investments we need to make comes from you, our happy students!

In general, if you are having difficulty understanding the programming paradigms we are using or the applications and information we are covering, be sure to talk to us. We'll be happy to sit down and work through any issues with you.


The course syllabus is located here.

Like we said, each week we do will become a link to information relating to that class. We'll try to keep up with linking in class patches, examples and information, but we may fall behind. Yell at us when we do.

Contact Information

The best way to reach us is through e-mail: I will be holding semi-official office hours from 10:30 AM - 12:00 noon on Wednesdays in Dodge Hall (my Dodge office is room 807). I will also usually be around before or after class. In addition to being around the CMC on various days, Mary will be available by appointment for informal "lab" sessions. If it looks like we need to schedule some more formal sessions for additional info, we will.

In general, it's always a good idea to make an appointment to see me, even during my purported office hours, because I often have to run around campus like a maniac doing strange, computer-music stuff. If you need to contact someone at the CMC or Music Department using your actual voice, the relevant phone numbers are:

Security and Access Policy

For graduate students and external auditors taking our classes, the policy is 24/7 with card-swipe access. You will need to be approved for access -- Prentis is not open to all CUID holders. For undergraduates, however, you will not be allowed to be in Prentis between midnight and 7 AM. Card-swipe access for undergraduates will be turned off during these hours, and (unfortunately) we will need to enforce sanctions against any undergraduate student who remains in Prentis during this time-period. This policy is also listed here. External auditors will also need to obtain a CUID card for access, obviously. Talk to me about how we can arrange that.


Grades will be determined mainly on the final projects you do, and of course they will be completely subjective and based on our own personal whims -- so ya better treat us right! We will discuss projects as the semester progresses. As noted above, we may be making some assignments throughout the term and discussing these in class. It'a always fun to see what you all can do. Attendance in class can be a factor, too (i.e. if you don't ever come to the class!).

I say this every year, and generally people believe it (I think): by this point in your career the last thing you should be worrying about is a grade. The main thing is to find something that you'd really like to do and then do it. Please don't try to impress us with your consummate knowledge and skill, we are more impressed by people who do things. Honest!

Hope you enjoy the class!