ï~~The Patcher
Miller Puckette
IRCAM, 11/8/88
Introduction.
The Patcher is a graphical environment for making real-time computer music, currently
with midi-controllable synthesizers. Its main purpose is to control the instantiation and
configuration of objects in the MAX system [Koechlin, et. al., 1986 ICMC Proceedings.] The
main entities in MAX are windows, which may be text editors, patchers, and function
tables. (In the future, maybe also a sequence editor and a 2-d function editor.) At the
moment the Patcher is the most interesting window type in MAX.
MAX views a performance as a collection of independent objects which communicate by
passing messages. It provides a set of subroutines for timing, midi I/O, fast memory
management, and message-passing between objects. In addition there is a simple
interpreter which converts text to messages and passes them appropriately. The current
version runs on a Macintosh personal computer.
The bulk of the MAX system is a set of classes which define the objects themselves and how
they interact. The classes are highly insular; the rest of MAX has very little knowledge
about the inside of any given class. As a result, the classes can be changed, added to or
removed, or new ones created, with little or no effect on the performance of the rest of the
system. The design of MAX aims to make a wide range of performances possible with little
or no need for additional programming; nonetheless it is easy to add new functionality to the
system.
MAX has hooks for patching a digital synthesizer, which may just be (as now) an
interpreting program in the Macintosh or may (in the future) be a plug-in signal-processing
card. As a part of the work of controlling a digital synthesizer, certain objects in MAX
create signal-processing elements in the synthesizer. These objects can intercommunicate
by means of signals, special messages through which the objects will arrange to pass a
signal in the synthesizer from one element to the other. Since this capability is still
experimental, it will not be described here.
Parts of MAX were contributed by Lee Boynton, Cort Lippe, and Zack Settel; brave
composers who used it early (and thus helped its development) include Frederic Durieux,
Michael Jarrel, and Philippe Manoury, assisted by Thierry Lancino, Cort Lippe, and Jan
Vandenheede.
Description of the Patcher.
The Patcher presents a visualization of an object in MAX as a box in a window, showing
some of the state of the object. Each box in the Patcher's window has some number of
graphical inlets and outlets. A connection between two objects is represented by a segment
from an outlet of one object to an inlet of another. You can create a new connection by
selecting any outlet of any object and dragging to an inlet of another object; a segment
appears between them. An outlet may be connected to many inlets and vice versa. Figure 1
shows an example of a patch, with three "slider" controls controlling three parameters of a
stream of notes to be sent over MIDI. Outlets of a box are always on the bottom and inlets
ICMC Proceedings 1988
420