A newer version of Max is available. Click here to access the latest documentation.
Max for Live for Pluggo Developers
Max was able to create plug-ins for VST, Audio Unit, and RTAS using the Pluggo system first introduced in 1999. Ten years later, Pluggo has been replaced by Max for Live. Here are some tips about Max for Live for those familiar with Pluggo make the transition to the new system.
Audio I/O
Max for Live uses the same objects as Pluggo for audio I/O, plugin~ for audio input and plugout for audio input. However, all audio I/O in Max for Live is currently stereo, as is true for all Live devices.
MIDI I/O
Max for Live uses the standard Max MIDI objects for MIDI input and output, which are much easier to work with than plugmidiin and plugmidiout used by Pluggo.
A very useful new object called midiselect works with midiin and midiout for creating MIDI effects that filter some but not all MIDI.
Live does not currently support polyphonic aftertouch (received by the polyin~ object).

Defining Plug-in Types
Pluggo used the keyword synth in a plugconfig script to tell the host application it was an instrument. In Max for Live, you create new devices by modifying existing ones. There are three default Max devices: Max Audio Effect with an audio input and output, Max MIDI Effect with a MIDI input and MIDI output, and Max Instrument with a MIDI input and audio output. A new Max device saved from an existing device always shares the same device type.
Defining Latency
In Pluggo, you could define the fixed latency of a plug-in using the latency keyword in a plugconfig script. In Max for Live, you define a device's latency using the Patcher Inspector.
Parameters
Parameters in Pluggo were most often defined with the pp object. This object took a number of arguments for defining a parameter's name, minimum, maximum, and so forth. The pp object stored 32-bit floating point values (the standard data type in the original VST specification). You would connect pp objects to Max user interface objects in a loop. Something similar to pp can be done with pattr objects in Max for Live , which support any data type you wish to use.
It's more likely you'll want to use the new set of Live UI objects such as live.dial integrate user interface and parameter storage. Parameter settings are configured using the Parameter tab of the Inspector on these objects. Here are the Max for Live equivalents of pp object options:
Parameter Number
The parameter number of a pp object determined the order in which preset data from a host would be output, as well as the order that the parameter would appear in an automatically generated VST interface. In Max for Live, the equivalent attribute for parameter-aware objects is called Parameter Order. There is no concept of an automatically-generated plug-in user interface.
Parameter Name
There are two names for each parameter in Max for Live, the long name and short name. Long names are described in more detail here
hidden
If a pp object used the hidden keyword, the parameter would not be automated by the host. The hidden attribute of a parameter-aware object is equivalent.
fixed
If a pp object used the fixed keyword, the parameter would not be changed by Pluggo's auto-randomization feature. Auto-randomization is not currently implemented in Max for Live.
modable
The modable keyword for the pp object was intended to be used in conjunction with the hidden keyword, to permit non-automating parameters to be changed by other Pluggo modulator plug-ins. In Max for Live, only automatable parameters can be changed by other plug-ins using the Live API and the live.remote~ object. Max for Live has a separate concept of modulation-enabled parameters that can be changed by Live's clip modulation feature.
meta
The meta keyword for the pp object was used to identify parameters that could be changed by other parameters. This feature existed specifically to appease Apple's Audio Unit validation tool. Live does not require meta-parameters to be explicitly identified.
c2-c4
The c2, c3, and c4 keywords were used to specify optional colors for a parameter's display in the automatically generated user interface. This feature does not apply to Max for Live.
minimum and maximum
Set a Max for Live parameter's range using the Minimum and Maximum attributes in the Inspector .
unit label
The labels for unit styles for Live UI object parameters are set using the UI object's Inspector .
choices
The pp object used the choices keyword followed by a list of items to create a parameter that displayed a list of text items. To set a list of items for a Max for Live parameter's value, use the live.menu or live.tab object, and set the Range/Enum attribute in the object's Inspector to reflect the choices you want to use.
db
The pp object used the db keyword to specify that a parameter represented decibel units of amplitude. To use decibel units for a Max for Live parameter, set the Unit Style attribute in the object's Inspector to deciBel.
Storing Presets
To store an initial program in a device, set the Parameter Mode Enable and Initial Valueattributes for each parameter-aware object using the object's Inspector . There is no support for storing additional programs in Max for Live devices. Make presets for your device by creating them in Live.
More information about presets for Max devices.
Other plugconfig Features
The following plugconfig keywords do not apply to Max for Live: usedefault, useviews, numprograms, preempt, package, oversampling, sigvschange, sigvsdefault, autosize, setsize, nohintarea, welcome, defaultview, defaultpage, addview, dragscroll, infotext, infopict, setprogram, meter, hintfg, hintbg, noinfo, accurate, nonrealtime, vendor, product, category, tailsize, version, surround.