A newer version of Max is available. Click here to access the latest version of the Max documentation

omx.comp~

OctiMax Compressor

Description

omx.comp~ is a fully-featured signal compressor with limiting, gating, sidechain, and dual-band options.

Arguments

None.

Attributes

Common Box Attributes

annotation [symbol]

Sets the text that will be displayed in the Clue window when the user moves the mouse over the object.

background [int] (default: 0)

Adds or removes the object from the patcher's background layer. background 1 adds the object to the background layer, background 0 removes it. Objects in the background layer are shown behind all objects in the default foreground layer.

color [4 floats]

Sets the color for the object box outline.

fontface [int]

Sets the type style used by the object. The options are:

plain
bold
italic
bold italic

Possible values:

0 = 'regular'
1 = 'bold'
2 = 'italic'
3 = 'bold italic'

fontname [symbol]

Sets the object's font.

fontsize [float]

Sets the object's font size (in points).

Possible values:

'8'
'9'
'10'
'11'
'12'
'13'
'14'
'16'
'18'
'20'
'24'
'30'
'36'
'48'
'64'
'72'

hidden [int] (default: 0)

Toggles whether an object is hidden when the patcher is locked.

hint [symbol]

Sets the text that will be displayed in as a pop-up hint when the user moves the mouse over the object in a locked patcher.

ignoreclick [int] (default: 0)

Toggles whether an object ignores mouse clicks in a locked patcher.

patching_rect [4 floats] (default: 0. 0. 100. 0.)

Sets the position and size of the object in the patcher window.

position [2 floats]

g/s(set)

Sets the object's x and y position in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its size unchanged.

presentation [int] (default: 0)

Sets whether an object belongs to the patcher's presentation.

presentation_rect [4 floats] (default: 0. 0. 0. 0.)

Sets the x and y position and width and height of the object in the patcher's presentation, leaving its patching position unchanged.

rect [4 floats]

g/s(set)

Sets the x and y position and width and height of the object in both patching and presentation modes (if the object belongs to its patcher's presentation).

size [2 floats]

g/s(set)

Sets the object's width and height in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its position unchanged.

textcolor [float]

Sets the color for the object's text in RGBA format.

textjustification [int]

Text Justification

Possible values:

0 = 'left'
1 = 'center'
2 = 'right'

varname [symbol]

Sets the patcher's scripting name, which can be used to address the object by name in pattr, scripting messages to thispatcher, and the js object.

Messages

agcEnabled

Arguments

compression-enable-flag [int]
The word agcEnabled, followed by a 1 or 0, enables or disables the compressor.

agcThreshold

Arguments

compression-threshold [float]
The word agcThreshold, followed by a number, sets the compressor threshold (in dB below full scale). This is the main compression threshold. Any signal above the threshold will be reduced, and any signal below the threshold will be amplified, according to the range and ratio parameters.

attack

Arguments

attack-rate [int]
The word attack, followed by a number, sets the rate at which the compressor is engaged when the signal level exceeds the agcThreshold. The value range is 0-150 on a logarithmic scale, with larger values indicating faster attack.

choosePreset

Arguments

preset-number [int]
The word choosePreset, followed by a number in the range 0-4, selects a preset for the omx.comp~ object. These presets are to be considered "starting points" and should be tweaked for your particular purpose or desired sound. The preset options are:

0: Guitar
1: Bass
2: Vocal
3: Drums
4: Program Material - An attempt at smooth "gain riding" of mixed program material as well as can be done with a non-multiband processor.

bypass

Arguments

bypass-flag [int]
The word bypass followed by a non-zero number will output the dry unchanged input signal straight out the outlet without any processing; followed by a 0, will output the signal effected by omx.comp~.

delay

Arguments

delay-time [int]
The word delay, followed by a number, sets the sidechain delay time (in milliseconds). This emulates the attack characteristics of vintage "opto" compressors, and similar effects. The delay is applied to the control signal only, and hence may result in large peaks at transients.

dualBandEnabled

Arguments

crossover-enable-flag [int]
The word dualBandEnabled, followed by a 1 or 0, turns dual band mode on or off. In dual band, a crossover filter around 200hz splits the audio into two bands, which are compressed separately. This can reduce bass pumping and other artifacts of wide-band compression.

channelCoupling

Arguments

keying-source (0, 1, or 2) [int]
The word channelCoupling, followed by a number, sets the gain control source as follows: 0 = stereo, 1 = left, 2 = right. In stereo mode, the gain control signal is derived from whichever channel is loudest, unlike in left or right mode where the gain control signal will only be derived from the selected channel. This can be used for "keying" or "ducking" effects, where the energy of one sound modulates the level of another.

gatingLevel

Arguments

release-gate-threshold [float]
The word gatingLevel, followed by a number, sets the release gate threshold (in dB below full scale). When the signal is below this threshold, the release time of the compressor will be slowed by a factor of 3. See freezeLevel.

freezeLevel

Arguments

release-action-threshold [float]
The word freezeLevel, followed by a number, sets the freeze threshold (in dB below full scale). When the signal is below this threshold, the compressor release action will be suppressed, and the gain will remain constant. In normal operation, release action takes place when the signal is below the compression threshold, increasing the gain until the signal returns to its full-scale, uncompressed level. If there is no usable signal present, this can have the effect of simply amplifying the noise floor. Release gate and freeze can suppress gain recovery to avoid this condition.

meterData

The word meterData will cause output (by instantaneous command as opposed to metering-interval described by the meterRate message) of values which describe the current state of various internal gain levels of the compressor, and can be used to drive GUI objects to provide visual feedback. omx.comp~ sends a list of six integers, describing compressor gain (left, right), noise gate gain (left, right), and limiter gain (left, right).

meterRate

Arguments

data-output-interval [int]
The word meterRate, followed by a number, specifies the interval (in milliseconds) at which the meter data described above will be sent.

meters

Arguments

metering-enable-flag [int]
The word meters, followed by a 1 or 0, turns the metering output on or off. When metering is on, a list of values will be sent from the rightmost outlet at a rate specified by the meterRate message. These values describe the current state of various internal gain levels of the compressor, and can be used to drive GUI objects to provide visual feedback. omx.comp~ sends a list of six integers, describing compressor gain (left, right), noise gate gain (left, right), and limiter gain (left, right).

limEnabled

Arguments

peak-limiter-flag [int]
The word limEnabled, followed by a 1 or 0 turns the peak-limiter on or off.

limMode

Arguments

response-mode-flag [int]
The word limMode, followed by a number, sets the limiter response mode as follows: 0 = punchy, 1 = smooth. Punchy response yields extremely short attack and release times, useful for transparent limiting, or to create loudness. However, if over-used, intermodulation distortion may result. Smooth response uses longer attack and release times. The result is still a fast look-ahead limiter, but with less intermodulation distortion and less punch.

ngEnabled

Arguments

noise-gate-flag [int]
The word ngEnabled, followed by a 1 or 0, turns the noise gate on or off. A noise gate is effective for reducing background hiss when no other signal is present. Here, it's implemented as a downward expander with a ratio of 2:1.

ngThreshold

Arguments

noise-gate-threshold [float]
The word ngThreshold, followed by a number, sets the threshold level (in dB below full scale) at which the noise gate will be engaged.

progressiveRelease

Arguments

release-mode-flag [int]
The word ProgressiveRelease, followed by a 1 or 0, enables or disables the Progressive Release mode, which causes the compressor to release faster during heavy gain reduction. This means that the audio will sound more compressed when the input signal is louder. This can be used to create an illusion of dynamics. It is especially useful with the ratio set to Infinite:1, which could sound over-compressed without this option.

saveSettings

The word saveSettings causes all parameter values to be sent out the third outlet.

sidechainFilterEnabled

Arguments

keying-attenuation-flag [int]
The word sidechainFilterEnabled, followed by a 1 or 0, enables or disables an attenuation filter in the upper midrange that makes the compressor less sensitive to vocal signals, and generally produces a more gentle response. This filter is only applied internally, to the control signal. Note that it may cause more output overshoots, where the signal output level exceeds 0dB.

range

Arguments

maximum-gain-amplification [float]
The word range, followed by a number, sets the maximum amount of gain amplification allowed in dB. This limits the gain that is applied when the signal is below the compression threshold. Note that this limiting takes place before the ratio is applied. For example, if the range is set to 24 dB, and the ratio is 2:1, the most gain amplification you can get (after the ratio is applied) is in fact 12 dB.

ratio

Arguments

gain-reduction-ratio-numerator [int]
The word ratio, followed by a number, sets the numerator of the compressor gain reduction ratio, from 1:1 to Infinite:1.

release

Arguments

release-rate [int]
The word release, followed by a number, sets the rate at which the compressor releases its gain adjustment when the signal level no longer exceeds the agcThreshold. The value range is 0-150 on a logarithmic scale, with larger values indicating faster release. This rate can be modified by the release gate and freeze thresholds.

signal

Audio input, the signal or pair of signals to be compressed.

smoothGain

Arguments

smoothing-flag [int]
The word smoothGain, followed by a 1 or 0, enables or disables gain smoothing. This applies a low-pass filter to the control signal, and is useful both to prevent artifacts (gain fluttering) from high attack/release rates, and to intentionally make the compressor sluggish, adding extra "snap" to transients.

Output

list

Out right outlet: when metering is turned on (via the meters message), a list will be output describing various internal levels. See meters, above.

signal

Out leftmost two outlets: the input signals (if present), with dynamics processing applied.

See Also

Name Description
Sound Processing Techniques Sound Processing Techniques
omx.4band~ OctiMax 4-band Compressor
omx.5band~ OctiMax 5-band Compressor
omx.peaklim~ OctiMax Peak Limiter
MSP Compression Tutorial 2: Basic Compression MSP Compression Tutorial 2: Basic Compression
MSP Compression Tutorial 3: Tweaking Compression MSP Compression Tutorial 3: Tweaking Compression
MSP Compression Tutorial 4: Compression on Real Instruments MSP Compression Tutorial 4: Compression on Real Instruments
MSP Compression Tutorial 10: Controlling Feedback MSP Compression Tutorial 10: Controlling Feedback