Max is a visual programming language for music and multimedia developed and maintained by San Francisco-based software company Cycling '74. During its history, it has been used by composers, performers, software designers, researchers, and artists to create recordings, performances, and installations.
The Max program is modular. Most routines exist as shared libraries. An application programming interface (API) allows third-party development of new routines (named external objects). Thus, Max has a large user base of programmers unaffiliated with Cycling '74 who enhance the software with commercial and non-commercial extensions to the program. Because of its extensible design and graphical user interface (GUI), which represents the program structure and the user interface as presented to the user simultaneously, Max has been described as the lingua franca for developing interactive music performance software.
7.3.5 / March 8, 2018
|Written in||C, C++ (on JUCE platform)|
|Operating system||Microsoft Windows, macOS|
|Type||Music and multimedia development|
|Paradigm||visual, flow-based, declarative, domain-specific|
7.3.5 / March 8, 2018
Miller Puckette originally wrote Max at Paris's IRCAM in the mid-1980s, as the Patcher editor for the Macintosh to provide composers with an authoring system for interactive computer music. It was first used by Philippe Manoury in 1988 to write a piano and computer piece named Pluton, which synchronized a computer to a piano and controlled a Sogitec 4X for audio processing.
In 1989, IRCAM developed and maintained a concurrent version of Max ported to the IRCAM Signal Processing Workstation (ISPW) for the NeXT, and later Silicon Graphics (SGI) and Linux, named Max Faster Than Sound (Max/FTS), and being analogous to a forerunner to MSP enhanced by a hardware digital signal processor (DSP) board on the computer.
In 1989, IRCAM licensed the software to Opcode Systems, which sold a commercial version beginning in 1990, named Max (developed and extended by David Zicarelli). As Opcode sought to move to more mainstream products in the mid-90s, the publishing rights were moved to a new company, Cycling '74, founded by David Zicarelli in 1997. Max continued commercial development under Cycling '74.
Puckette released a fully redesigned free software computer program in 1996 named Pure Data (Pd), which, despite several fundamental differences from the IRCAM original, is superficially very similar and remains an open-source alternative to Max/MSP.
Max has several extensions and incarnations; most notably, a set of audio extensions to the software appeared in 1997, derived partly from Puckette's subsequent work in Pure Data. Named Max Signal Processing (MSP), or for the initials of Miller S. Puckette, this add-on package for Max allowed manipulating digital audio signals in real-time, allowing users to create their own synthesizers and effects processors (Max had formerly been designed to interface with hardware synthesizers, samplers, etc. as a control language using Musical Instrument Device Interface (MIDI) or some other protocol).
In 1998, a direct descendant of Max/FTS (jMax) was developed for Unix systems, using Java for its user interface and C for the real time part, and later released as open-source.
In 1999, Netochka Nezvanova released nato.0+55, a suite of externals that added extensive real time video control to Max. Though nato became increasingly popular among multimedia artists, its development stopped in 2001. Canadian media artist David Rokeby developed SoftVNS, a third-party package for visual processing in Max, and released it in 2002.
In the meantime, Cycling '74 developed their own set of video extensions. They released a major package for Max/MSP named Jitter in 2003, which provides real-time video, 3-D, and matrix processing ability.
In addition, several Max-like programs share the same concept of visual programming in real time, such as Quartz Composer (by Apple) and vvvv, which both focus on realtime video synthesis and processing. Pure Data also remains widely used.
A major update to Max/MSP/Jitter, Max 5, was released in 2008. It included a revamped user interface and new objects.
In November 2011, Cycling '74 released Max 6, a major overhaul with further improvements to the user interface and a new audio engine compatible with 64-bit operating systems. Gen, an add-on for patching and code compiling was also released.
In November 2014, Cycling '74 released Max 7, an update that featured an optimized interface, higher performance, and new tools for organizing files and tutorials.
On June 6, 2017, Ableton announced its purchase of Cycling '74. All versions of Max are expected to continue as a published product of Cycling '74, and David Zicarelli will remain with the company.
Max is named after the late Max Mathews, and can be considered a descendant of MUSIC, though its graphical nature disguises that fact. As with most MUSIC-N languages, Max/MSP/Jitter distinguishes between two levels of time: that of an event scheduler, and that of the DSP (this corresponds to the distinction between k-rate and a-rate processes in Csound, and control rate vs. audio rate in SuperCollider).
The basic language of Max and its sibling programs is that of a data-flow system: Max programs (named patches) are made by arranging and connecting building-blocks of objects within a patcher, or visual canvas. These objects act as self-contained programs (in reality, they are dynamically-linked libraries), each of which may receive input (through one or more visual inlets), generate output (through visual outlets), or both. Objects pass messages from their outlets to the inlets of connected objects.
Max supports six basic atomic data types that can be transmitted as messages from object to object: int, float, list, symbol, bang, and signal (for MSP audio connections). Several more complex data structures exist within the program for handling numeric arrays (table data), hash tables (coll data), XML information (pattr data), and JSON-based dictionaries (dict data). An MSP data structure (buffer~) can hold digital audio information within program memory. In addition, the Jitter package adds a scalable, multi-dimensional data structure for handling large sets of numbers for storing video and other datasets (matrix data).
The order of execution for messages traversing through the graph of objects is defined by the visual organization of the objects in the patcher itself. As a result of this organizing principle, Max is unusual in that the program logic and the interface as presented to the user are typically related, though newer versions of Max provide several technologies for more standard GUI design.
Max documents (named patchers) can be bundled into stand-alone applications and distributed free or sold commercially. In addition, Max can be used to author audio and MIDI plugin software for Ableton Live through the Max for Live extension.
With the increased integration of laptop computers into live music performance (in electronic music and elsewhere), Max/MSP and Max/Jitter have received attention as a development environment available to those serious about laptop music/video performance.