<?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.bfg" module="jit" category="Jitter Generators">
	<digest>
		Evaluate a procedural basis function graph
	</digest>
	<description>
		Evaluates and exposes a library of procedural basis functions. Each of these basis functions can be evaluated in any number of dimensions, across any coordinate, without any need of referencing existing calculations. In addition, since they all share a common interface, basis functions can be combined together and evaluated in a function graph by cross-referencing several <o>jit.bfg</o> objects.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Jitter
		</metadata>
		<metadata name="tag">
			Jitter Generators
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="matrix">
			<digest>
				in
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="matrix">
			<digest>
			</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="1" matrixoutputcount="1">
		<matrixoutput name="out" planelink="1" typelink="1" dimlink="1" minplanecount="1" maxplanecount="32" mindimcount="1" maxdimcount="32">
			<types>
				char long float32 float64
			</types>
		</matrixoutput>
	</mop>
	<!--MESSAGES-->
	<methodlist>
		<method name="setattr">
			<arglist />
			<digest>
				Forward attributes to internal objects
			</digest>
			<description>
				The word <m>setattr</m>, followed by the name of an attribute and value or list of values, forwards attribute messages on to internal objects (e.g. setattr <m>basis abs 0</m> would set the basis function object's <i>abs</i> attribute to zero.
			</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="align" get="1" set="1" type="float" size="1">
			<digest>
				Fractional alignment
			</digest>
			<description>
				The fractional alignment for offsetting each plane. (default = 10)
			</description>
		</attribute>
		<attribute name="autocenter" get="1" set="1" type="int" size="1">
			<digest>
				Auto-center the origin
			</digest>
			<description>
				Flag for enabling or disabling automatically placing the origin at the center of the output matrix. (default = 0)
			</description>
		</attribute>
		<attribute name="basis" get="1" set="1" type="symbol" size="1">
			<digest>
				Basis function name
			</digest>
			<description>
				The name of the basis function to use for the evaluation. (default = none) Supported basis functions are:
				<br />
				Distance Functions
				<br />
				chebychev (Absolute maximum difference between two points)
				<br />
				euclidean (True straight line distance in Euclidean space)
				<br />
				euclidean.squared (Squared Euclidean distance)
				<br />
				manhattan (Rectilinear distance measured along axes at right angles)
				<br />
				manhattan.radial (Manhattan distance with radius fall-off control)
				<br />
				minkovsky (Exponentially controlled distance)
				<br />
				Filter Functions
				<br />
				box (Sums all samples in the filter area with equal weight)
				<br />
				gaussian (Weights samples in the filter area using a bell curve)
				<br />
				lanczossinc (Weights samples using a steep windowed sinc curve)
				<br />
				mitchell (Weights samples using a controllable cubic polynomial)
				<br />
				disk (Sums all samples inside the filter's radius with equal weight)
				<br />
				sinc (Weights samples using an un-windowed sinc curve)
				<br />
				catmullrom (Weights samples using a Catmull-Rom cubic polynomial)
				<br />
				bessel (Weights samples with a linear phase response)
				<br />
				triangle (Weights samples in the filter area using a pyramid)
				<br />
				Transfer Functions
				<br />
				step (Always 0 if value is less than threshold, otherwise always 1)
				<br />
				smoothstep (Step function with cubic smoothing at boundaries)
				<br />
				bias (Polynomial similar to gamma but remapped to unit interval)
				<br />
				cubic (Generic 3rd order polynomial with controllable coefficients)
				<br />
				saw (Periodic triangle pulse train)
				<br />
				quintic (Generic 5th order polynomial with controllable coefficients)
				<br />
				gain (S-Shaped polynomial evaluated inside unit interval)
				<br />
				pulse (Periodic step function)
				<br />
				smoothpulse (Periodic step function with cubic smoothing at boundaries)
				<br />
				sine (Periodic sinusoidal curve)
				<br />
				linear (Linear function across unit interval)
				<br />
				solarize (Scales given value if threshold is exceeded)
				<br />
				Noise Functions
				<br />
				cellnoise (Coherent blocky noise)
				<br />
				checker (Periodic checker squares)
				<br />
				value.cubicspline (Polynomial smoothed pseudo-random values)
				<br />
				value.convolution (Convolution filtered pseudo-random values))
				<br />
				sparse.convolution (Convolution filtered pseudo-random feature points)
				<br />
				gradient (Directionally weighted polynomially interpolated values)
				<br />
				simplex (Simplex weighted pseudo-random values)
				<br />
				voronoi (Distance weighted pseudo-random feature points)
				<br />
				distorted (Domain distorted combinational noise)
				<br />
				Fractal Functions
				<br />
				mono (Additive fractal with global simularity across scales)
				<br />
				multi (Multiplicative fractal with varying simularity across scales)
				<br />
				multi.hybrid (A hybrid additive and multiplicative fractal)
				<br />
				multi.hetero (Heterogenous multiplicative fractal)
				<br />
				multi.ridged (Multiplicative fractal with sharp ridges)
				<br />
				turbulence (Additive mono-fractal with sharp ridges)
				<br />
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="42">
					<enumlist>
						<enum name="distance.euclidean">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="distance.euclidean.squared">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="distance.manhattan">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="distance.manhattan.radial">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="distance.chebychev">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="distance.minkovsky">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.bessel">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.box">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.catmullrom">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.disk">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.gaussian">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.lanczossinc">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.mitchell">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.sinc">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="filter.triangle">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.step">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.smoothstep">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.bias">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.cubic">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.saw">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.quintic">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.gain">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.pulse">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.smoothpulse">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.sine">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.linear">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="transfer.solarize">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.cell">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.checker">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.distorted">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.gradient">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.simplex">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.voronoi">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.value.cubicspline">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.value.convolution">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="noise.sparse.convolution">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="fractal.mono">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="fractal.hetero">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="fractal.multi">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="fractal.multi.hybrid">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="fractal.multi.ridged">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="fractal.turbulence">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="classname" get="1" set="1" type="symbol" size="1">
			<digest>
				Basis function class
			</digest>
			<description>
				The name of the basis function class (eg cellnoise) (default = none)
			</description>
		</attribute>
		<attribute name="offset" get="1" set="1" type="float" size="32">
			<digest>
				Dimensional offsets
			</digest>
			<description>
				The dimensional offsets to use for generating the spatial grid coordinates (only valid when an input matrix is not attached). (default = 0)
			</description>
		</attribute>
		<attribute name="origin" get="1" set="1" type="float" size="32">
			<digest>
				Dimensional origin
			</digest>
			<description>
				The dimensional origin to use for generating the spatial grid coordinates (only valid when an input matrix is not attached). (default = 0)
			</description>
		</attribute>
		<attribute name="precision" get="1" set="1" type="symbol" size="1">
			<digest>
				Internal precision for evaluation
			</digest>
			<description>
				Internal precision for to use for evaluation, independent of matrix datatype. (default = float32)
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="5">
					<enumlist>
						<enum name="float32">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="float64">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="fixed">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="float">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="double">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="rotation" get="1" set="1" type="float" size="32">
			<digest>
				Rotation angles
			</digest>
			<description>
				The rotation angles to use for generating the spatial grid coordinates (only valid when an input matrix is not attached). (default = 0)
			</description>
		</attribute>
		<attribute name="scale" get="1" set="1" type="float" size="32">
			<digest>
				Dimensional scale factors
			</digest>
			<description>
				The dimensional scale factors to use for generating the spatial grid coordinates (only valid when an input matrix is not attached). (default = 0)
			</description>
		</attribute>
		<attribute name="seed" get="1" set="1" type="int" size="1">
			<digest>
				Pseudo-random seed value
			</digest>
			<description>
				The seed value to use for initializing the pseudo-random number generator for alignment. The same seed will result in the same output (default = -1138).
			</description>
		</attribute>
		<attribute name="weight" get="1" set="1" type="float" size="32">
			<digest>
				Scaling weight factors
			</digest>
			<description>
				The weight factors for scaling the output values. (default = 1)
			</description>
		</attribute>
	</attributelist>
	<jitterattributelist>
		<jitterattribute name="outputmode" />
		<jitterattribute name="adapt" />
		<jitterattribute name="out_name" />
		<jitterattribute name="type" />
		<jitterattribute name="dim" />
		<jitterattribute name="planecount" />
	</jitterattributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="jit.bfg.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="jit.gencoord" />
		<seealso name="jit.matrix" />
		<seealso name="jit.normalize" />
		<seealso name="jitterchapter50" module="jit" type="tutorial" />
	</seealsolist>
	<discussion>
		There are several categories of functions, each of which are characterized by a different intended use. These categories include fractal, noise, filter, transfer, and distance operations. Functions contained in these folders can be passed by name to <o>jit.bfg</o> either fully qualified (category.classname) or relaxed (classname).
		<br />
		By default, <o>jit.bfg</o> will generate spatial coordinates across a grid, however, if a <o>jit.matrix</o> is attached to the left-most inlet, the matrix's planar values will instead be used (planar values correspond to dimensions for the coordinates e.g. RGB == XYZ). After creation, <o>jit.bfg</o> requires a basis to be specified before any evaluation will be performed.
		<br />
	</discussion>
</c74object>
