Max Basics
Max is a standard tool used in the music technology field for composition, music control, and various other tasks. It provides a graphical interface and paradigm for modular programming.Max/MSP History
Max/MSP Overview
Max Essentials
Max is a standard tool used in the music technology field for composition, music control, and various other tasks. It provides a graphical interface and paradigm for modular programming.Max/MSP History
- Developed by Miller Puckette in the mid-1980s at IRCAM, Paris
- Ported to NeXT and ISPW boards in the late 1980s and early 1990s
- Commercial version for Macintosh computers released by Opcode in 1991 under the lead of David Zicarelli
- David Zicarelli began distributing MSP via Cycling '74 in 1999 and Max since 2000
Max/MSP Overview
- High-level graphical programming environment
- Generally hides or takes care of low-level programming
- Designed for "real-time" performance
- Written in C
- Extensible via external objects
- Macintosh support, Windows version released in 2003
- MSP: Max Signal Processing (or Miller S. Puckette)
- MSP is an extension to Max for audio signal processing
- The MSP objects were derived from the Pd signal processing infrastructure
- Graphic and video processing extensions using Jitter
Max Essentials
- The Max and Patcher windows
- Box types: object, message, comment, button, number, float number, ...
- Connections between "inlets" and "outlets" via "patch cords"
- Object help:
- in edit-mode (unlocked), option-click on object
- in edit-mode, select object and use Help menu item
- inlet/outlet information is available in the "Assistance area" (lower-right display bar) during "mouse-over"
- in edit-mode, select object and use Object->Get Info (command-I) for object specific settings
- Locking/Unlocking patches:
- command-click on white space within Patcher window
- View->Edit menu item (command-E)
- click the button in the lower left-hand corner of the Patcher window
Example #1
- A message box does nothing until it receives a "bang" or it is clicked
- A button object sends out a "bang"
- Print objects can take an argument to help distinguish each from one another
Example #2
- message boxes can contain text or numbers or lists of numbers
- Int and Float number boxes display and pass incoming number data
- Floats are truncated when being converted to Ints
- Messages are sent in right-to-left, bottom-to-top order
- If a single outlet is connected to more than one inlet of the same object, the right-most inlet will receive the message first
Example #3
- A toggle button has two states, zero and non-zero (shown by an X)
- A toggle button passes its (Int) input or sends out alternating 0's and 1's when clicked
- The metro object outputs a periodic "bang". The object argument sets the period (default = 5 ms)
- comment boxes can be used to document a patch.
- All objects, including comments, can be set to "Hide on Lock"
Example #4
- An operation is triggered by data or a "bang" at an object's left inlet
- The right inlet stores last received value and initially defaults to 0 (for + and *) or 1 (for / and %)
- Math operators can also take an initial right operand value via an object argument
- Math operators default to Int calculations; use an initial argument with a decimal point to force Float calculations
- Both arguments of an operation can be sent to the left inlet as a list
Example #5
- A slider object will pass and set itself to an input value
- A slider value can be changed without sending out the value using the set command (in a message box)
- The range of a slider can be changed using the size command
- The output of a slider object can be scaled and offset (see inspector)
- number boxes can also be used as "sliders"
- number boxes can be formatted for various output types and behaviors (see inspector)
- number boxes can take input from a computer keyboard as well (when selected)
In class example patch (posted after the class):
click on pic to download -->
click on pic to download -->
- 3 interpolatable random number generators are mapped to patcher's background colour space and are further scaled and mapped to RGB of another panel.