The Art of Max for Live
The Art of Max for Live
Dive into Max to master Max for Live and push the limits of Ableton Live
About the Book
Written by Julien Bayle, artist, both Ableton Certified Trainer and Max Certified Trainer, and founder of one of the few Ableton Certified Training Centers in France, this guide is the most comprehensive guide ever published on Max for Live.
It will enable you to:
- ✅ Dive deeply into Max environment.
- ✅ Master the fundamental concepts of Max for Live — from patching to deployment in Live.
- ✅ Create your own instruments and sound generators, with concrete examples and professional techniques.
- ✅ Design custom MIDI and audio effects, exploring processing architectures, side-chaining, multichannel and advanced interactions.
- ✅ Build sophisticated interfaces, integrating interactive controls and dynamic visual feedback, with the [live.xxx] object families.
- ✅ Gain an in-depth understanding of the Live Object Model (LOM) and learn how to interact with Live via patching and JavaScript.
- ✅ Go further with JavaScript (and V8) scripting, to control Live, automate, observe, modulate and manipulate the internal structure of your Live projects in real time.
- ✅ Create your own Live MIDI Tools, thanks to the new features of Ableton Live 12, and open the door to advanced algorithmic manipulations in the Clip view.
But above all, this book is also the perfect excuse to learn Max in its own right. As the chapters progress, you will discover the richness of the Max environment: its logics, its paradigms, its essential objects, its subtleties. Even if you have never used it before, you will become capable of designing complex, generative, interactive systems - far beyond Live.
This book is the result of more than 15 years of practice and teaching, designed for creators, artists, musicians, researchers and makers. It will guide you step by step, from a reminder of the fundamentals of digital audio and MIDI to the creation of professional peripherals.
Whatever your starting point - curious beginner or advanced Live user - this guide will enable you to push the boundaries of your creativity and transform your Live environment into a true custom-made laboratory.
A reference manual, demanding, comprehensive and designed for practice... and for exploring the immensity of Max itself.
Translations
Team Discounts
Get a team discount on this book!
Table of Contents
- Chapter 1 -Introduction
- 1.1 -About the author
- 1.2 -The context
- 1.2.1 -What is Max?
- 1.2.2 -What is Live?
- 1.2.3 -What is Max for Live?
- 1.3 -Why this book?
- 1.4 -Who is this book for?
- 1.5 -Practice and experimentation
- 1.6 -Some preliminary conventions
- 1.7 -Going further
- Chapter 2 -Basic reminders about MIDI & audio
- 2.1 -Concept of digital sound
- 2.1.1 -Sampling
- 2.1.2 -Quantization
- 2.1.3 -Input/output buffer and ‘conversion’
- 2.1.4 -Time-domain and frequency-domain representations of sound
- 2.2 -The MIDI standard
- 2.2.1 -MIDI buses and channels
- 2.2.1.1 -The MIDI Bus
- 2.2.1.2 -MIDI channels
- 2.2.1.3 -Common case: one Bus / one device
- 2.2.1.4 -New development: MPE evolution
- 2.2.2 -Common MIDI messages
- 2.2.2.1 -Note-type messages
- 2.2.2.2 -Control Change messages
- 2.2.2.3 -Aftertouch messages and articulation with MPE
- 2.2.2.4 -Pitch Bend messages
- 2.2.2.5 -Program Change messages
- 2.2.2.6 -MIDI synchronization messages
- 2.2.1 -MIDI buses and channels
- 2.1 -Concept of digital sound
- Chapter 3 -Basics to understand Ableton Live
- 3.1 -Overall principles
- 3.1.1 -A very versatile sequencer
- 3.2 -Configuration and basic reminders about MIDI & audio
- 3.2.1 -Audio tab
- 3.2.2 -MIDI tab
- 3.3 -Session and Arrangement modes
- 3.3.1 -Session mode, multi-timelines
- 3.3.2 -Arrangement mode, the single unique timeline
- 3.4 -The devices
- 3.5 -Tracks
- 3.5.1 -The Different Types of Tracks
- 3.5.2 -Track view and clip view
- 3.5.3 -On-The-Fly help
- 3.5.4 -Routing and monitor
- 3.5.5 -The track is a chain of devices
- 3.5.5.1 -Flow in a MIDI track
- 3.5.5.2 -Flow in an Audio track
- 3.5.5.3 -Flows representation
- 3.5.6 -The track mixer
- 3.5.7 -The MAIN track
- 3.5.8 -Return tracks
- 3.6 -Clips
- 3.6.1 -Two types of clips
- 3.6.1.1 -Audio clips
- 3.6.1.2 -MIDI clips
- 3.6.2 -Automations
- 3.6.3 -Only one clip playing at a time per track
- 3.6.4 -Session mode takes priority over arrangement mode
- 3.6.1 -Two types of clips
- 3.7 -Find out more
- 3.1 -Overall principles
- Chapter 4 -Learn about Max to dive into Max for Live
- 4.1 -Global principles of Max environment
- 4.1.1 -What is Max?
- 4.1.1.1 -A programming environment…
- 4.1.1.2 -…dynamic,
- 4.1.1.3 -…interactive,
- 4.1.1.4 -…graphic.
- 4.1.2 -What is Max for Live?
- 4.1.3 -Three types of Max for Live devices
- 4.1.4 -The different Max domains
- 4.1.5 -Help in Max
- 4.1.6 -The Preferences window
- 4.1.7 -First concepts: objects, cables and patching
- 4.1.7.1 -The Object concept
- 4.1.7.2 -Concept of Object instances and inspector
- 4.1.7.3 -Concept of prototype, instance presets
- 4.1.7.4 -Patching and wiring concept
- 4.1.7.5 -Objects with or without a graphical interface
- 4.1.7.6 -Editing and presentation modes
- 4.1.8 -Copy/Paste/Share objects, patches
- 4.1.8.1 -Patchers are saved as .maxpat files
- 4.1.8.1.1 -Dependencies on external files
- 4.1.8.1.2 -The places where Max searches for objects, media and other files
- 4.1.8.2 -Copy/Paste, Copy Compressed and JSON
- 4.1.8.1 -Patchers are saved as .maxpat files
- 4.1.9 -The flow of information in Max
- 4.1.10 -The inlets/outlets of objects
- 4.1.11 -Object arguments
- 4.1.1 -What is Max?
- 4.2 -The messages domain, Max
- 4.2.1 -Message types
- 4.2.2 -The Bang message
- 4.2.3 -Message flow priorities
- 4.2.3.1 -Default priorities
- 4.2.3.2 -Multiple and ordered actions with [bangbang] and [trigger]
- 4.2.4 -Concept of hot and cold inlets
- 4.2.5 -Essential objects and concepts in the message domain
- 4.2.5.1 -Graphical interface objects
- 4.2.5.2 -The [message], [print] object and the console
- 4.2.5.3 -Simple and complex mathematical operations
- 4.2.5.4 -Concept of randomness
- 4.2.5.5 -Time, [metro] and transport
- 4.2.5.5.1 -The transport
- 4.2.5.5.2 -Time in Max
- 4.2.5.5.3 -The metro
- 4.2.5.6 -Messages, dynamic messages and lists
- 4.2.5.6.1 -Messages, lists
- 4.2.5.6.2 -Dynamic messages
- 4.2.5.6.3 -Create/break down lists with [pack] and [unpack]
- 4.2.5.7 -List processors list / zl
- 4.2.5.8 -Iteration with [uzi]
- 4.2.5.9 -Comparator and conditions: [select], [if] and more
- 4.2.5.10 -Message routing
- 4.2.5.10.1 -Tagging and [route]
- 4.2.5.10.2 -Arbitrarily controlled routing: [gate]/[switch]/[router]
- 4.2.5.11 -Scaling and interpolation: [scale] [zmap] [clip] and [line]
- 4.2.5.11.1 -[scale] & [zmap] and interpolations
- 4.2.5.11.2 -[clip] and ‘clipping’
- 4.2.5.11.3 -[line] and the generation of interpolated values in a given time
- 4.2.5.12 -Wireless message transmission: [send]/[receive]
- 4.2.5.13 -A few words about OSC
- 4.2.5.14 -MIDI in Max
- 4.2.5.14.1 -MIDI Input and Output
- 4.2.5.14.2 -MIDI parsing
- 4.2.5.14.3 -Generating MIDI messages
- 4.2.6 -MIDI mapping
- 4.2.7 -Concepts of subpatching and abstraction
- 4.2.7.1 -Subpatching
- 4.2.7.1.1 -Creating an object [patcher]
- 4.2.7.1.2 -Encapsulating objects
- 4.2.7.2 -Abstractions
- 4.2.7.2.1 -Abstractions without graphical interface
- 4.2.7.2.2 -Abstractions with a graphical interface with [bpatcher]
- 4.2.7.1 -Subpatching
- 4.2.8 -Saving/recalling parameters
- 4.2.8.1 -The [live.xxx] objects family and the Parameter mode enable attribute
- 4.2.8.2 -The [preset] object and interpolation
- 4.2.8.3 -The [pattr], [pattrstorage], [autopattr] system
- 4.2.8.4 -The snapshots system
- 4.3 -The domain of signals, MSP
- 4.3.1 -Max audio engine principles
- 4.3.1.1 -Enable audio in MSP
- 4.3.1.2 -Message/signal conversions
- 4.3.1.3 -Notion of signal amplitude
- 4.3.2 -Essential objects and concepts in the field of signals
- 4.3.2.1 -Periodic and non-periodic signal generators
- 4.3.2.2 -Sample-and-Hold
- 4.3.2.3 -Smoothing a signal
- 4.3.2.4 -Mathematical operations and signal control
- 4.3.2.5 -Signal routing with [gate~], [selector~], [matrix~] with [crosspatch~]
- 4.3.2.6 -Play/Record
- 4.3.2.6.1 -Manipulation via the file system with [sfplay~], [sfrecord~] and [playlist~]
- 4.3.2.6.2 -Manipulation via RAM buffers [buffer~], [record~], [play~], [wave~], [groove~]
- 4.3.2.7 -Notion of polyphony with [poly~] and [rnbo~]
- 4.3.2.7.1 -poly~: a powerful tool for polyphony
- 4.3.2.7.2 -rnbo~: a modernised approach to polyphony
- 4.3.2.7.3 -Specialised sub-patchers: an essential distinction
- 4.3.2.7.4 -Max for Live and polyphony
- 4.3.3 -The sample-wise signal processing with [gen~]
- 4.3.4 -MC objects
- 4.3.1 -Max audio engine principles
- 4.1 -Global principles of Max environment
- Chapter 5 -Approach Max for Live
- 5.1 -Basic reminder: Live runs Max
- 5.2 -Understanding the Max for Live licensing system
- 5.2.1 -Max for Live licence without Max licence
- 5.2.2 -Max for Live licence with an additional Max licence
- 5.3 -Specific features and limitations inherent to Max for Live
- 5.3.1 -Audio and MIDI connections of a Max for Live device
- 5.3.2 -Limitation of send/receive between Max for Live devices
- 5.3.3 -Case of send/receive intra and inter-devices
- 5.3.4 -Communication and impermeability between Max for Live devices and unique identifier
- 5.3.4.1 -A natural permeability between Max for Live devices
- 5.3.4.2 -A possible impermeability
- 5.3.5 -Few words about the Live Object Model (LOM)
- 5.3.6 -pattr and parameters
- 5.3.7 -The concept of device freezing
- Chapter 6 -Basics for building a Max for Live device
- 6.1 -Choosing the right device type
- 6.1.1 -The LOM is accessible in any type of device
- 6.2 -Overview of live.xxx objects
- 6.2.1 -Objects related to the graphic interface
- 6.2.2 -Specific LOM objects
- 6.2.3 -Some other objects
- 6.3 -Device inputs/outputs, track routing and side-chain
- 6.3.1 -[midiin], [midiout], MIDI channels and MIDI side-chain
- 6.3.1.1 -Flows in the same track and the single channel 1
- 6.3.1.2 -Advanced MIDI routing and different types of side-chain
- 6.3.2 -[plugin~], [plugout~], multichannel and side-chain audio
- 6.3.2.1 -Streams in the same track and stereo
- 6.3.2.2 -Stream between tracks and multichannel
- 6.3.2.3 -Side-chain audio stream to an instrument
- 6.3.3 -Routing with [live.routing]
- 6.3.3.1 -Custom audio routing
- 6.3.3.2 -Custom MIDI routing
- 6.3.1 -[midiin], [midiout], MIDI channels and MIDI side-chain
- 6.4 -Design of the graphic interface of a device
- 6.4.1 -Device size and width
- 6.4.1.1 -Change the initial size via the view menu
- 6.4.1.2 -Change the size on the fly with the [live.thisdevice] object
- 6.4.2 -Max for Live device and presentation mode
- 6.4.3 -Max for Live UI objects and the concept of Live parameters
- 6.4.4 -Static and dynamic colour systems
- 6.4.5 -The essential attributes of UI objects
- 6.4.5.1 -Short and long names
- 6.4.5.1.1 -The long name must be unique
- 6.4.5.1.2 -The short name is sometimes visible on the patcher
- 6.4.5.2 -On-the-Fly help and Max for Live device
- 6.4.5.3 -Initial value
- 6.4.5.4 -The visibility of parameters (hidden, stored only and automated & stored)
- 6.4.5.4.1 -Hidden, the volatile parameter
- 6.4.5.4.2 -Stored Only, the parameter saved
- 6.4.5.4.3 -Automated & Stored, the parameter saved and automatable
- 6.4.5.5 -Concept of priority and limit of update by automation
- 6.4.5.6 -Parameter type, values and units
- 6.4.5.6.1 -Decimal number (Float type)
- 6.4.5.6.2 -Integer number (Int type)
- 6.4.5.6.3 -Discrete list of possibilities (Enum type)
- 6.4.5.7 -Parameter Mode Enable and Max objects
- 6.4.5.1 -Short and long names
- 6.4.6 -Attributes that cannot be modified at runtime, ’hidden’
- 6.4.1 -Device size and width
- 6.5 -Additional tips and ideas
- 6.5.1 -Create a UI in an external window
- 6.5.2 -Saving other things than UI object parameters
- 6.5.3 -Objects with multiple parameters to automate: the case of [pictslider]
- 6.1 -Choosing the right device type
- Chapter 7 -Building MIDI effects with Max for Live
- 7.1 -Reminder on Midiin / midiout objects, MIDI flow and chains
- 7.2 -Using a device’s MIDI input
- 7.2.1 -Observing and analysing a MIDI stream
- 7.2.2 -Transmitting MIDI notes outside Live in OSC
- 7.3 -MIDI Processing and Output
- 7.3.1 -Altering the pitch with a monophonic pitcher
- 7.3.2 -Taking it up a notch with a polyphonic pitcher
- 7.3.3 -Changing the response to velocity
- 7.4 -Create a sequencer synchronised with Live
- 7.4.1 -Fundamental concepts of a sequencer
- 7.4.2 -Timeline and synchronisation of a [phasor~] to the Live transport
- 7.4.2.1 -The signal approach, maximum accuracy
- 7.4.2.2 -The metro approach, often sufficient
- 7.4.3 -Design of a simple sequencer engine with [multislider]
- 7.4.4 -[what~] approach
- Chapter 8 -Building Audio effects with Max for Live
- 8.1 -Reminders on [plugin~]/[plugout~] objects, and Audio flows
- 8.2 -Let’s build some classic effects
- 8.2.1 -Tremolo and ring modulation (ring modulator)
- 8.2.1.1 -Generation of the modulation signal
- 8.2.1.2 -Smoothing the modulation signal
- 8.2.1.3 -Modulation gain management
- 8.2.1.4 -Application of modulation
- 8.2.2 -Delay and repitch
- 8.2.2.1 -Repitch concept with digital delays
- 8.2.2.2 -Simple delay with feedback
- 8.2.2.3 -Multitap delay with 8 lines and feedback
- 8.2.2.4 -Pitch Modulation!
- 8.2.3 -Gen~ in Max for Live
- 8.2.3.1 -The freeverb example
- 8.2.1 -Tremolo and ring modulation (ring modulator)
- Chapter 9 -Building Max for Live instruments
- 9.1 -Reminders on input and output : [midiin] / [plugout~] objects
- 9.2 -Building a small synthesizer
- 9.2.1 -Monodic Version
- 9.2.1.1 -Processing of incoming notes and [mtof~]
- 9.2.1.2 -Tuning the oscillator
- 9.2.1.3 -Envelope generation
- 9.2.2 -Polyphonic Version
- 9.2.2.1 -Concept of polyphony and Max
- 9.2.2.2 -Parallel instantiation with [thispoly~]
- 9.2.2.3 -Sending notes to [thispoly~]
- 9.2.2.4 -The _polyminimal instance itself
- 9.2.2.4.1 -Entry/exit points of a patch made for [poly~]
- 9.2.2.4.2 -Send/receive communication from outside [poly~]
- 9.2.2.4.3 -The instance itself and [thispoly~]
- 9.2.2.4.4 -Calculation of the number of occupied voices, tip.
- 9.2.1 -Monodic Version
- 9.3 -Building a drum machine
- 9.3.1 -Description of polyphonic sample players
- 9.3.2 -Description of the playback unit itself
- Chapter 10 -Mastering the Live Object Model
- 10.1 -Introduction and Documentation
- 10.1.1 -What is the LOM?
- 10.1.2 -Accessing the LOM through objects and through Javascript
- 10.1.3 -Objects, model classes
- 10.1.4 -How do I use the LOM documentation?
- 10.2 -Classes
- 10.2.1 -Live Set level
- 10.2.2 -Tracks and Chains level
- 10.2.3 -Scene Level
- 10.2.4 -Mixer Level and Other Components
- 10.2.5 -Specific Devices Level**
- 10.3 -Find the id with [live.path] to connect to the classes
- 10.4 -Accessing properties with [live.object] and the ‘get’ and ‘set’ commands
- 10.4.1 -Retrieving a value on a one-off basis with ‘get’
- 10.4.2 -Modifying a value sporadically with ‘set’
- 10.5 -Tracking a property with [live.observer]
- 10.6 -Tracking children with [live.observer], a tip for counting the number of tracks
- 10.7 -Calling a function with [live.object] and the ‘call’ command
- 10.7.1 -Generate a dynamic path
- 10.7.2 -Calling the fire() function
- 10.7.3 -Automating and synchronising clip triggers
- 10.8 -Some notable special cases of paths
- 10.8.1 -The tracks
- 10.8.2 -The racks
- 10.8.3 -Parameters, DeviceParameter class
- 10.8.4 -The track mixer
- 10.9 -Controlling parameters with signals and DeviceParameter class
- 10.9.1 -Strong coupling with [live.remote~]
- 10.9.2 -Gentle modulation with [live.modulate~]
- 10.10 -Some useful tips
- 10.10.1 -Finding the device path
- 10.10.2 -Counting the number of tracks and the number of scenes
- 10.10.3 -Finding the name of the clip playing in a track
- 10.10.4 -Find the name of the playing clip
- 10.1 -Introduction and Documentation
- Chapter 11 -Driving the Live Object Model with Javascript (JS, V8)
- 11.1 -Introduction to Javascript and V8 in Max
- 11.1.1 -Definitions
- 11.1.2 -Why are JavaScript and V8 very useful in Max MSP?
- 11.1.3 -Anatomy of a Javascript or V8 script for Max
- 11.2 -The Live Object Model is accessible through a Javascript API
- 11.3 -Some concrete examples
- 11.3.1 -Retrieving information sporadically (get) with Javascript
- 11.3.2 -Observe information (observe) with Javascript
- 11.3.2.1 -Principle of callbacks in LiveAPI
- 11.3.2.2 -Implementing Observers in the Script
- 11.3.2.3 -Callback structure for retrieving a specific property
- 11.3.2.4 -
getcount()
to count the ‘children’ of a Live object
- 11.3.3 -An example: dynamically monitoring the status of the clip grid
- 11.3.3.1 -Overall operation
- 11.3.3.2 -A complete and complex JS script
- 11.3.3.3 -A visualisation system using [v8ui]
- 11.1 -Introduction to Javascript and V8 in Max
- Chapter 12 -Live MIDI Tools and Max for Live
- 12.1 -Introduction
- 12.1.1 -What are Live MIDI Tools?
- 12.1.2 -Generators, transformers and Max for Live
- 12.2 -Structure of a Live MIDI Tool in Max for Live
- 12.2.1 -[live.miditool.in]: from MIDI Clip to Max for Live
- 12.2.2 -[live.miditool.out]: from Max for Live to the MIDI Clip
- 12.2.3 -Data processing and MIDI Tool logic
- 12.3 -The Apply Cycle of Live MIDI Tools
- 12.4 -Limitations of Live MIDI Tools
- 12.4.1 -Audio processing and MSP objects
- 12.4.2 -Incompatibility with node.script
- 12.4.3 -Transport-related limitations
- 12.5 -Live MIDI Tools generators
- 12.5.1 -The [live.miditool.in] object, the universal entry point
- 12.5.1.1 -General Principle
- 12.5.1.2 -Retrieving the user context
- 12.5.2 -User controls
- 12.5.3 -Understanding the iteration loop of the [uzi] object
- 12.5.4 -The [live.miditool.out] object, the exit point
- 12.5.1 -The [live.miditool.in] object, the universal entry point
- 12.6 -Live MIDI Tools transformers
- 12.6.1 -Anatomy of the global patch
- 12.6.2 -“Chaos” subpatcher: note offset
- 12.1 -Introduction
- Chapter 1 -Introduction
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earnedover $14 millionwriting, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them