Max MSP Jitter Basic Concepts

 

MAX/MSP/Jitter: basic concepts

A workshop, January 19, 2012

Max/MSP/Jitter is a “do-anything” construction kit that uses numbers as building blocks to do many different things: numbers that control things, numbers that represent sounds, numbers that represent video.  It has a rich array of input-output methods, from keyboard and mouse input to MIDI messages to controllers like the Arduino microcontroller, and even video itself, once broken down into manageable numbers.

Resources

There are a number of excellent resources available for learning MAX and solving problems while programming. These are:

Tutorials

Documentation; reference pages

"back" button functionality

Help Files

esp the "object" box in the lower right corner

Built-in help features: Clue window, object auto-fill and “=” lists

Max Object Thesaurus

Website: Cycling74.com - community forums etc.

Sharing with others ("save as text"; storing/mailing .zip files).

Elements and principles

The special province of MAX is real time, indeterminate activity – i.e. it is not a time based player/recorder like Pro Tools or an editor like Final Cut, or an editing-&-rendering program like Photoshop, though those functions  can be emulated in MAX.  (NB  - sequencing events is now done in MAX-world by combining it with Ableton Live, which is used as a sequence based front end for max via the app Max4Live.

Basic building blocks of MAX

Numbers (float or integer), MAX objects, bangs, symbols (i.e. words and text that do something), & comments (which do nothing).

Bangs: the GO button

Objects: many different objects and types

Connections that may be drawn between all these things in the screen interface. Connections for audio and video are distinguished by color.

Modes of operation

Edit mode yes/no; presentation mode yes/no.

Streaming numbers, in and out

Simple example: typing on a keyboard generates numbers (ASCII codes).

MIDI

Each MIDI note is a list of numbers for pitch, velocity, MIDI channel.

control items like program change, etc.

streaming controller data

serial data

USB

Arduino and microcontrollers – see arduino.cc

sensors, etc. flow, pressure, switches, bend/twist

encoders/step motors

Symbols

“Symbols” in MAX are bits of text that can have meaning in terms of determining what the program does; either as commands and arguments, or labels, or names of files, etc.  They can be single words or codes, lists, 2-dimensional tables, or larger arrays.

Messages:

("arguments" are messages entered directly into the object box)

assembling messages using set, prepend, append; sending them places with route objects

Lists: sets of associated numbers

collect collects a stream of numbers into a non-temporal, but sequential list: a one-dimensional array

Objects seq and mtr collect and play back performed MIDI data in real time (i.e. timed the way it was timed when it went in).

Table storage and manipulation: more than one-dimensional data

table and  itable collect pairs of integers into editable tables

coll object collects items and lists of anything – including symbols – into a table

MSP: streaming numbers

Signals are fast streaming numbers (44.1K per sec and up). Max/MSP  objects can do numerical operations on streams of numbers.

MSP features special objects but also some of the same types as regular MAX objects: add, subtract; multiplication by ±1.0 = a volume control, etc.

Things Max can do with streams of audio data: generate, scale, record/playback, modify in RT (filter, compress, etc.), modify in time (delay, stretching pitch &/or time), and analyze

Special functions with readymade objects: FFT, compression/limiting, granulation, filters

Jitter basics: fun with matrices

Video is matrices: multidimensional arrays of data. Matrix math.

Video is a series of 3 dimensional matrices: 640 x 480-pixel tables of R, G, B, and alpha data, sequenced at a rate of 12-60 fps.

Jitter data matrices: jit.cellblock

Helpful and confusing things.

communicating with the program

Max window

Inspector window

refining MAX

            Hiding and showing things

            Presentation mode

Creating Hints and Clues

Messages to MAX: show/hide menubar, cursor, etc.

objects:

data in leftmost inlet initiates action, while data in other inlets are stored; bang in left inlet also initiates; right to left activation

often it will take two or more objects to get a technique to work.

special objects: loadbang and loadmess

commas in message boxes vs commas in coll lists

super useful swiss army knife objects

expr and expr~: use regular expression syntax to build equations

zl process streaming lists

poly~ spawn multiple instances of a patcher