SESSION 1
Introduction
1.1 Introduction: Scope of the Course
1.2 What can Max do?
1.3 What is Max?
1.4 Getting Started: Building Blocks of Max
1.5 Building Our First Max Patch
1.6 Course Philosophy
COURSEWOR
K1 Intro to Program Logic and Behavior
SESSION 2 Fundamental Elements
2.1 Introduction: History of MAX
2.2 Intro to MAX Programming
2.3 Immediate Gratification Elements: Audio GUI Objects
2.4 Immediate Gratification Elements: Video
2.5 Visual Display and Control of MAX Data
2.6 Immediate Gratification Elements: MIDI
2.7 Objects in General
2.8 Customized QWERTY/Mouse Interaction and Program Logic
2.9 Outro
COURSEWOR
K2 Audiovisual Sequencer
SESSION 3 What's Really Going on Inside Max
3.1 Logic and Scheduling of MSP's Signal Processing
3.2 Digital Sampling & Sampling rate
3.3 The life of a gain~ object
3.4 The DAG of Signal Connections
3.5 Logic and Scheduling of MAX Events
3.6 Right to Left Order
3.7 Arithmetic Operators
3.8 MAX objects for Control Flow & Scheduling
3.9 Example: A Simple Drum Machine
3.10 Logic and Scheduling of Jitter Events
3.11 MAX's Data Types in Depth
3.12 Outro
3.5 Logic and Scheduling of MAX Events
3.6 Right to Left Order
3.7 Arithmetic Operators
3.8 MAX objects for Control Flow & Scheduling
3.9 Example: A Simple Drum Machine
3.10 Logic and Scheduling of Jitter Events
3.11 MAX's Data Types in Depth
3.12 Outro
COURSEWOR
K3 Program Your Own Behavior
SESSION 4 Getting Mathematical: Arithmetic, Logic, Matrices
4.1 Intro: Elementary Arithmetic in Max, MSP, and Jitter
4.2 Linear Interpolation in Max, MSP, and Jitter
4.3 Clipping in Max, MSP, and Jitter
4.4 Random Numbers and Noise
Logarithmic Scales Approximating Human Perception: Decibels
4.5 & MIDI Note Numbers
4.6 Random Melodies on Linear vs Log Frequency Scales
4.7 Boolean Logic (True/False)
4.8 Dividing the Octave in Twelve
4.9 The Coll Object
4.10 Musical Scales, Keys, Octave Equivalence
Example: Playing Scales from Coll with Amplitude-Enveloped
4.11 Sawtooth Notes
4.12 Repeating a Scale at the Octave
4.13 The Harmonic Series
4.14 Octaves, Half Steps, Cents, and Frequency Ratios
4.15 Different Kinds of Musical Fifths and Thirds
4.16 Outro
COURSEWOR Crossfade Between Two Scales and Apply Controlled
K4 Randomness to a Melody
SESSION 5 Structuring Non-Trivial Patches
5.1 Intro
5.2 Wobble Bass Example
5.3 Techno~ and Finding a Need for Encapsulation
5.4 Subpatchers and Encapsulation
5.5 Sync Signals and Getting a Bang on Every Loop
5.6 Programming techno~ with Max Messages
5.7 Bpatchers: Subpatchers you can see inside
SESSION 5 Structuring Non-Trivial Patches
5.1 Intro
5.2 Wobble Bass Example
5.3 Techno~ and Finding a Need for Encapsulation
5.4 Subpatchers and Encapsulation
5.5 Sync Signals and Getting a Bang on Every Loop
5.6 Programming techno~ with Max Messages
5.7 Bpatchers: Subpatchers you can see inside
5.8 Philosophies of Encapsulation, Naming, and Development
5.9 Presets and Snapshots
5.10 List Processing with Message Boxes
5.11 List-Processing Objects in Max: Pack, Route and Friends
5.12 The Sprintf Object
5.13 List Processing with the ZL Object(s)
5.14 Note Lists, Round Robin Scheduling and Routing by Data Type
5.15 Recording and Playing Back Sound in Realtime with Buffer~
5.16 Global and Local Variables with Value and PV
5.17 Using Coll (Collection) as a List of Notes
5.18 Storing Data with the Dict ("Dictionary") Object
5.19 Send and Receive
5.20 Outro
COURSEWOR
K5 Wub Wub Bass Duet and Subpatchers
SESSION 6 Abstractions, Files, and How Max Works
6.1 Where Max Keeps and Looks for Files (the Search Path)
6.2 Kinds of Files to Put in Your Search Path
6.3 How to Read and Write the Kinds of Files Max Typically Uses
6.4 Abstractions: Philosophy and Mechanism
6.5 AV Sine Synth Part 1: Synthesizing Sine Wave Sounds
6.6 AV Sine Synth Part 2: Graphically Drawing a Sine Wave
AV Sine Synth Part 3: Interface and Abstraction for Drawing
6.7 Squiggles and Clearing
AV Sine Synth Part 4: Defining a Mapping from Blip
6.8 Parameters to Squiggle Parameters
6.9 AV Sine Synth Part 5: Controlling it with a Generative Process
6.10 AV Sine Synth Part 6: Overlapping Notes and Polyphony
Review: How Max Works (How the Interpreter Runs Your
6.11 Patch)
6.12 Exceptions to Max’s Normal Evaluation Rules
6.13 How MSP Works: I/O and Signal Vectors
AV Sine Synth Part 4: Defining a Mapping from Blip
6.8 Parameters to Squiggle Parameters
6.9 AV Sine Synth Part 5: Controlling it with a Generative Process
6.10 AV Sine Synth Part 6: Overlapping Notes and Polyphony
Review: How Max Works (How the Interpreter Runs Your
6.11 Patch)
6.12 Exceptions to Max’s Normal Evaluation Rules
6.13 How MSP Works: I/O and Signal Vectors
6.14 Jitter Works Just Like Max
6.15 Scheduling in Max, MSP and Jitter
6.16 Outro
SESSION 7 Data Types in Depth
7.1 Intro to the the Max Type Conversion Table
7.2 Type Conversions 1: From Bang
7.3 Type Conversions 2: From Integer
7.4 Type Conversions 3: From Float
7.5 Type Conversions 4: From Symbol
7.6 Type Conversions 5: From List
7.7 Type Conversions 6: From Signal
7.8 Type Conversions 7: From Matrix
7.9 Matrix Processing
7.10 Displaying Matrices with jit.window
7.11 RGB and HSV Color Spaces
7.12 Video Analysis with Centroid Tracking
7.13 Directly Converting Pixel Values to Audio
7.14 Rastograms
COURSEWOR
K7 Squiggle Animation
SESSION 8 Interactivity
8.1 Intro
8.2 Examining the Messages a MIDI Controller Outputs
8.3 Abstracting a MIDI Controller
8.4 Mapping a MIDI Device to Control a Patch
Virtually Representing a MIDI Device with a Graphical
8.5 Interface, Part 1
Virtually Representing a MIDI Device with a Graphical
8.6 Interface, Part 2
Switching to a Different MIDI Device with the Power of
8.7 Abstraction
8.3 Abstracting a MIDI Controller
8.4 Mapping a MIDI Device to Control a Patch
Virtually Representing a MIDI Device with a Graphical
8.5 Interface, Part 1
Virtually Representing a MIDI Device with a Graphical
8.6 Interface, Part 2
Switching to a Different MIDI Device with the Power of
8.7 Abstraction
8.8 Open Sound Control
Making Your Own Wifi Network and Other Advanced
8.9 Networking Topics
8.10 Sending OSC from a Phone
8.11 Connecting Arduino with Max
8.12 Glue Code: Controlling an Arduino from a Phone via Max
8.13 Glue Code 2: Searching the Web with a MIDI Pad Controller
8.14 Interfacing Max with Modular Synthesizers
8.15 Interfacing Max with HID Devices
Sample-Synchronous Processing 1: Motivation and Simple
8.16 Examples
8.17 Sample-Synchronous Processing 2: Programming Techniques
8.18 Sample-Synchronous Processing 3: Boolean Signal Logic
8.19 Outro
COURSEWOR
K7 Data Types
SESSION 9 Interactivity Max programming paradigms
9.1 Session Intro and List of Topics
Abstractions as Objects: Naming, Help Patch, Inlets and
9.2 Outlets
9.3 Abstractions as Objects: Arguments
9.4 Abstractions as Objects: Allowing Multiple Instances
Abstractions as Objects: Coordinating Multiple Instances with
9.5 Gating and Delegation
Abstractions as Objects: Coordinating Muliple Instances with
9.6 Poly~
Using "Midinote" with Poly~ if You Don't Know the Duration in
9.7 Advance
9.8 Constraint-Style Programming with "Set"
9.9 Non-Realtime Processing with Uzi
9.10 Recording a Movie in Realtime and Non-Realtime
9.11 Using Max to Write, Save and Load Max Patches
9.12 Example: Ensemble Feedback Instruments
9.6 Poly~
Using "Midinote" with Poly~ if You Don't Know the Duration in
9.7 Advance
9.8 Constraint-Style Programming with "Set"
9.9 Non-Realtime Processing with Uzi
9.10 Recording a Movie in Realtime and Non-Realtime
9.11 Using Max to Write, Save and Load Max Patches
9.12 Example: Ensemble Feedback Instruments
9.13 Example: Ensemble Feedback Instruments (Continued)
9.14 Global Transport and Time Value Syntax
9.15 3D Graphics with OpenGL
9.16 Top-Down and Bottom-Up Programming
9.17 Outro
SESSION 10 Integrating MAX with Other Software and Languages
10.1 Max for Live: Integrating Max with Ableton Live
10.2 Hosting Plugins in Max
Snapshots: Saving and Recalling Plugin Parameters and other
10.3 Data
10.4 Maxurl: Connecting Max to the World Wide Web via HTTP
10.5 The js Object: Javascript in Max
10.6 The mxj and mxj~ Objects: Java in Max
10.7 The gen~ Object: Efficient Single-Sample Signal Processing
10.8 The jit.gl.slab Object: GPU "Shader" Programming in GLSL
10.9 The jit.gl.lua Object: Scripting OpenGL and Jitter with Lua
10.10 Writing Max Externals in C
10.11 Using Max with Version Control Software
10.12 How to Report Bugs
10.13 Outro
COURSEWOR
K 10 Final Project