Max API  8.0.2
Objects in C: A Roadmap

Max has an extensive API for developing new objects in C.Before you start learning about it, however, we would like to save you time and make sure you learn the minimum about the API for what you need to do. Therefore, we've made a brief list of application areas for object development along with the sections of this document with which you'll probably want to become familiar.

Max Objects

For logic and arithmetic objects, such as new mathematical functions or more complex conditional operations than what is offered in Max, it should be sufficient to read the Anatomy of a Max Object section.

For objects that use Data Structures, you'll want to read, in addition, the Atoms and Messages section to learn about Max's basic mechanisms for representing and communicating data.

If you are interested in writing interfaces to operating system services, you may need to learn about Max's Threading model and The Scheduler.

For objects that deal with time and timing you'll want to learn about The Scheduler. If you're interested in tempo-based scheduling, you'll want to read the section on ITM and look at the delay2 example.

To create new user interface gadgets, you'll want to read all of the above, plus the section on Attributes and the Anatomy of a UI Object. The section on JGraphics will also be helpful.

To create objects with editing windows, things are much more complicated than they used to be. You'll need to learn everything about UI objects, plus understand the scripto example object project.

For patcher scripting and interrogation objects, the section on Scripting the Patcher, plus a few of the examples will be very helpful. It is also helpful to have a clear conceptual understanding of the patcher, which might be aided by reading the patcher scripting sections of the js object documentation.

Max 6 introduced support for passing structured data with the Dictionary Passing API.

MSP Objects

To create audio filters and signal generators, read the Anatomy of a Max Object, then read the Anatomy of a MSP Object section. MSP objects make use of Creating and Using Proxies when receiving multiple audio inputs, so familiarity with that concept could be helpful.

For audio objects that output events (messages), you'll need to use the services of The Scheduler, so we suggest reading about that.

For UI objects for analyzing and controlling audio, you'll need to learn about regular MSP objects as well as Max UI objects.

Information on updating MSP objects from Max 5 or earlier for 64-bit audio (introduced in Max 6) is located in Appendix: Updating Externals for Max 6.

Max 8 introduced MC for working with multi-voice/multi-channel signals. More information is available in the MC chapter.

Jitter Objects

The Jitter Object Model outlines some important basic information about Jitter's flexible object model. Jitter Max Wrappers describes how to write Max wrapper objects that contain Jitter objects for use in the Max patcher world. Matrix Operator QuickStart and Matrix Operator Details describe how to create a particular type of Jitter object called matrix operators, or MOPs. OB3D QuickStart and OB3D Details describe how to create OB3D Jitter objects for use in rendering OpenGL scenes. Scheduler and Low Priority Queue Issues covers important threading and timing issues when building Jitter objects. Jitter Object Registration and Notification explains how Jitter objects can be registered by name and notify clients as they change or important events occur. Using Jitter Objects in C provides some examples of how to instantiate and take advantage of Jitter objects from C, just as one would from Java, Javascript, or the patcher. Finally, The JXF File Specification and Jitter Networking Specification contain information relating to the data formats involved in the JXF file format and Jitter networking protocols, respectively.