vision and sound with max
parsons mfadt fall 2004
joshua goldberg

overviewrequirementsjoshschedulelinks and resourcesstudent pages
spring 2004 page is here

overview

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 OpenGL work. SoftVNS 2 is David Rokeby's extension for Max that allows a more specialized way of working with video input and playback.

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.

requirements

This is a production class. 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 homework, class participation and attendance. All students must maintain web pages with catalogues of their homework to date and weblogs of their progress, frustrations, advice, fears and triumphs in reference to the class, learning Max and completing the final project.

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.

A note about the web pages:

If you do not know how to maintain a web page and/or a blog, it is your responsibility to learn. If you do not maintain the webpage throughout the class, you will fail it. Don't worry about making it pretty! I have zero interest in the design of your site; I just want to get a sense of how well you are doing with the material by perusing it. If you spend more than 10 minutes on designing the web pages, you are wasting your own time.

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.

My office hours in the lab are 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!) practically every tuesday evening, same time as the class. 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.

schedule

Sep 23 First class. Introduction to Max. How to run it, how to install it. A few dire warnings. Discussion of class requirements and structure. Meet and greet. Preparing media for live work. Why you don't want to take this class.

Files used in class today:

Assignments for 9/30:

  • Fire up your blog
  • Print out the documentation for your own reference and use: Max Getting Started, Max Tutorials and Topics, Max Reference. It's a HUGE AMOUNT OF MATERIAL and you will kill trees, but if you don't take the time to actually do this, you will find it much more difficult to learn the application. You have been warned. It's cheaper than most textbooks.
  • Start preparing two minutes of sound and two minutes of video. This is due 10/7.
  • Read 'Max Getting Started'.
  • Do Max tutorials 1-11, which are covered in the 'Max Tutorials and Topics' file. Copy the tutorial files from the Max application folder on the lab machines. As you're doing the tutorials, have the Reference handy. When an object is introduced in the tutorial, take the time to look it up. Only skim if you really know what you are doing!!
Sep 30

Midi 101. What is MIDI? Music, control. External control. Keyboard and mouse control. A very first look at Jitter.

Files made in class.

Assigments for 10/7:

  • Print out the Jitter manual, to get ready for the next class.
  • Do Max tutorials 12-25.
  • Write a patch that uses MIDI to do something cool. Make it interactive and not just random or generative. You will be required to show it in class.
Oct 7

Jitter 101. Controlling Quicktime with Jitter. Mixing and compositing. What is a matrix? What is digital video? A first hint of MSP.

Assignments for 10/14:

  • Print out the MSP manuals- both of them!- to get ready for the next class.
  • Do Jitter tutorials 1-10. Read the first few chapters as well.
  • Read appendix A of the Jitter tutorial.
  • Make a video playback and mixer patch. If it looks anything like the patch we made in class you will be humiliated.
  • Be ready to perform for two minutes, using the video files you should have prepared a week ago! Your patch should include either an external controller interface (MIDI keyboard, joystick, etc) or some seriously impressive keyboard and mouse control. Slacking will not be tolerated. There should be both a video and a MIDI aspect to the perfornance.
Oct 14

MSP 101. The basics of synthesis and sound file playback and manipulation. What is digital sound? Also: an introduction to encapsulation, modularity, abstractions and bpatchery. The #n thingy.

Live input and tracking using softVNS 2

Guest speaker: Sasha Harris-Cronin, video installation artist.

Files made in the 10/19 office hours session:
  • THRILL at seeing how simply downsampling matrices does not an average make! If you run a 'jit.qt.movie 320 240' through a 'jit.matrix 4 char 1 1' and into a pwindow, you will only see the pixel at 0,0- not the average! use jit.3m.
  • WONDER at the method of using scripting, uzi and urn to avoid drawing all of those stupid patchcords to mix up a router between jit.scissors and jit.glue.

Assignments for 10/21:

  • A live input stupid pet trick using softVNS -OR- 5 minutes of A/V performance, using both Jitter and MSP.
  • MSP tutorials: 1-17. More if you feel like it.
  • Perform for two minutes, using the sound files you prepared.
  • Find a use for a flexible abstraction in your patch.
  • Print the softVNS 2 manual.
Oct 21 Live input and tracking using softVNS 2. Some more on audio.

MSP 101! The basics of synthesis. How to play files with sfplay~. Using buffer~ with groove~ and play~. The line~ and line objects. More on incorporating idiosyncratic MIDI equipment.

Files from class are here.

Assignment for 10/28:

  • MSP tutorials: 1-17. More if you feel like it.
  • Perform for two minutes, using the sound files you prepared.
  • Find a use for a flexible abstraction in your patch.
  • A live input stupid pet trick using softVNS -OR- 5 minutes of A/V performance, using both Jitter and MSP.
  • Midterm proposals.
Oct 28 Random topics and catchup. Performance strategies. Synesthesia.

Guest speaker: Adam Kendall, audiovisual artist.

Nov 4 Various topics. OpenGL? Advanced synthesis? TBA.
Nov 11 Midterm clinic. We will work in the lab today.

Files from class.

Nov 18 Midterm Assignment. TBA.
Nov 25 Thanksgiving Break. NO CLASS.
Dec 2 Guest lecturers: Milena Iossifova and TBA. At some point we will need to have a makeup class because of yours truly.

Files from class.

Dec 9

Guest lecturers & advanced topics TBA.

Dec 16 Final project clinic sessions.
Dec 21 Final project clinic sessions. (This is a makeup class because it's a Thursday. Mandatory attendance.)
Dec 23 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 strongly, strongly encouraged to print them out. Kill a tree, save your brain.

A note on platforms:

This is a class taught by a Macintosh bigot. You use Windows at your own risk.

The standard platform for this class will be OS X. The lab machines will always run the latest version of the Max/MSP/Jitter betas, and you are encouraged to keep up as well.

Max/MSP for Windows XP was released more than a year ago. Although great strides have been made in the name of stability and capability, it remains somewhat problematic. Jitter was recently released for the Windows platform, and because of SoftVNS' dependency upon very close-to-the-metal Altivec routines, it will be a very long time- if ever!- before David releases a Windows version. Sometime in the semester, the DT lab will purchase licenses of the Windows software. You are welcome to experiment with the other side, but all work done for the class must be compatible with Max/MSP version 4.5.1 for OS X.

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 by myself and Jonathan Lee Marcus, who is teaching the other section of the class. 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. This list will grow throughout the class.

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.

students

Tina Aufiero Minah Kim Ernesto Klar
Catalin Lazia Anna Lowe Ivonne Loyola
Turi McKinley Bryan Noll Randy Sarafan
Pan Shihyeb Yeonju Shim Maria Villamil
Miao Wang

Last updated Thu, Dec 2, 2004, by Joshua Goldberg.