Open For Enrollment

Starts in 5 days

Join Now

Would you like to enroll?

Enrollment for this course has closed. But you can enroll in a future offering (please select)

Enrollment has closed

Enrollment for this course is currently closed, but the next offering will be available shortly. Check back soon!

Go at your own pace
10 Sessions / 10 hours of work per session
Price
Free
Included w/ premium membership ($20/month)
Skill Level
Beginner
Video Transcripts
Portuguese, Chinese, Spanish; Castilian, English
Topics
Synthesis, Digital Arts, Max/MSP, Signal Processing, Open Sound Control, Interactive Audio and Video
Open For Enrollment

Programming Max: Structuring Interactive Software for Digital Arts

Starts in 5 days

Would you like to enroll?

Enrollment for this course has closed. But you can enroll in a future offering (please select)

Enrollment has closed

Enrollment for this course is currently closed, but the next offering will be available shortly. Check back soon!

Go at your own pace
10 Sessions / 10 hours of work per session
Price
Free
Included w/ premium membership ($20/month)
Skill Level
Beginner
Video Transcripts
Portuguese, Chinese, Spanish; Castilian, English
Topics
Synthesis, Digital Arts, Max/MSP, Signal Processing, Open Sound Control, Interactive Audio and Video
Course Description

Max is a powerful platform that accommodates and connects a wide variety of tools for sound, graphics, music and interactivity using a flexible patching and programming environment. Max allows most computer users to write a simple, meaningful program within a few minutes, even with limited programming knowledge. But to do something more substantial it's necessary to approach Max as an actual programming language, by taking advantage of its various mechanisms for abstracting program elements into scalable, reusable components that can be combined in increasingly powerful ways.

This class will not cover every single capability of the language, but instead will focus on key concepts and mechanisms that will allow for tremendous new freedom and possibilities in Max. The class will touch upon:

  • sound and movie playback
  • sound synthesis
  • sound and video effects processing
  • algorithmic composition
  • cross-modal mappings (e.g., video affecting audio and vice versa)
  • interactive control (e.g., from QWERTY keyboard, mouse, USB devices, Open Sound Control)

Max programming, like most interesting topics, has deep aspects and shallow aspects. This course will largely focus on the deep aspects: principles, concepts, techniques, and theory. If you understand these underlying aspects, your capacity to create in Max will deepen exponentially.

At the same time, this is not just a theory class. You will also create your own projects using Max. This course will teach the minimum you need to start working on assignments, but mostly I will teach you how to learn or look up the shallow knowledge on your own using Max’s built-in documentation, the Internet, and the Kadenze course forum, as well as how to program your own tests that answer specific questions or reveal potential bugs. Working in this way, you will also develop essential skills and habits that will develop confidence and self-sufficiency, and serve you in the future.

schedule

This course is in adaptive mode and is open for enrollment. Learn more about adaptive courses here.

Session 1: Introduction (May 29, 2018)
This session will introduce you to Max, to this course, and how to get started.
6 lessons
1. Introduction: Scope of the Course
2. What can Max do?
3. What is Max?
4. Getting Started: Building Blocks of Max
5. Building Our First Max Patch
6. Course Philosophy
Session 2: Fundamental Elements (June 5, 2018)
This session will cover the fundamental elements of Max, getting to know the user interface for programming Max, and the basic mechanical steps of "patching" (ie. putting programs together).
9 lessons
1. Introduction: History of MAX
2. Intro to MAX Programming
3. Immediate Gratification Elements: Audio GUI Objects
4. Immediate Gratification Elements: Video
5. Visual Display and Control of MAX Data
6. Immediate Gratification Elements: MIDI
7. Objects in General
8. Customized QWERTY/Mouse Interaction and Program Logic
9. Outro
Session 3: What's Really Going on Inside Max (June 12, 2018)
Now that you’ve got the flavor of Max and you know how to put together your own patches, we’re going to dive deep into what’s really happening inside the computer as Max runs your patches. This session will cover a deeper understanding of Max Data and Data Flow.
12 lessons
1. Logic and Scheduling of MSP's Signal Processing
2. Digital Sampling & Sampling rate
3. The life of a gain~ object
4. The DAG of Signal Connections
5. Logic and Scheduling of MAX Events
6. Right to Left Order
7. Arithmetic Operators
8. MAX objects for Control Flow & Scheduling
9. Example: A Simple Drum Machine
10. Logic and Scheduling of Jitter Events
11. MAX's Data Types in Depth
12. Outro
Session 4: Getting Mathematical: Arithmetic, Logic, Matrices (June 19, 2018)
In this session we’re going to get mathematical. We will cover integer and floating point numbers, randomness and noise, human perception(and why you often want to use a log scale when dealing with frequency or amplitude), Boolean true/false logic, and jitter matrices.
16 lessons
1. Intro: Elementary Arithmetic in Max, MSP, and Jitter
2. Linear Interpolation in Max, MSP, and Jitter
3. Clipping in Max, MSP, and Jitter
4. Random Numbers and Noise
5. Logarithmic Scales Approximating Human Perception: Decibels & MIDI Note Numbers
6. Random Melodies on Linear vs Log Frequency Scales
7. Boolean Logic (True/False)
8. Dividing the Octave in Twelve
9. The Coll Object
10. Musical Scales, Keys, Octave Equivalence
11. Example: Playing Scales from Coll with Amplitude-Enveloped Sawtooth Notes
12. Repeating a Scale at the Octave
13. The Harmonic Series
14. Octaves, Half Steps, Cents, and Frequency Ratios
15. Different Kinds of Musical Fifths and Thirds
16. Outro
Session 5: Structuring Non-Trivial Patches (June 26, 2018)
This session will cover best practices for naming, using sub-patchers and encapsulation in your patchers, as well as alternate data paths for larger programs.
20 lessons
1. Intro
2. Wobble Bass Example
3. Techno~ and Finding a Need for Encapsulation
4. Subpatchers and Encapsulation
5. Sync Signals and Getting a Bang on Every Loop
6. Programming techno~ with Max Messages
7. Bpatchers: Subpatchers you can see inside
8. Philosophies of Encapsulation, Naming, and Development
9. Presets and Snapshots
10. List Processing with Message Boxes
11. List-Processing Objects in Max: Pack, Route and Friends
12. The Sprintf Object
13. List Processing with the ZL Object(s)
14. Note Lists, Round Robin Scheduling and Routing by Data Type
15. Recording and Playing Back Sound in Realtime with Buffer~
16. Global and Local Variables with Value and PV
17. Using Coll (Collection) as a List of Notes
18. Storing Data with the Dict ("Dictionary") Object
19. Send and Receive
20. Outro
Session 6: Abstractions, Files, and How Max Works (July 3, 2018)
This session will recap and review the concepts we've learned in Max, Jitter, and MSP. It will also cover abstractions, Bpatchers, and collections.
16 lessons
1. Where Max Keeps and Looks for Files (the Search Path)
2. Kinds of Files to Put in Your Search Path
3. How to Read and Write the Kinds of Files Max Typically Uses
4. Abstractions: Philosophy and Mechanism
5. AV Sine Synth Part 1: Synthesizing Sine Wave Sounds
6. AV Sine Synth Part 2: Graphically Drawing a Sine Wave
7. AV Sine Synth Part 3: Interface and Abstraction for Drawing Squiggles and Clearing
8. AV Sine Synth Part 4: Defining a Mapping from Blip Parameters to Squiggle Parameters
9. AV Sine Synth Part 5: Controlling it with a Generative Process
10. AV Sine Synth Part 6: Overlapping Notes and Polyphony
11. Review: How Max Works (How the Interpreter Runs Your Patch)
12. Exceptions to Max’s Normal Evaluation Rules
13. How MSP Works: I/O and Signal Vectors
14. Jitter Works Just Like Max
15. Scheduling in Max, MSP and Jitter
16. Outro
Session 7: Data Types in Depth (July 10, 2018)
This session goes into data types in depth, giving you a deeper understanding of MAX.
14 lessons
1. Intro to the the Max Type Conversion Table
2. Type Conversions 1: From Bang
3. Type Conversions 2: From Integer
4. Type Conversions 3: From Float
5. Type Conversions 4: From Symbol
6. Type Conversions 5: From List
7. Type Conversions 6: From Signal
8. Type Conversions 7: From Matrix
9. Matrix Processing
10. Displaying Matrices with jit.window
11. RGB and HSV Color Spaces
12. Video Analysis with Centroid Tracking
13. Directly Converting Pixel Values to Audio
14. Rastograms
Session 8: Interactivity (July 17, 2018)
This session will explore how to bring interactivity into your work. We will look at the mechanics of using an external device I/O through Max: MIDI, OSC, HID, what objects you use, and typical usage patterns.
19 lessons
1. Intro
2. Examining the Messages a MIDI Controller Outputs
3. Abstracting a MIDI Controller
4. Mapping a MIDI Device to Control a Patch
5. Virtually Representing a MIDI Device with a Graphical Interface, Part 1
6. Virtually Representing a MIDI Device with a Graphical Interface, Part 2
7. Switching to a Different MIDI Device with the Power of Abstraction
8. Open Sound Control
9. Making Your Own Wifi Network and Other Advanced Networking Topics
10. Sending OSC from a Phone
11. Connecting Arduino with Max
12. Glue Code: Controlling an Arduino from a Phone via Max
13. Glue Code 2: Searching the Web with a MIDI Pad Controller
14. Interfacing Max with Modular Synthesizers
15. Interfacing Max with HID Devices
16. Sample-Synchronous Processing 1: Motivation and Simple Examples
17. Sample-Synchronous Processing 2: Programming Techniques
18. Sample-Synchronous Processing 3: Boolean Signal Logic
19. Outro
Session 9: Max programming paradigms (July 24, 2018)
This session will cover multiple instances of abstraction, making multiples with poly~, finite state machines, bottom-up and top-down design and development, and cross-modal mappings.
17 lessons
1. Session Intro and List of Topics
2. Abstractions as Objects: Naming, Help Patch, Inlets and Outlets
3. Abstractions as Objects: Arguments
4. Abstractions as Objects: Allowing Multiple Instances
5. Abstractions as Objects: Coordinating Multiple Instances with Gating and Delegation
6. Abstractions as Objects: Coordinating Muliple Instances with Poly~
7. Using "Midinote" with Poly~ if You Don't Know the Duration in Advance
8. Constraint-Style Programming with "Set"
9. Non-Realtime Processing with Uzi
10. Recording a Movie in Realtime and Non-Realtime
11. Using Max to Write, Save and Load Max Patches
12. Example: Ensemble Feedback Instruments
13. Example: Ensemble Feedback Instruments (Continued)
14. Global Transport and Time Value Syntax
15. 3D Graphics with OpenGL
16. Top-Down and Bottom-Up Programming
17. Outro
Session 10: Integrating MAX with Other Software and Languages (July 31, 2018)
This session will discuss where you can take your Max programming, integrating Max with other computer paradigms, final thoughts, and extra resources, tools, and examples.
13 lessons
1. Max for Live: Integrating Max with Ableton Live
2. Hosting Plugins in Max
3. Snapshots: Saving and Recalling Plugin Parameters and other Data
4. Maxurl: Connecting Max to the World Wide Web via HTTP
5. The js Object: Javascript in Max
6. The mxj and mxj~ Objects: Java in Max
7. The gen~ Object: Efficient Single-Sample Signal Processing
8. The jit.gl.slab Object: GPU "Shader" Programming in GLSL
9. The jit.gl.lua Object: Scripting OpenGL and Jitter with Lua
10. Writing Max Externals in C
11. Using Max with Version Control Software
12. How to Report Bugs
13. Outro
Reviews
Show off your Certificate of Accomplishment

Verify Your Achievements
Whenever you complete a course as a premium member, you can earn a verified Statement of Accomplishment. These statements are proof that you completed an online course on our platform.

Easily Shareable
Using its unique link, you can share your statement with everyone from future employers and schools, to friends, family, and colleagues. It's the perfect tool to help you land that new job or promotion, apply to college, or simply share your achievements with the world.

Learning Outcomes

Below you will find an overview of the Learning Outcomes you will achieve as you complete this course.

Instructors & Guests
What You Need to Take This Course
  • Equipment: a computer that can run Max, and (ideally) also external controller hardware like a MIDI keyboard, Monome, Wacom tablet, etc.
  • Software: Max (Premium members can get a $40 discount off the first year of an annual Max subscription. See Course Resources for the coupon code)
Additional Information

Please note: Taking part in a Kadenze course as a Premium Member, does not affirm that the student has been enrolled or accepted for enrollment by Stanford University.

Peer Assessment Code of Conduct: Part of what makes Kadenze a great place to learn is our community of students. While you are completing your Peer Assessments, we ask that you help us maintain the quality of our community. Please:

  • Be Polite. Show your fellow students courtesy. No one wants to feel attacked - ever. For this reason, insults, condescension, or abuse will not be tolerated.
  • Show Respect. Kadenze is a global community. Our students are from many different cultures and backgrounds. Please be patient, kind, and open-minded when discussing topics such as race, religion, gender, sexual orientation, or other potentially controversial subjects.
  • Post Appropriate Content. We believe that expression is a human right and we would never censor our students. With that in mind, please be sensitive of what you post in a Peer Assessment. Only post content where and when it is appropriate to do so.

Please understand that posts which violate this Code of Conduct harm our community and may be deleted or made invisible to other students by course moderators. Students who repeatedly break these rules may be removed from the course and/or may lose access to Kadenze.

Students with Disabilities: Students who have documented disabilities and who want to request accommodations should refer to the student help article via the Kadenze support center. Kadenze is committed to making sure that our site is accessible to everyone. Configure your accessibility settings in your Kadenze Account Settings.