<?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="jit.freeframe" module="jit" category="Jitter Special FX">
	<digest>
		Utilize FreeFrame effects
	</digest>
	<description>
		Provides support for using FreeFrame effects within Jitter. It supports both single and dual input effects, and 32-bit and 16-bit data sizes.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Jitter
		</metadata>
		<metadata name="tag">
			Jitter Special FX
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="matrix">
			<digest>
				in
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="matrix">
			<digest>
				in2
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="matrix">
			<digest>
				out
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="matrix">
			<digest>
				dumpout
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--MOP-->
	<mop matrixinputcount="2" matrixoutputcount="1">
		<matrixinput name="in2" planelink="1" typelink="1" dimlink="1" minplanecount="4" maxplanecount="4" mindimcount="1" maxdimcount="32" ioproc="resamp">
			<types>
				char
			</types>
		</matrixinput>
		<matrixoutput name="out" planelink="1" typelink="1" dimlink="1" minplanecount="4" maxplanecount="4" mindimcount="1" maxdimcount="32">
			<types>
				char
			</types>
		</matrixoutput>
	</mop>
	<!--MESSAGES-->
	<methodlist>
		<method name="anything">
			<arglist />
			<digest>
				Set an effect parameter
			</digest>
			<description>
				If the message selector matches the name of a parameter, functions like the <m>param</m> message, taking a single <m>float</m> (or <m>symbol</m>, in the case of <m>text</m> parameters) argument.
				<p />
				If the message selector matches the word <m>get</m>, followed by the name of a parameter (e.g. <m>getbrightness</m>, the message has the same effect as the <m>getparam</m> message, but requiring no further arguments.
			</description>
		</method>
		<method name="geteffectlist">
			<arglist />
			<digest>
				Report all available effects
			</digest>
			<description>
				Sends a list out the object's right outlet comprising the names of all available FreeFrame effects, preceded by the word <m>effectlist</m>. On Macintosh, FreeFrame effects must be located either in the <i>/Library/Application Support/FreeFrame/&gt;</i> folder, or in a directory called <i>FreeFrame Plugins</i>, within the Max search path. On Windows, FreeFrame effects must be located either in the <i>C:\Program Files\Common Files\FreeFrame\</i> folder, or in a directory called <i>FreeFrame Plugins</i>, within the Max search path.
			</description>
		</method>
		<method name="getparam">
			<arglist>
				<arg name="param" type="symbol/int" />
			</arglist>
			<digest>
				Report a parameter value
			</digest>
			<description>
				Sends a list out the object's right outlet containing the current value of the parameter specified by the <i>param</i> argument (either by name or by index into the list returned by <m>getparamlist</m>). The list is formatted as <m>param</m>  <i>param</i>  <i>param-val</i>  <i>param-display</i>. The <i>param</i> argument is the name of the parameters, the <i>param-val</i> the value, and <i>param-display</i> is an alternate display value, for parameters whose &quot;real value&quot;, as understood by the parameter, lies outside of the range 0-1.
			</description>
		</method>
		<method name="getparamlist">
			<arglist />
			<digest>
				Report effect parameters
			</digest>
			<description>
				Sends lists out the object's right outlet describing the parameters for the currently selected effect, one list per parameter (see <at>numparams</at>). The list or lists are in the form <m>paramlist</m>  <i>param-name</i>  <i>param-type</i>.				<p>
					All parameters, regardless of type (with the exception of <m>text</m>), accept a single floating-point number between 0 and 1 as input.
				</p>
				<p>
					The parameter types are: <m>boolean</m>, <m>event</m>, <m>red</m>, <m>green</m>, <m>blue</m>, <m>xpos</m>, <m>ypos</m>, <m>text</m>, <m>standard</m>.
				</p>
				<p>
					After all parameters have been listed, the message <m>paramlist done</m> is output.
				</p>
			</description>
		</method>
		<method name="loadeffect">
			<arglist>
				<arg name="effect-name" type="symbol" />
			</arglist>
			<digest>
				Load the specified effect
			</digest>
			<description>
				Selects an available FreeFrame effect for use. The effect must be specified by its name, as reported by the <m>geteffectlist</m> message.
			</description>
		</method>
		<method name="param">
			<arglist>
				<arg name="param" type="symbol/int" />
				<arg name="value" type="float/symbol" />
			</arglist>
			<digest>
				Set an effect parameter
			</digest>
			<description>
				Sets the value of the parameter specified by the <i>param</i> argument (either by name or by index into the list returned by <m>getparamlist</m>). All parameters, regardless of type (with the exception of <m>text</m>), accept a single floating-point number between 0 and 1 as input. See the <m>getparamlist</m> message for additional information on parameter types.
			</description>
		</method>
		<method name="reload">
			<arglist />
			<digest>
				Rescan the available effects
			</digest>
			<description>
				Causes the object to rescan the FreeFrame plugins folders and add any new plugins to its list of effects. See the <m>geteffectlist</m> method for more details.
			</description>
		</method>
	</methodlist>
	<jittermethodlist>
		<jittermethod name="bang" />
		<jittermethod name="clear" />
		<jittermethod name="exportattrs" />
		<jittermethod name="exportsummary" />
		<jittermethod name="getattributes" />
		<jittermethod name="getstate" />
		<jittermethod name="jit_matrix" />
		<jittermethod name="importattrs" />
		<jittermethod name="outputmatrix" />
		<jittermethod name="summary" />
	</jittermethodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="fx" get="1" set="1" type="symbol" size="1">
			<digest>
				The currently loaded effect
			</digest>
			<description>
				The currently loaded effect
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="FX" />
			</attributelist>
		</attribute>
		<attribute name="inmode" get="1" set="1" type="symbol" size="1">
			<digest>
				Input mode
			</digest>
			<description>
				The matrix input mode (jitter/freeframe).
				<br />
				The <at>inmode</at> and <at>outmode</at> attributes provide an optimization when building chains of <o>jit.freeframe</o> objects. Because Jitter and FreeFrame use different byte-padding, matrices generally have to be copied to a new buffer when the arrive at a <o>jit.freeframe</o> object, and copied back into a Jitter matrix after processing, before output. If several <o>jit.freeframe</o> objects will be used to sequentially process data, this copying step can be avoided.
				<br />
				The first object in the chain should have <at>inmode</at> set to <m>jitter</m>, and <at>outmode</at> set to <m>freeframe</m>. All subsequent objects should have both attributes set to <m>freeframe</m>, except for the last one, which should have <at>inmode</at> set to <m>freeframe</m>, and <at>outmode</at> set to <m>jitter</m>.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="In Mode" />
			</attributelist>
		</attribute>
		<attribute name="numparams" get="1" set="0" type="int" size="1">
			<digest>
				Effect parameters
			</digest>
			<description>
				The number of parameters for the currently loaded effect (default = -1)
				<br />
				A value of <m>-1</m> indicates that there is no loaded effect.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Number of Params" />
			</attributelist>
		</attribute>
		<attribute name="outmode" get="1" set="1" type="symbol" size="1">
			<digest>
				Output mode
			</digest>
			<description>
				The matrix output mode (jitter/freeframe).
				<br />
				The <at>inmode</at> and <at>outmode</at> attributes provide an optimization when building chains of <o>jit.freeframe</o> objects. Because Jitter and FreeFrame use different byte-padding, matrices generally have to be copied to a new buffer when the arrive at a <o>jit.freeframe</o> object, and copied back into a Jitter matrix after processing, before output. If several <o>jit.freeframe</o> objects will be used to sequentially process data, this copying step can be avoided.
				<br />
				The first object in the chain should have <at>inmode</at> set to <m>jitter</m>, and <at>outmode</at> set to <m>freeframe</m>. All subsequent objects should have both attributes set to <m>freeframe</m>, except for the last one, which should have <at>inmode</at> set to <m>freeframe</m>, and <at>outmode</at> set to <m>jitter</m>.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Out Mode" />
			</attributelist>
		</attribute>
	</attributelist>
	<jitterattributelist>
		<jitterattribute name="outputmode" />
		<jitterattribute name="adapt" />
		<jitterattribute name="in2_name" />
		<jitterattribute name="in2_type" />
		<jitterattribute name="in2_dim" />
		<jitterattribute name="in2_planecount" />
		<jitterattribute name="out_name" />
		<jitterattribute name="type" />
		<jitterattribute name="dim" />
		<jitterattribute name="planecount" />
	</jitterattributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="jit.freeframe.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="jit.qt.effect" />
	</seealsolist>
	<discussion>
		The object's interface is complicated by the FreeFrame architecture -- each effect may have a completely different set of parameters.
	</discussion>
</c74object>
