<?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="vectral~" module="msp" category="MSP FFT">
	<digest>
		Vector-based envelope follower
	</digest>
	<description>
		Use the <o>vectral~</o> object to filter frame-based signal data such as the output of the <o>fft~</o> object.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
		<metadata name="tag">
			MSP FFT
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="signal">
			<digest>
				(signal) Output Index
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="signal">
			<digest>
				(signal) Input Index
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="2" type="signal">
			<digest>
				(signal) Input Value
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="signal">
			<digest>
				(signal) Output Value
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="vector-size" optional="1" type="int">
			<digest>
				Vector size
			</digest>
			<description>
				The argument is the vector size for the operation. It defaults to 512, but should be set appropriately for the size of the vectors you feed into the <o>vectral~</o> object.
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="clear">
			<arglist />
			<digest>
				Clear the sample memory
			</digest>
			<description>
				Clears object's sample memory (in case of a blow-up).
			</description>
		</method>
		<method name="deltaclip">
			<arglist>
				<arg name="low-limit" optional="0" type="float" />
				<arg name="high-limit" optional="0" type="float" />
			</arglist>
			<digest>
				Limit the change in bins of successive vectors to a value range
			</digest>
			<description>
				In left inlet: The word <m>deltaclip</m>, followed by two floats, limits the change in bins of successive vectors to the values given. This is equivalent to the time-domain <o>deltaclip~</o> object.
			</description>
		</method>
		<method name="rampsmooth">
			<arglist>
				<arg name="number-of-interpolating-frames" optional="0" type="list" />
			</arglist>
			<digest>
				Perform linear vector smoothing across successive frames
			</digest>
			<description>
				In left inlet: The word <m>rampsmooth</m>, followed by two ints, causes the vector to be smoothed in a linear fashion across successive frames. The arguments specify the number of frames to use to interpolate values in both directions. This is equivalent to the time-domain filtering done by the <o>rampsmooth~</o> object.
			</description>
		</method>
		<method name="signal">
			<arglist />
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In left inlet: Accepts a sync signal for the output index of the vector. This is typically in the range of 0 to n-1 where n is the size of the vector.
				<br />
				<br />
				In middle inlet: A sync signal received in the middle inlet is used to synchronize the input index of the vector being processed. The sync signal will typically be in the range 0 to n-1 where n is the size of the vector. If the range of the sync signal is different than the output index, the incoming vector will be &quot;bin-shifted&quot; by the difference between the two signals.
				<br />
				<br />
				In right inlet: Signal data to be filtered. This will usually be frequency-domain information such as the output of an <o>fft~</o> or <o>fftin~</o> object.
			</description>
		</method>
		<method name="size">
			<arglist>
				<arg name="vector-size" optional="0" type="int" />
			</arglist>
			<digest>
				Set the vector size for the operation
			</digest>
			<description>
				In left inlet: The word <m>size</m>, followed by a number, sets the vector size for the operation. The default is 512.
			</description>
		</method>
		<method name="slide">
			<arglist>
				<arg name="slide-denominator-coefficients (2 floats)" optional="0" type="list" />
			</arglist>
			<digest>
				Perform log vector interpolations across successive frames (like <o>slide~</o>)
			</digest>
			<description>
				In left inlet: The word <m>slide</m>, followed by two floats, causes <o>vectral~</o> to do logarithmic interpolation of successive vectors in a manner equivalent to the time-domain <o>slide~</o> object. The two arguments determine the denominator coefficient for the amount of the slide.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<!--EXAMPLE-->
	<examplelist>
		<example img="vectral~.png" caption="vectral~ performs different types of smoothing between frames of vectored data (e.g., FFT signals)" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="cartopol" />
		<seealso name="cartopol~" />
		<seealso name="deltaclip~" />
		<seealso name="fft~" />
		<seealso name="fftin~" />
		<seealso name="fftinfo~" />
		<seealso name="fftout~" />
		<seealso name="frameaccum~" />
		<seealso name="framedelta~" />
		<seealso name="ifft~" />
		<seealso name="pfft~" />
		<seealso name="poltocar" />
		<seealso name="poltocar~" />
		<seealso name="rampsmooth~" />
		<seealso name="slide~" />
		<seealso name="14_analysischapter04" module="msp" type="tutorial" />
	</seealsolist>
	<discussion>
		It may operate in one of the following modes:
		<br />
		<m>rampsmooth &lt;up&gt; &lt;down&gt;</m>- linear ramp across up/down frames to the new value
		<br />
		<m>slide &lt;up&gt; &lt;down&gt;</m>- logarithmic movement to new value
		<br />
		<m>deltaclip &lt;max&gt; &lt;min&gt;</m>- limits the change in samples to be in the given range
	</discussion>
	<misc name="Output">
		<entry name="signal">
			<description>
				A smoothed version of the signal input into the right inlet, according to the parameters given to the <o>vectral~</o> object.
			</description>
		</entry>
	</misc>
</c74object>
