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.
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.
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).
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.
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 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.
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.
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.