vision and sound with max
parsons cdt fall 2007, sections 1 and 2
joshua goldberg

overviewrequirementsjoshtwo sectionsschedulelinks and resourcesphotos
spring 2006 page is here


Max is a graphical multimedia programming environment. It was originally developed by Miller Puckette as a MIDI mediation language at IRCAM, and is now currently maintained and sold by David Zicarelli's company Cycling'74.

It is an ideal environment for developing two kinds of applications: realtime processing of data, such as serial input, MIDI messages, sound, video, 3D and system messages; and mapping data from one format to another in wildly creative ways.

Max is the core language, used for MIDI, basic data manipulation & interface design. MSP is the digital signal processing architecture of Max, used for manipulating frequency, or streams of numbers at extremely high speeds. Jitter is Cycling'74's extension for fast processing of large grids of numbers, or matrices. It is especially optimized at points for 4-plane grids of eight bit numbers, or video frames. It also is an extraordinarily powerful development environment for nontraditional 3d graphics work.

This is a course for two different kinds of students: those interested in using Max to program installation pieces, such as physical computing projects or dynamic site-specific artworks; and those interested in developing custom interfaces for performance. Be warned: this is both a math class for artists and an art class for math people. If you do not have interest in either one of these areas, drop the class now.


A final Max programming project, consisting of an installation piece, a performance or a generative artwork, will count for 50% of the final grade.

The other 50% of the grade will depend on student participation, in the form of

I am open to 4th semester students using Max in their theses for final credit, as long as it takes the form of an installation or a performance.

I am also quite open to students collaborating on final projects, or doing one project for two classes. I would be pleasantly surprised to see collaboration between students in different sections, as well.

A note about class participation:

In my experience, people who are quiet in class fall into two categories: those who understand the material completely and are bored, and those who are terrified because of their ignorance. If you fall into the first category, your work had better be incredibly impressive, because you should be inspiring the class to work harder and learn more, so everyone else can get up to your level. If you fall into the second category, you should have dropped the class.

What I mean to say is this: there is practically no excuse for reticence in my classroom. We have a lot of material to get through, and I talk fast. If you don't understand something, and you don't immediately speak up and say that you don't understand, you are asking for trouble come midterms and finals time, because I will have been laboring under the assumption that you knew it all.


I am the kind of teacher who wants to be surprised and challenged by my students.

My time in the lab is for working with students on ideas and techniques which may not have been covered in class, so that projects can be better developed and independent work can be done. They are NOT for retreading issues I had believed were completely understood.

You will never look bad in my eyes for admitting you don't understand something.

You will look terrible if you do not.

the instructor

I will have office hours either in the main lab or at another location (you will have plenty of warning if this happens!) at a time to be announced after the first class of the semester. This will be the best time to reach me or ask me questions. I also check email frequently.

More information on me is available on my outdated and inconsistent website. My work is occasionally interesting, but not under any circumstances to be aped. You are all incredibly bright, gifted students. I have no doubt that the work you produce in this class will make mine look cheap, uninteresting and gimmicky. Make me proud.

two sections

This year, for the first time, I will be teaching two simulteneous sections of Vision and Sound. Students from one section are welcome in the other. If you must miss a class, you are welcome to make it up by attending the alternate section. Please notify me in advance if you plan to do this. Be warned that the focus, speed and flavor of each section will most likely veer in different directions as the semester progresses.


Class 1 (Section A: 9/10; Section B: 9/6) Why not to take this class. Max 101: Ints, floats, symbols, lists. How timing works. The LCD object. MIDI 101.

Due for class 2:

  • Print out the following manuals: Max Getting Started, Max Tutorials and Topics, Max Reference. Read ALL of the Getting Started manual.
  • Download and install the latest version of the application and the tutorial files.
  • Read the following Topic chapters in the Tutorials and Topics book: Data Structures, Arguments, Punctuation, Debugging.
  • Do tutorials 1-11 in the Tutorials and Topics book. Those of you who are ravenous for more should keep going into the MIDI stuff. It won't hurt, it WILL help, and you'll be a hero.
  • Open the LCD help patch and make sure you understand EVERYTHING about it, except for the regions, clipping and sprites stuff. (Be prepared for in-class grilling.)
  • Make something with LCD. Extra super special bonus points for incorporating MIDI in some way. Homework must be placed in the drop box before the start of class 2. Those of you with laptops should have your homework READY TO GO; you will show it on your own machine, using the projector.

This should take you at least 5-7 hours, not including the printout time. Anything less and it's fair to say that you are giving the class short shrift, and should consider dropping it now. If it takes you much more time than that, it's a fair assumption that you are doing the right thing.

If you are having trouble, you should take advantage of the itp-sound mailing list. Daniel Palkowski, Luke DuBois and I assign membership of this list to our students, and many alumnae and alumni of our classes stick around. The list's prime function is a safe space for beginning Maxers to ask what they may assume are stupid questions. Hit a wall? Don't give up, and don't beat yourself up. Ask the list.

I am aware that section B has more time to do this; that is no excuse for section A slacking. I still consider this a week's homework.

Files from this week's class: Section A, Section B

Class 2 (Section A: 9/17; Section B: 9/20)

Showing first LCD efforts. Some more discussion of MIDI.

Due for class 3:

  • Print out the following manual: Jitter Tutorial.
  • Download and install Jitter, and the tutorial files.
  • Read the following: What is a Matrix? Attributes, and Appendix A (Quicktime).
  • Make four 15 second movie clips to use in your patches instead of the stock media.
    • They MUST be in this format: Quicktime .mov format, PhotoJPEG codec, 15fps, 320x240, High quality, non-fast-start, no sound.

Files from this week's class: Section A, Section B

Class 3 (Section A: 9/24; Section B: 9/27)

Jitter 1: Quicktime and camera input. Complexity and encapsulation.

Homework due Class 4:

  • Do the following Jitter tutorials: 1-20, and 29. This is a HUGE amount of material. Plan your time accordingly, and don't forget to use the list as a resource.

Files from this week's class: Section A, Section B

Lab files from 9/26.

Class 4 (Section A: 10/1; Section B: 10/4)

Jitter 2: Matrix manipulations and intermediate tricks.

Homework due Class 5:

  • A Jitter bot. Make a Jitter patch that does something interesting, using the footage you compressed for Class 3. Extra credit: Use the LCD patchwork you made for Class 2 as an alpha channel!

Files from this week's class: Section A, Section B

Lab files from 10/3.

Class 5 (Section A: 10/8; Section B: 10/11) Jitter 3: Jitter assignment presentations.

Homework due class 6:

  • Print out the following manuals: MSP Tutorials and Topics, MSP Reference.
  • Download the tutorial files.
  • Read the following: Introduction, How Digital Audio Works, How MSP Works, Audio I/O
  • Do the following tutorials: MSP tutorials 1-17. You've got two weeks to do this. Make it count! This stuff is the hardest material yet, and it is DENSE. Start early.

Files from this week's class: Section A, Section B

Lab files from 10/10.

Class 6 (Section A: 10/15; Section B: 10/18) MSP 1: Sound file playback and manipulation (Taught by R. Luke DuBois!!)

Luke's files: Section A, Section B

Class 7 (Section A: 10/22; Section B: 10/25) MSP 2: Synthesis and Synesthesia.

Guest speaker 10/25: Hans Tammen of Harvestworks.

Homework due Class 8:

  • An MSP bot. Make an MSP patch that does something interesting. Use found sound or live recorded sound, or pure synthesis, but do not use the example media in the program! You will play it for two minutes in class.

Files: Section A, Section B

Class 8 (Section A: 10/29; Section B: 11/1) MSP 3: MSP assignment presentations. (Hans speaks 10/29)

Homework due Class 9:

  • Midterm project proposal.

Files: Section A, Section B

Class 9 (Section A: 11/5; Section B: 11/8) Midterm project proposal presentations and clinic sessions.

Files: Section A, Section B

Class 10 (Section A: 11/12; Section B: 11/15) Midterm clinic sessions.

Files: Section A, Section B

Lab files from 11-14

Class 11 (Section A: 11/19; Section B: 11/20)

Midterm due.

Due Class 12:

  • Final project proposal
Class 12 (Section A: 11/26; Section B: 11/29) Final project proposal presentations. Guest speaker Scott Fitzgerald.
Class 13 (Section A: 12/3; Section B: 12/6) Final project clinic sessions.
Class 14 (Section A: 12/10; Section B: 12/13) Final project clinic sessions.
Class 15 (Section A: 12/17; Section B: 12/20) Final projects due. Guests encouraged at this class.

links and resources

Texts for the class:

There are no books in the bookstore for this class. All texts are in freely downloadable PDF files and web links. You are REQUIRED to print them out. Kill a tree, save your brain.

A note on computers for this class:

Here's a sad truth: People who bring Mac laptops to my class will have a distinct advantage.

I am a Macintosh bigot, and have been so for decades. Windows, especially Windows Vista, is a subpar environment for the software we will be using for this class. Driver issues, DirectX inconsistencies, idiosyncratic audio tools; the reasons for my warning are legion. I can fix problems like that on the Mac side, but not on the Windows side. Working with a Mac will save my time and yours.

Max is an idiosyncratic environment. You will, over the course of the semester, develop a workflow for your patches which will be greatly dependent upon the general workflow of your own computing environment. Having your own laptop is the easiest way to deal with this. Even the low-cost Apple MacBooks will be superior to using Windows or depending upon the lab computer infrastructure.

You are encouraged to purchase a limited-time student license of Max/MSP/Jitter from Cycling '74. Start saving your quarters now; those of you who wish to continue to the Max 2 class may find yourselves in need of the real $450 thing.

That being said, most of the lab machines have up-to-date copies of Max/MSP/Jitter on them. Use them in a pinch, but I cannot recommend relying upon them, and will not accept tech issues as excuses for late or incomplete homework.

A note on extensions:

There is a rich tapestry of third-party extensions for Max. Many of these work very well with OS X. Installing these is quite easy if you have administrative access to your working machine- i.e. if you're working on your own personal laptop. The lab Macintoshes have the third-party extensions judged relevant and necessary. If you feel there is an extension set you would like placed on the lab machines, please talk to me; you're probably right and I'll put it on there.

Max links:

There are many sites about Max on the web.

Mailing lists:

There is no better way to learn Max than to ask questions. Asking questions is easy when you have the patience for mailing lists. Joining one or all of these is not required for the course, but you will find it much much easier to learn the material with community support.

class photos

Thursdays / Section B:

Yu-Lan "Celine" Hung Mina Karimi
Meng Hsun Wu Meha Pande
Matt Betancourt Jeanne Joshi
Hee Jung Eduardo Menendez
Danny Durtsche Carolina Torres
Alia Ormut-Fleishman

Last updated Thu, Nov 15, 2007, by Joshua Goldberg.