<?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="snowfall~" module="" category="">
	<digest>
		Phasor-Driven Particle
	</digest>
	<description>
		The <o>snowfall~</o> object controls a multi-dimensional particle as one or more audio ramps whose lifetime is triggered and controlled by an input phasor ramp from 0 to 1. The object will typically be used within a larger system of quasi-independent particles using the MC Wrapper as <o>mc.snowfall~</o>.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="signal">
			<digest>
				Phasor Input
			</digest>
			<description>
				The start of a phasor ramp causes the particle to start its output signal ramps. Typically the particle output will end when the input ramp resets to zero.
			</description>
		</inlet>
		<inlet id="1" type="signal">
			<digest>
				Phasor Input
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="signal">
			<digest>
				Particle Output
			</digest>
			<description>
				The particle's output ramp signals (up to 4, as determined by the value of the <at>dimensions</at> attribute) begin when an input phasor starts; their evolution is controlled by the various attributes of <o>snowfall~</o>.
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="dimenions" type="int" optional="1">
			<digest>
				Dimensions
			</digest>
			<description>
				Sets the number of dimensions (1 - 4) which determines the number of signal outputs. The default value is 1.
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="signal">
			<arglist />
			<digest>
				Phasor Input
			</digest>
			<description>
				The start of a phasor ramp causes the particle to start its output signal ramps. Typically the particle output will end when the input ramp resets to zero.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="boundarymode" get="1" set="1" type="int" size="1">
			<digest>
				Boundary Mode
			</digest>
			<description>
				The <at>boundarymode</at> attribute controls what happens when the particle output value reaches the current <at>minimum</at> or <at>maximum</at>. It is global for all dimensions.
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="4">
					<enumlist>
						<enum name="bounce">
							<digest>
								Bounce Mode
							</digest>
							<description>
								Causes the particle to reverse its current direction.
							</description>
						</enum>
						<enum name="end">
							<digest>
								End Mode
							</digest>
							<description>
								Causes the particle to cease outputting; the signal output will become zero.
							</description>
						</enum>
						<enum name="wrap">
							<digest>
								Wrap Mode
							</digest>
							<description>
								Causes the particle to move to the opposite boundary. If the particle reaches the current maximum value, its value jumps to the minimum. If the particle reaches the current minimum value, its value jumps to the maximum.
							</description>
						</enum>
						<enum name="clip">
							<digest>
								Clip Mode
							</digest>
							<description>
								The particle's value remains at the value of the boundary (maximum or minimum).
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Boundary Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="dimensions" get="1" set="1" type="int" size="1">
			<digest>
				Dimensions
			</digest>
			<description>
				Sets the number of dimensions (1 - 4) which determines the number of signal outputs. The default value is 1. The <at>dimensions</at> attribute cannot be changed after the object is created. It can be set via an argument or typed-in attribute.
			</description>
		</attribute>
		<attribute name="direction" get="1" set="1" type="float" size="4">
			<digest>
				Direction / Velocity
			</digest>
			<description>
				<at>direction</at> contains up to four values, one for each dimension.
				<br />
				When a particle starts, the <at>direction</at> attribute determines the velocity of movement. The value is expressed in units per second. For example, when <at>direction</at> is set to 5 means, the output value will increase by 5 over one second. If the <at>direction</at> attribute is negative, the output value is likely to decrease over time. If the <at>direction</at> attribute is positive, the output value is likely to increase over time.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Initial Direction / Velocity" />
			</attributelist>
		</attribute>
		<attribute name="directiondev" get="1" set="1" type="float" size="4">
			<digest>
				Direction Deviation
			</digest>
			<description>
				<at>directiondev</at> contains up to four values, one for each dimension.
				<br />
				Sets a random deviation around the value of <at>direction</at> used in setting the particle velocity and direction.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Direction Deviation" />
			</attributelist>
		</attribute>
		<attribute name="endmode" get="1" set="1" type="int" size="1">
			<digest>
				End Mode
			</digest>
			<description>
				Sets the behavior when the particle ends, either as a result of hitting a max or min boundary or when the input signal resets or goes to zero.
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="End Value">
							<digest>
								Set to end value
							</digest>
							<description>
								When <at>endmode</at> is set to End Value, the output is set to the current value of the <at>endvalue</at> attribute when the particle ends.
							</description>
						</enum>
						<enum name="Current Value">
							<digest>
								Remain at current value
							</digest>
							<description>
								When <at>endmode</at> is set to Current Value, the output remains at its current value when the particle ends.
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="End Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="endvalue" get="1" set="1" type="float" size="4">
			<digest>
				End Output Value
			</digest>
			<description>
				<at>endvalue</at> contains up to four values, one for each dimension.
				<br />
				Sets the value to output when a particle's life ends.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="End Value" />
			</attributelist>
		</attribute>
		<attribute name="energyramp" get="1" set="1" type="float" size="4">
			<digest>
				Energy Ramp Factor
			</digest>
			<description>
				<at>energyramp</at> contains up to four values, one for each dimension.
				<br />
				The <at>energyramp</at> multiplies the incoming 0 - 1 ramp signal value as part of the particle calculation. If you do not want the particle to move faster as the input ramp value increases, set the <at>energyramp</at> to zero.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Input Energy Factor" />
			</attributelist>
		</attribute>
		<attribute name="initial" get="1" set="1" type="float" size="4">
			<digest>
				Initial Value
			</digest>
			<description>
				<at>initial</at> contains up to four values, one for each dimension.
				<br />
				Sets a starting output value for the particle.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Initial Value" />
			</attributelist>
		</attribute>
		<attribute name="initialdev" get="1" set="1" type="float" size="4">
			<digest>
				Initial Value Deviation
			</digest>
			<description>
				<at>initialdev</at> contains up to four values, one for each dimension.
				<br />
				Sets a random deviation around the initial value used in choosing the starting output value.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Initial Value Deviation" />
			</attributelist>
		</attribute>
		<attribute name="interval" get="1" set="1" type="float" size="1">
			<digest>
				Update Interval
			</digest>
			<description>
				Set the time interval (in milliseconds) between new particle trajectory calculations.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Update Interval" />
			</attributelist>
		</attribute>
		<attribute name="intervaldev" get="1" set="1" type="float" size="1">
			<digest>
				Interval Deviation
			</digest>
			<description>
				Sets a random deviation around the value of <at>interval</at> used in choosing the  update interval.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Interval Deviation" />
			</attributelist>
		</attribute>
		<attribute name="max" get="1" set="1" type="float" size="4">
			<digest>
				Maximum
			</digest>
			<description>
				<at>max</at> contains up to four values, one for each dimension.
				<br />
				Set's the particle's maximum boundary value. Once the particle reaches this value, its behavior is determined by the current setting of the <at>boundarymode</at> attribute.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Maximum" />
			</attributelist>
		</attribute>
		<attribute name="min" get="1" set="1" type="float" size="4">
			<digest>
				Minimum
			</digest>
			<description>
				<at>min</at> contains up to four values, one for each dimension.
				<br />
				Set's the particle's minimum boundary value. Once the particle reaches this value, its behavior is determined by the current setting of the <at>boundarymode</at> attribute.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Minimum" />
			</attributelist>
		</attribute>
		<attribute name="scalemax" get="1" set="1" type="float" size="4">
			<digest>
				Scaling Maximum
			</digest>
			<description>
				<at>scalemin</at> contains up to four values, one for each dimension.
				<br />
				Sets a scale factor for the particle's output value. The particle's value will always range between the scaling minimum and the scaling maximum.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Scaling Maximum" />
			</attributelist>
		</attribute>
		<attribute name="scalemin" get="1" set="1" type="float" size="4">
			<digest>
				Scaling Minimum
			</digest>
			<description>
				<at>scalemax</at> contains up to four values, one for each dimension.
				<br />
				Sets a scale factor for the particle's output value. The particle's value will always be bettern the scaling minimum and the scaling maximum.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Scaling Minimum" />
			</attributelist>
		</attribute>
		<attribute name="squish" get="1" set="1" type="float" size="4">
			<digest>
				Boundary Damping Factor
			</digest>
			<description>
				<at>squish</at> contains up to four values, one for each dimension.
				<br />
				When the <at>boundarymode</at> attribute is set to Bounce, the <at>squish</at> attribute multiplies the force of the particle's direction reversal.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Boundary Damping Factor" />
			</attributelist>
		</attribute>
		<attribute name="wanderprob" get="1" set="1" type="float" size="4">
			<digest>
				Reverse Direction Probability
			</digest>
			<description>
				<at>wanderprob</at> contains up to four values, one for each dimension.
				<br />
				Sets the probability that at any particular update, the direction will reverse. Note that as the <at>interval</at> becomes smaller, the effect of the <at>wanderprob</at> increases.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Reverse Direction Probability" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example caption="" img="" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealsolist>
			<seealso name="mc.snowphasor~" />
			<seealso name="phasor~" />
		</seealsolist>
	</seealsolist>
</c74object>
