vision and sound with max
parsons mfadt spring 2006
joshua goldberg

overviewrequirementsjoshschedulelinks and resourcesstudent pages
fall 2005 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. 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.

requirements

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

The blog is here. All of you need to register on it immediately after the first class.

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 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.

POOR ENGLISH LANGUAGE SKILLS ARE NOT AN EXCUSE. TALK ANYWAY.

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

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 Thursday evening, from 6-8PM. This will be the best time to reach me or ask me questions. I also check email frequently.

In late April, my wife will be giving birth, and my life is changing utterly. Office hours and class times at the end of the semester are basically TBA.

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

Jan 23 Why not to take this class. Max 101: Ints, floats, symbols, lists. How timing works. The LCD object. MIDI 101.

Homework due 1/30:

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.

  • Print out the following manuals: Max Getting Started, Max Tutorials and Topics, Max Reference.
  • Download and install the program 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.
  • Register on the blog. Use this link.
  • Make something with LCD. Upload it to this page, as a comment. Extra super special bonus points for incorporating MIDI in some way.

Patches made in class are here.

Jan 30

Showing first LCD efforts. Some more discussion of MIDI. An introduction to Jitter. A discussion of codecs and what is appropriate.

Homework due 2/6:

  • 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.
  • 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 lists.

Patches from class.

Feb 6

Complexity and encapsulation. Jitter questions answered.

Guest speaker: Adam Kendall.

Homework due 2/13:

  • A jitter bot. Make a Jitter patch that does something interesting, using the footage you compressed for 2/6. Extra credit: Use the LCD patchwork you made for 1/30 as an alpha channel! Upload the patch to the blog, with media separately posted.

Patches from class are here.

Feb 13

Showing first Jitter efforts. An intro to MSP.

Homework due 2/27:

  • 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.

Patches from class are here.

Feb 20 Presidents' Day- NO CLASS
Feb 27 MSP continues. Review of synthesis techniques, sampling techniques, buffer~ work.

MSP Guest speaker, Hans Tammen.

Homework due 3/6:

  • 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. Upload the patch to the blog, with media separately posted.

Patches from class are here.

March 6 Showing first MSP efforts. Mixing MSP and Jitter. Synesthesia, cross-pollination. Discussion of Midterm.

Homework due 3/13:

  • Midterm assignment proposals. Post your idea as a blog post, and be ready to talk about it in class. Please feel free to comment on other people's ideas!

Patches from class are here. I've included a couple of patches you can use to browse the object help files...

March 13 Midterm proposal presentations.

Guest speaker: Scott Fitzgerald.

Homework due 3/27:

  • The Midterm. Post your midterm as a new blog post.
March 20 Spring Break- NO CLASS
March 27 Showing half of the midterms. (Determined by lottery at start of class!)

Homework due 4/3:

  • Comment on the midterm posts as of yet presented.
April 3 Showing other half of the midterms.

Homework due 4/10:

  • Comment on the rest of the midterms.
April 10 Video Tracking 101. Using SoftVNS, cv.jit, Cyclops.

Homework due 4/17:

  • Do either:
    • A nifty video-tracking-triggers-max project .... OR
    • A combined MSP-and-Jitter project.
  • Post code on blog.
April 17

Showing vidtrack/synesthesia homework. Discussion of final project. [Because of baby, this class may change!]

Homework 4/24:

  • Final project proposal
April 24 Final project proposal. Guest speaker TBA. [Because of baby, this class may change!]
May 1 Final project clinic sessions. [Because of baby, this class may change!]
May 8 Final project clinic sessions. [Because of baby, this class may change!]
May 15 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 platforms:

This is a class taught by a Macintosh bigot. You use Windows at your own risk. Even worse, people with their own laptops have a distinct advantage over people who do not. To make things even more unfair, those who decide to buy the application have drastic advantages over those who have to use the lab machines. Due to the idiosyncratic nature of the program, this is just how things work.

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

Max/MSP for Windows XP was released three years 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. There are a few installations of Max on the lab's Windows machines... 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.6 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

your name and face here!


Last updated Tue, Mar 7, 2006, by Joshua Goldberg.