<?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="mc.makelist" module="MSP" category="MC">
	<digest>
		Create a list from non-signal output of MC objects
	</digest>
	<description>
		The <o>mc.makelist</o> object creates a list of values whose size is determined by the highest voice number it receives in its right inlet or specified by the value of its <at>voices</at> attribute.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MC
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				Trigger List Output
			</digest>
			<description>
				The left inlet of <o>mc.makelist</o> accepts a <m>bang</m> to trigger the list it currently holds.
			</description>
		</inlet>
		<inlet id="1" type="INLET_TYPE">
			<digest>
				Items to Assemble Into a List
			</digest>
			<description>
				The middle inlet of <o>mc.makelist</o> stores values at a list position determined by the most recently received voice number in its right inlet.
			</description>
		</inlet>
		<inlet id="2" type="int">
			<digest>
				Voice Index
			</digest>
			<description>
				The right inlet of <o>mc.makelist</o> sets the current voice number which determines the position within its list where a subsequently received value in the middle inlet will be stored.
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="OUTLET_TYPE">
			<digest>
				List Output
			</digest>
			<description>
				<o>mc.makelist~</o> sends out its list when it receives a <m>bang</m> in its left inlet or automatically depending on its current trigger mode (<at>mode</at> attribute).
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist />
	<!--MESSAGES-->
	<methodlist>
		<method name="bang">
			<arglist />
			<digest>
				Left inlet triggers output.
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="int">
			<arglist>
				<arg name="value" type="int" optional="0" />
			</arglist>
			<digest>
				Left inlet triggers output, middle inlet sets value of list at current voice number position, right inlet sets voice number for next value received in the middle inlet.
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="value" type="float" optional="0" />
			</arglist>
			<digest>
				Left inlet triggers output, middle inlet sets value of list at current voice number position, right inlet sets voice number for next value received in the middle inlet.
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="value" type="list" optional="0" />
			</arglist>
			<digest>
				Left inlet triggers output, middle inlet sets value of list at current voice number position using the first element in the input list, right inlet sets voice number for next value received in the middle inlet using the first element in the input list.
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="anything">
			<arglist>
				<arg name="value" type="list" optional="0" />
			</arglist>
			<digest>
				Left inlet triggers output, middle inlet sets value of list at current voice number position using the first element in the input list, right inlet sets voice number for next value received in the middle inlet using the first element in the input list.
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="clear">
			<arglist />
			<digest>
				Clear the stored values from all voices
			</digest>
			<description>
				Sending the clear message to the left inlet clears all values stored in the object's voices.
			</description>
		</method>
		<method name="voice">
			<arglist>
				<arg name="index" type="int" optional="0" />
			</arglist>
			<digest>
				Select the voice to target
			</digest>
			<description>
				When sent to the middle or ight inlets, the word <m>voice</m>, followed by a number, sets the position in the list where the next value received in the middle inlet will be stored.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="fixed" get="1" set="1" type="int" size="1">
			<digest>
				Fixed Output Size
			</digest>
			<description>
				When the <at>fixed</at> attribute is enabled and the <at>voices</at> attribute is non-zero, all list output will be the size set by the value of the <at>voices</at> attribute. If <at>fixed</at> is not enabled, output lists are determined by the values received before the list is triggered as well as the triggering details of the <at>mode</at> attribute.
				<br />
				If the <at>fixed</at> attribute is enabled and the <at>voices</at> attribute is non-zero, any voice number received in the right inlet will cause subsequent input in the middle inlet to be ignored until a new voice number in range is received.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Fixed Output Size" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="mode" get="1" set="1" type="symbol" size="1">
			<digest>
				Set triggering behavior
			</digest>
			<description>
				The <m>mode</m> attribute determines how <o>mc.makelist</o> outputs its list in response to incoming values.
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="5">
					<enumlist>
						<enum name="passive">
							<digest>
								passive mode
							</digest>
							<description>
								Lists are output only when any message is received at the left inlet. The <m>passive</m> mode is useful when you want to decouple list output from incoming values.
							</description>
						</enum>
						<enum name="pak">
							<digest>
								passive mode
							</digest>
							<description>
								Any value arriving at the middle inlet will trigger an output (default value of the <at>mode</at> attribute).
							</description>
						</enum>
						<enum name="buddy">
							<digest>
								buddy mode
							</digest>
							<description>
								The <m>buddy</m> mode (named for the <o>buddy</o> object) outputs a list when at least one value for each list position has been received since the last output. In order to work properly in <m>buddy</m> mode, <o>mc.makelist</o> needs an initial value for its <at>voices</at> attribute so it knows how many voices to keep track of.
							</description>
						</enum>
						<enum name="auto">
							<digest>
								auto mode
							</digest>
							<description>
								The <m>auto</m> mode outputs a list immediately after a voice number received in the right inlet repeats for the first time after the last list output. This mode is useful when the list size might change over time.
							</description>
						</enum>
						<enum name="hitrig">
							<digest>
								hitrig mode
							</digest>
							<description>
								The <m>hitrig</m> mode outputs a list immediately after a value for the highest voice number (as determined by the value of <at>voices</at> attribute) is received.
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Trigger Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="voices" get="1" set="1" type="int" size="1">
			<digest>
				Voice Count
			</digest>
			<description>
				The <at>voices</at> attribute sets the maximum voice number <o>mc.makelist</o> will monitor. If the <at>fixed</at> attribute is enabled and the <at>voices</at> attribute is non-zero, the value of <at>voices</at> determines the size of the output list. Values not received are set to zero in the output list.
				<br />
				If the <at>mode</at> attribute is set to <m>hitrig</m>, the <at>voices</at> attribute sets the voice index that will always trigger list output. (This is true whether or not <at>fixed</at> is enabled.)
				<br />
				If the <at>fixed</at> attribute is enabled and the <at>voices</at> attribute is non-zero, any voice number received in the right inlet will cause subsequent input in the middle inlet to be ignored until a new voice number in range is received.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Voice Count" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example caption="" img="" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="mc.route" />
		<seealso name="mc.target" />
		<seealso name="mc_events_newfunctions" module="core" type="vignette" />
		<seealso name="mc_events_newobjects" module="core" type="vignette" />
		<seealso name="mc_poly_newfeatures" module="core" type="vignette" />
	</seealsolist>
</c74object>
