<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<?xml-stylesheet href="./_c74_ref.xsl" type="text/xsl"?>

<!--This is an automatically generated file. DO NOT EDIT THIS FILE DIRECTLY. Rather, use the _ref.xml files found in the 'edits' folder.-->
<c74object name="omx.comp~" module="msp" category="MSP Dynamics">
	<digest>
		OctiMax Compressor
	</digest>
	<description>
		<o>omx.comp~</o> is a fully-featured signal compressor with limiting, gating, sidechain, and dual-band options.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
		<metadata name="tag">
			MSP Dynamics
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="signal">
			<digest>
				(signal) Left Input Channel
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="signal">
			<digest>
				(signal) Right Input Channel
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="signal">
			<digest>
				(signal) Left Output Channel
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="signal">
			<digest>
				(signal) Right Output Channel
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="2" type="list">
			<digest>
				(list) Parameter Output
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="3" type="list">
			<digest>
				(list) Meter Output
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg id="0" name="OBJARG_NAME" type="OBJARG_TYPE" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="agcEnabled">
			<arglist>
				<arg name="compression-enable-flag" optional="0" type="int" />
			</arglist>
			<digest>
				The word <m>agcEnabled</m>, followed by a 1 or 0, enables or disables the compressor
			</digest>
			<description>
				The word <m>agcEnabled</m>, followed by a 1 or 0, enables or disables the compressor.
			</description>
		</method>
		<method name="agcThreshold">
			<arglist>
				<arg name="compression-threshold" optional="0" units="db" type="float" />
			</arglist>
			<digest>
				The word <m>agcThreshold</m>, followed by a number, sets the compressor threshold (in dB below full scale)
			</digest>
			<description>
				The word <m>agcThreshold</m>, 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.
			</description>
		</method>
		<method name="attack">
			<arglist>
				<arg name="attack-rate" optional="0" type="int" />
			</arglist>
			<digest>
				The word <m>attack</m>, followed by a number, sets the rate at which the compressor is engaged when the signal level exceeds the agcThreshold
			</digest>
			<description>
				The word <m>attack</m>, 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.
			</description>
		</method>
		<method name="choosePreset">
			<arglist>
				<arg name="preset-number" optional="0" type="int" />
			</arglist>
			<digest>
				Select a preset
			</digest>
			<description>
				The word <m>choosePreset</m>, followed by a number in the range 0-4, selects a preset for the <o>omx.comp~</o> object. These presets are to be considered &quot;starting points&quot; and should be tweaked for your particular purpose or desired sound. The preset options are:
				<br />
				<br />
				0: Guitar
				<br />
				1: Bass
				<br />
				2: Vocal
				<br />
				3: Drums
				<br />
				4: Program Material - An attempt at smooth &quot;gain riding&quot; of mixed program material as well as can be done with a non-multiband processor.
			</description>
		</method>
		<method name="bypass">
			<arglist>
				<arg name="bypass-flag" optional="0" type="int" />
			</arglist>
			<digest>
				The word <m>bypass</m> 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 <o>omx.comp~</o> 
			</digest>
			<description>
				The word <m>bypass</m> 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 <o>omx.comp~</o>.
			</description>
		</method>
		<method name="delay">
			<arglist>
				<arg name="delay-time" optional="0" units="ms" type="int" />
			</arglist>
			<digest>
				Set the sidechain delay time
			</digest>
			<description>
				The word <m>delay</m>, followed by a number, sets the sidechain delay time (in milliseconds). This emulates the attack characteristics of vintage &quot;opto&quot; compressors, and similar effects. The delay is applied to the control signal only, and hence may result in large peaks at transients.
			</description>
		</method>
		<method name="dualBandEnabled">
			<arglist>
				<arg name="crossover-enable-flag" optional="0" type="int" />
			</arglist>
			<digest>
				Disable/enable dual band mode
			</digest>
			<description>
				The word <m>dualBandEnabled</m>, 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.
			</description>
		</method>
		<method name="channelCoupling">
			<arglist>
				<arg name="keying-source (0, 1, or 2)" optional="0" type="int" />
			</arglist>
			<digest>
				The word <m>channelCoupling</m>, followed by a number, sets the gain control source as follows: 0 = stereo, 1 = left, 2 = right
			</digest>
			<description>
				The word <m>channelCoupling</m>, 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 &quot;keying&quot; or &quot;ducking&quot; effects, where the energy of one sound modulates the level of another.
			</description>
		</method>
		<method name="gatingLevel">
			<arglist>
				<arg name="release-gate-threshold" optional="0" units="db" type="float" />
			</arglist>
			<digest>
				Set the release gate threshold
			</digest>
			<description>
				The word <m>gatingLevel</m>, 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 <m>freezeLevel</m>.
			</description>
		</method>
		<method name="freezeLevel">
			<arglist>
				<arg name="release-action-threshold" optional="0" units="db" type="float" />
			</arglist>
			<digest>
				The word <m>freezeLevel</m>, followed by a number, sets the freeze threshold (in dB below full scale)
			</digest>
			<description>
				The word <m>freezeLevel</m>, 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.
			</description>
		</method>
		<method name="meterData">
			<arglist />
			<digest>
				Manually cause metering output
			</digest>
			<description>
				The word <m>meterData</m> will cause output (by instantaneous command as opposed to metering-interval described by the <m>meterRate</m> 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. <o>omx.comp~</o> sends a list of six integers, describing compressor gain (left, right), noise gate gain (left, right), and limiter gain (left, right).
			</description>
		</method>
		<method name="meterRate">
			<arglist>
				<arg name="data-output-interval" optional="0" units="ms" type="int" />
			</arglist>
			<digest>
				Set the metering output interval
			</digest>
			<description>
				The word <m>meterRate</m>, followed by a number, specifies the interval (in milliseconds) at which the meter data described above will be sent.
			</description>
		</method>
		<method name="meters">
			<arglist>
				<arg name="metering-enable-flag" optional="0" type="int" />
			</arglist>
			<digest>
				Disable/enable the metering output
			</digest>
			<description>
				The word <m>meters</m>, 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 <m>meterRate</m> 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. <o>omx.comp~</o> sends a list of six integers, describing compressor gain (left, right), noise gate gain (left, right), and limiter gain (left, right).
			</description>
		</method>
		<method name="limEnabled">
			<arglist>
				<arg name="peak-limiter-flag" optional="0" type="int" />
			</arglist>
			<digest>
				The word <m>limEnabled</m>, followed by a 1 or 0 turns the peak-limiter on or off
			</digest>
			<description>
				The word <m>limEnabled</m>, followed by a 1 or 0 turns the peak-limiter on or off.
			</description>
		</method>
		<method name="limMode">
			<arglist>
				<arg name="response-mode-flag" optional="0" type="int" />
			</arglist>
			<digest>
				Set the limiter response mode
			</digest>
			<description>
				The word <m>limMode</m>, 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.
			</description>
		</method>
		<method name="ngEnabled">
			<arglist>
				<arg name="noise-gate-flag" optional="0" type="int" />
			</arglist>
			<digest>
				Disable/enable the noise gate
			</digest>
			<description>
				The word <m>ngEnabled</m>, 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.
			</description>
		</method>
		<method name="ngThreshold">
			<arglist>
				<arg name="noise-gate-threshold" optional="0" units="db" type="float" />
			</arglist>
			<digest>
				Set the noise gate threshold level
			</digest>
			<description>
				The word <m>ngThreshold</m>, followed by a number, sets the threshold level (in dB below full scale) at which the noise gate will be engaged.
			</description>
		</method>
		<method name="progressiveRelease">
			<arglist>
				<arg name="release-mode-flag" optional="0" type="int" />
			</arglist>
			<digest>
				Disable/enable progressive release mode
			</digest>
			<description>
				The word <m>ProgressiveRelease</m>, 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.
			</description>
		</method>
		<method name="saveSettings">
			<arglist />
			<digest>
				Send all parameter values out the third outlet
			</digest>
			<description>
				The word <m>saveSettings</m> causes all parameter values to be sent out the third outlet.
			</description>
		</method>
		<method name="sidechainFilterEnabled">
			<arglist>
				<arg name="keying-attenuation-flag" optional="0" type="int" />
			</arglist>
			<digest>
				Disable/enable sidechain filter
			</digest>
			<description>
				The word <m>sidechainFilterEnabled</m>, 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.
			</description>
		</method>
		<method name="range">
			<arglist>
				<arg name="maximum-gain-amplification" optional="0" units="db" type="float" />
			</arglist>
			<digest>
				Set the maximum gain
			</digest>
			<description>
				The word <m>range</m>, 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.
			</description>
		</method>
		<method name="ratio">
			<arglist>
				<arg name="gain-reduction-ratio-numerator" optional="0" type="int" />
			</arglist>
			<digest>
				Sets the numerator of the compressor gain reduction ratio
			</digest>
			<description>
				The word <m>ratio</m>, followed by a number, sets the numerator of the compressor gain reduction ratio, from 1:1 to Infinite:1.
			</description>
		</method>
		<method name="release">
			<arglist>
				<arg name="release-rate" optional="0" type="int" />
			</arglist>
			<digest>
				Set the compressor release rate
			</digest>
			<description>
				The word <m>release</m>, 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.
			</description>
		</method>
		<method name="signal">
			<arglist />
			<digest>
				Audio input
			</digest>
			<description>
				Audio input, the signal or pair of signals to be compressed.
			</description>
		</method>
		<method name="smoothGain">
			<arglist>
				<arg name="smoothing-flag" optional="0" type="int" />
			</arglist>
			<digest>
				Disable/enable gain smoothing
			</digest>
			<description>
				The word <m>smoothGain</m>, 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 &quot;snap&quot; to transients.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<!--EXAMPLE-->
	<examplelist>
		<example />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="omx.4band~" />
		<seealso name="omx.5band~" />
		<seealso name="omx.peaklim~" />
		<seealso name="17_msp_compress_02" module="msp" type="tutorial" />
		<seealso name="17_msp_compress_03" module="msp" type="tutorial" />
		<seealso name="17_msp_compress_04" module="msp" type="tutorial" />
		<seealso name="17_msp_compress_10" module="msp" type="tutorial" />
	</seealsolist>
	<misc name="Output">
		<entry name="signal">
			<description>
				Out leftmost two outlets: the input signals (if present), with dynamics processing applied.
			</description>
		</entry>
		<entry name="list">
			<description>
				Out right outlet: when metering is turned on (via the <m>meters</m> message), a list will be output describing various internal levels. See meters, above.
			</description>
		</entry>
	</misc>
</c74object>
