Matt Wright of Stanford University introduces Max—the revolutionary software which allows you to connect anything to everything.

Matt’s involvement with Max dates back to his early university days. Double-majoring in music and computer science, Matt first began working with an early version of Max in a computer music course taught by David Wessel at UC Berkeley twenty-five years ago. The software came directly from Max developer David Zicarelli. “We found a lot of bugs that semester!”

Inspired by the creative possibilities of the software, as well as Wessel’s advocacy of the democratization of computer technologies, Matt Wright began exploring the potentials of interaction and improvisation Max provides. “I was amazed that it was actually possible to build some sort of musical intelligence into a program that could respond to musical material that it didn’t know in advance—that you could write a program to ‘listen’ to a musical improvisation and respond accordingly.”

Matt Wright, thank you for taking the time to talk to us today. Could you briefly introduce us to Max…the software that connects anything? How is Max revolutionary?

Max is a graphical data flow programming language: you write the programs by placing various “objects” on the screen in a 2D spatial layout and connecting their inlets and outlets to each other with “patch cords” – that’s why the programs are called “patches”. Max has about 600 built-in objects which provide an amazing breadth of capabilities: arithmetic, program logic, sound synthesis, video processing, graphical user interface elements, interfacing with various kinds of hardware and the Internet, etc. You can also write your own objects, either in Max or in many other programming languages that Max incorporates: Java, JavaScript, Lua, gen. You can also access GLSL, OpenGL, and many other programming languages.

All of these objects are independent and it’s up to you, as the Max programmer, to connect them according to your own ideas, needs, and desires. There’s an incredible freedom to assemble these components in infinite ways. If you look at the breadth of projects that people undertake with Max, it’s hard to believe that one piece of software can enable so many different approaches. At first that open-endedness can be somewhat intimidating, staring at a blank page with so many latent possibilities is a very different experience from “here are your tracks, here’s your library of drum beats, here are your effects.” I hope my class will “break the ice,” getting students through the initial “what am I supposed to do?” phase and to the point of knowing a key subset of the objects and the principles for connecting them.

Matt Wright teaching Max MSP online at Kadenze
Matt Wright teaching his Max/MSP online course with Kadenze

Could you give a nutshell overview of the Max patch? What exactly is it?

When people imagine a computer programming language, they tend to think of a traditional text-based language where you type statements and commands and function calls using lots of indentation and punctuation marks, like C or Python or Perl or Javascript or Lisp or hundreds of others. Max is a graphical data flow language, so it looks very different from these. The 600 built-in “objects” are independent software modules that each perform a specific function. These can be as basic as adding two numbers together or waiting a certain amount of time or outputting one byte to a serial port, or as complex as video edge detection or graphically designing an audio filter or simulating rigid-body physics in an imaginary 3D world and rendering the result in OpenGL.

Essentially, Max programming consists of patching together these objects in infinite ways, literally just drawing specific connections between outlets of some objects and inlets of other objects. If you can plug an electric guitar into an amplifier then you have the basic idea of Max programming. It seems so simple that a lot of people can’t believe it’s really programming!

Why have you chosen to offer this course in an online format with Kadenze?

I’m offering this course with Kadenze for two main reasons: The first is the incredible accessibility and wide reach of Kadenze’s online format. I’ve been teaching Max in one way or another ever since I started learning it—informally helping people at CNMAT to leading the Max summer workshops, offering classes at the University of Victoria and UC Santa Barbara, and summer workshops at Central China Normal University in Wuhan. Here, in the first Session of my Kadenze class, I have 2000 students—more students than I’ve taught to date in all my previous courses put together! I deeply appreciate Kadenze’s business model. Offering free memberships enables anyone in the world to watch the lectures and interact on the course forums. The free membership model makes this course an offering for the benefit of all humanity. Personally speaking, this spirit of sharing and “paying it forward” is deeply meaningful and fulfilling.

online max course on kadenzeSecondly, I’ve worked my entire career in advanced university research labs: UC Berkeley’s CNMAT, Stanford’s CCRMA, the University of Victoria’s MISTIC, and UCSB’s CREATE, MAT, and AlloSphere Research Group. Every one of these places, and many more like them, end up using Max for big and small tasks as part of an overall context of research, teaching, and production; it’s a tool that never ceases to be useful for flexibly getting things done. None of these places, however, are able to devote the time, space, and resources to offering a beginner classes in Max as a programming language and tool. The structure of universities today requires that courses end up having to be about specific theoretical and applied topics necessary for the overall educational and research mission, not “here’s-how-to-use-this-particular-tool.” I’d like my class to fill this gap, giving people a way to learn the language in depth even though their school can’t afford to have somebody teach Max in person as part of the curriculum. I’d like to think I’ve “taken one for the team” by creating this online class, and that now people will be able to learn the tool on their own time and then be that much more empowered when they come back to their academic activities.

As the course progresses and students get to know the software, the assignments become more open-ended and creative. I know people are going to amaze me with the projects they produce. Max is such a versatile environment that all kinds of students will enjoy and learn from the course: musicians, visual artists, programmers, people working with sensors and physical computing, you name it. Max gives incredible flexibility in terms of producing output (such as sound, graphics, network messages, etc.) in infinite ways under the control of input (such as mics, cameras, MIDI messages, etc.) so that you can build programs that make what you want to have happen occur under whatever form of control you wish to impose. At one end you can press a big button to trigger a whole pre-made or algorithmically composed piece in its entirety; at another you can connect all kinds of sensors and virtual knobs and audio analyzers and camera trackers to give you very fine detailed control, from moment to moment, of any of the parameters of the program, from the tiniest details to the largest broad strokes. Of course it’s up to you to have something to express in the first place!

If you’re interested in learning more about all you can do with Max/MSP, check out Matt Wright’s course here.