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

omx.comp~

OctiMax Compressor

Description

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

Arguments

None.

Messages

agcEnabled compression-enable-flag (0 or 1) [int]
The word agcEnabled, followed by a 1 or 0, enables or disables the compressor.
agcThreshold compression-threshold (dB) [int]
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 attack-rate (0 through 150) [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 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 bypass-flag (0 or nonzero) [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 delay-time (milliseconds) [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 crossover-enable-flag (0 or 1) [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 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 release-gate-threshold (dB) [int]
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 release-action-threshold (dB) [int]
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 data-output-interval (milliseconds) [int]
The word meterRate, followed by a number, specifies the interval (in milliseconds) at which the meter data described above will be sent.
meters metering-enable-flag (0 or 1) [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 peak-limiter-flag (0 or 1) [int]
The word limEnabled, followed by a 1 or 0 turns the peak-limiter on or off.
limMode response-mode-flag (0 or 1) [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 noise-gate-flag (0 or 1) [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 noise-gate-threshold (dB) [int]
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 release-mode-flag (0 or 1) [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 keying-attenuation-flag (0 or 1) [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 maximum-gain-amplification (dB) [int]
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 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 release-rate (0 through 150) [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 smoothing-flag (0 or 1) [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.

Information for box attributes common to all objects

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.

Examples

See Also

Name Description
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