<?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.path" module="jit" category="Jitter Generators">
	<digest>
		Evaluates a series of N-dim points as a path
	</digest>
	<description>
		The <o>jit.path</o> object takes a series of N-dimensional points retrieves interpolated values based on an input parameter. It is useful for creating user interfaces for parameter morphing.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Jitter
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				point matrix in
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="INLET_TYPE">
			<digest>
				point matrix in
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="OUTLET_TYPE">
			<digest>
				point matrix
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="OUTLET_TYPE">
			<digest>
				evaluated matrix
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="2" type="OUTLET_TYPE">
			<digest>
				evaluated values
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="3" type="OUTLET_TYPE">
			<digest>
				dumpout
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--MESSAGES-->
	<methodlist>
		<method name="bang">
			<arglist />
			<digest>
				Output the point matrix
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="append">
			<arglist>
				<arg name="values" type="list" />
			</arglist>
			<digest>
				Append point values
			</digest>
			<description>
				Append point values to the end of the path. If <at>dim</at> is 0, it is set to length of arg list.
			</description>
		</method>
		<method name="calc_evalmatrix">
			<arglist />
			<digest>
				Calculate the eval matrix
			</digest>
			<description>
				Calculate the eval matrix by filling with the evaluated values of the path. The matrix is 1D, the size is equal to the <at>evalmatrixsize</at>, and the planes are equal to path <at>dim</at>. Useful in conjunction with the <at>evalmatrixname</at> attribute when accessing <o>jit.path</o> in javascript.
			</description>
		</method>
		<method name="calc_outmatrix">
			<arglist />
			<digest>
				Calculate the point output matrix
			</digest>
			<description>
				Calculate the point output matrix by filling with the path point and handle values. The matrix is 2D with the size is equal to number of points, and planes equal to path <at>dim</at>. Useful in conjunction with the <at>outmatrixname</at> attribute when accessing <o>jit.path</o> in javascript.
			</description>
		</method>
		<method name="closepath">
			<arglist />
			<digest>
				Create a closed path
			</digest>
			<description>
				Close the path by adding a point to the end equal to the first point.
			</description>
		</method>
		<method name="eval">
			<arglist>
				<arg name="parameter" type="float" />
			</arglist>
			<digest>
				Evaluate the path using <ar>parameter</ar> 
			</digest>
			<description>
				Evaluate the path using <ar>parameter</ar>, (between 0. and 1.) and output the interpolated values.
			</description>
		</method>
		<method name="evallength">
			<arglist>
				<arg name="length-parameter" type="float" />
			</arglist>
			<digest>
				Evaluate the path using <ar>length-parameter</ar> 
			</digest>
			<description>
				Evaluate the path using the <ar>length-parameter</ar> (between 0 and <at>pathlength</at>) and output the interpolated values.
			</description>
		</method>
		<method name="evaltime">
			<arglist>
				<arg name="time" type="float" />
			</arglist>
			<digest>
				Evaluate the path using <ar>time</ar> 
			</digest>
			<description>
				Evaluate the path using <ar>time</ar> (between 0 and <at>duration</at>) and output the interpolated values. The <m>usetime</m> attribute must be set to 1, causing the first dim of the path to be treated as time values.
			</description>
		</method>
		<method name="delete">
			<arglist>
				<arg name="index" type="int" />
			</arglist>
			<digest>
				Delete the point at <ar>index</ar> 
			</digest>
			<description>
				Delete the point at <ar>index</ar> 
			</description>
		</method>
		<method name="calchandles">
			<arglist />
			<digest>
				Calculate the path handles
			</digest>
			<description>
				Calculate the path handles of each point in the path using the Catmull-Rom method. This will overwrite any previously stored handles.
			</description>
		</method>
		<method name="clear">
			<arglist />
			<digest>
				Remove all points from the path
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="edit">
			<arglist>
				<arg name="index" type="int" />
				<arg name="values" type="list" />
			</arglist>
			<digest>
				Edit the point at <ar>index</ar> 
			</digest>
			<description>
				Edit the point at <ar>index</ar> 
			</description>
		</method>
		<method name="edithandle">
			<arglist>
				<arg name="index" type="int" />
				<arg name="values" type="list" />
			</arglist>
			<digest>
				Edit the point handle at <ar>index</ar> 
			</digest>
			<description>
				Edit the point handle at <ar>index</ar> 
			</description>
		</method>
		<method name="gethandle">
			<arglist>
				<arg name="index" type="int" />
			</arglist>
			<digest>
				Get handle values at <ar>index</ar> 
			</digest>
			<description>
				Get handle values at <ar>index</ar> and output through dump outlet.
			</description>
		</method>
		<method name="getpoint">
			<arglist>
				<arg name="index" type="int" />
			</arglist>
			<digest>
				Get point values at <ar>index</ar> 
			</digest>
			<description>
				Get the point values at <ar>index</ar> and output through dump outlet. <i>point</i>.
			</description>
		</method>
		<method name="insert">
			<arglist>
				<arg name="index" type="int" />
				<arg name="values" type="list" />
			</arglist>
			<digest>
				Insert a new point at <ar>index</ar> 
			</digest>
			<description>
				Insert a new point at <ar>index</ar> 
			</description>
		</method>
		<method name="outputeval">
			<arglist />
			<digest>
				Output eval matrix
			</digest>
			<description>
				Output a matrix from the second outlet, filled with the evaluated values of the path. The matrix is 1D, the size is equal to the <at>evalmatrixsize</at>, and the planes are equal to path <at>dim</at>.
			</description>
		</method>
		<method name="next">
			<arglist />
			<digest>
				Advance to next point
			</digest>
			<description>
				Advance the path animation to the next point.
			</description>
		</method>
		<method name="prev">
			<arglist />
			<digest>
				Rewind to previous point
			</digest>
			<description>
				Rewind the path animation to the previous point
			</description>
		</method>
		<method name="settime">
			<arglist>
				<arg name="index" type="int" />
			</arglist>
			<digest>
				Set time at <ar>index</ar> 
			</digest>
			<description>
				Set time at <ar>index</ar>. If necessary, the path will be resorted prior to evaluation.
			</description>
		</method>
		<method name="sorttime">
			<arglist />
			<digest>
				Sort path based on time values
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="start">
			<arglist />
			<digest>
				Start path animation
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="stop">
			<arglist />
			<digest>
				Stop path animation
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
	</methodlist>
	<jittermethodlist>
		<jittermethod name="exportattrs" />
		<jittermethod name="exportsummary" />
		<jittermethod name="getattributes" />
		<jittermethod name="getstate" />
		<jittermethod name="jit_matrix" />
		<jittermethod name="importattrs" />
		<jittermethod name="summary" />
	</jittermethodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="autohandles" get="1" set="1" type="int" size="1">
			<digest>
				Enable automatic handle calculation
			</digest>
			<description>
				Enable the calculation of handle values every time the path is edited (default = 1).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Auto Handles" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="closed" get="1" set="0" type="int" size="1">
			<digest>
				Indicates a closed path
			</digest>
			<description>
				Indicates the path is closed (first and last points are equal).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Closed" />
			</attributelist>
		</attribute>
		<attribute name="dim" get="1" set="1" type="int" size="1">
			<digest>
				Path dimension
			</digest>
			<description>
				Path dimension and number of planes in point and eval matrices (default = 0).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Dim" />
			</attributelist>
		</attribute>
		<attribute name="duration" get="1" set="0" type="float" size="1">
			<digest>
				Path duration in seconds
			</digest>
			<description>
				Path duration in seconds (default = 0.)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Duration" />
			</attributelist>
		</attribute>
		<attribute name="evalmatrixmode" get="1" set="1" type="symbol" size="1">
			<digest>
				Matrix evaluation mode
			</digest>
			<description>
				Determines how the eval-matrix is evaluated (default = eval).
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="eval">
							<digest>
								Normalized by <at>pointcount</at> 
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="evallength">
							<digest>
								Normalized by <at>pathlength</at> 
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Eval Matrix Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="evalmatrixname" get="1" set="0" type="symbol" size="1">
			<digest>
				Eval matrix name
			</digest>
			<description>
				The eval matrix name (default = UID). This is a read-only attribute and is useful in conjunction with the <m>calc_evalmatrix</m> message when accessing <o>jit.path</o> in javascript.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Eval Matrix Name" />
			</attributelist>
		</attribute>
		<attribute name="evalmatrixsize" get="1" set="1" type="int" size="1">
			<digest>
				Size of the eval-matrix
			</digest>
			<description>
				The size of the eval-matrix (default = 100).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Eval Matrix Size" />
			</attributelist>
		</attribute>
		<attribute name="grain" get="1" set="1" type="int" size="1">
			<digest>
				Time grain used when animating
			</digest>
			<description>
				Time grain used when animating in milliseconds (default = 50).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Grain" />
			</attributelist>
		</attribute>
		<attribute name="interpmode" get="1" set="1" type="symbol" size="1">
			<digest>
				Path interpolation method
			</digest>
			<description>
				Path interpolation method (default = linear).
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="linear">
							<digest>
								Linear interpolation
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="spline">
							<digest>
								Hermite interpolation
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Interpolation Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="length" get="1" set="0" type="float" size="1">
			<digest>
				Path length
			</digest>
			<description>
				Path length (default = 0.)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Length" />
			</attributelist>
		</attribute>
		<attribute name="loop" get="1" set="1" type="int" size="1">
			<digest>
				Path animation loop method
			</digest>
			<description>
				Path animation loop method (default = 1).
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="3">
					<enumlist>
						<enum name="off">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="on">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="palindrome">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Loop" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="outmatrixname" get="1" set="0" type="symbol" size="1">
			<digest>
				Point output matrix name
			</digest>
			<description>
				The point output matrix name (default = UID). This is a read-only attribute and is useful in conjunction with the <m>calc_outmatrix</m> message when accessing <o>jit.path</o> in javascript.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Output Matrix Name" />
			</attributelist>
		</attribute>
		<attribute name="play" get="1" set="1" type="int" size="1">
			<digest>
				Enable path animation
			</digest>
			<description>
				Enable path animation (default = 0).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Play" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="pointcount" get="1" set="0" type="int" size="1">
			<digest>
				Number of path points
			</digest>
			<description>
				Number of path points (default = 0).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Point Count" />
			</attributelist>
		</attribute>
		<attribute name="rate" get="1" set="1" type="float" size="1">
			<digest>
				Animation rate value
			</digest>
			<description>
				Animation rate value (default = 1.)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Rate" />
			</attributelist>
		</attribute>
		<attribute name="thru" get="1" set="1" type="int" size="1">
			<digest>
				Output point matrix receiving input matrix
			</digest>
			<description>
				Output point matrix receiving input matrix (default = 1).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Thru" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="time" get="1" set="1" type="float" size="1">
			<digest>
				Current path time value
			</digest>
			<description>
				Current path time value (default = 0.)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Time" />
			</attributelist>
		</attribute>
		<attribute name="timemode" get="1" set="1" type="symbol" size="1">
			<digest>
				Determine how time values added to path
			</digest>
			<description>
				Determine how time values added to the path (default = relative).
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="absolute">
							<digest>
								Time value is set to argument
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="relative">
							<digest>
								Time value is set to argument plus previous time value
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Time Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="usetime" get="1" set="1" type="int" size="1">
			<digest>
				Determine if first path dim is used as time
			</digest>
			<description>
				Determine if first path dim is used as time value (default = 0).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Use Time" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
	</attributelist>
	<jitterattributelist />
	<!--EXAMPLE-->
	<examplelist>
		<example caption="Evaluates a series of N-dim points as a path" img="jit.path.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="jit.anim.path" />
		<seealso name="jit.gl.path" />
	</seealsolist>
	<discussion>
		The <o>jit.path</o> object performs this interpolation using either linear or Hermite spline interpolation. The Hermite splines are automatically calculated using the Catmull-Rom method, which creates a single tangent for each point. The interpolated values are retrieved based on an input parameter. There is also the option of outputting a matrix out the second outlet filled with the interpolated values, with the number of planes equal to the dimension of the path.
		<br />
		Points are added to the path either with messages, or by passing in a 1D matrix of point values. A 2D matrix will be output containing the path points in the first row, and the automatically calculated tangents in the second row.
		<br />
		The length of the path can be calculated by treating the first three dimensions as x/y/z position values. The path can optionally be evaluated based on the length.
	</discussion>
</c74object>
