<?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.table~" module="" category="Multichannel">
	<digest>
		Signal Table Lookup (multichannel)
	</digest>
	<description>
		Use <o>table~</o> to remap incoming signal values with a <o>table</o> object.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="signal">
			<digest>
				Input
			</digest>
			<description>
				Incoming signal values are used as indices for table lookup. If your input signal is not in the range of 0 to the table size, use the <at>inmap</at> attribute to specify an input range to map to the entire size of the table. Note the indices are zero-relative so for a table of size 128 the indices range from 0 to 127.
			</description>
		</inlet>
		<inlet id="1" type="signal">
			<digest>
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="signal">
			<digest>
				Output
			</digest>
			<description>
				Output signal values produced by table lookup. If you want to adjust the range of the table values (for example so they range from 0 to 1), use the <at>outscale</at> attribute to specify an output range.
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg id="0" name="OBJARG_NAME" type="OBJARG_TYPE" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
		</objarg>
	</objarglist>
	<!--parameter-->
	<parameter />
	<!--MESSAGES-->
	<methodlist>
		<method name="bang">
			<arglist />
			<digest>
				Output random value
			</digest>
			<description>
				The <m>bang</m> message treats the table as a probability distribution and outputs a signal corresponding to a randomly chosen index within the table. A location in the table with a higher value is more likely to have its index selected.
			</description>
		</method>
		<method name="int">
			<arglist>
				<arg name="ARG_NAME_0" type="int" optional="0" />
			</arglist>
			<digest>
				Set index for table lookup
			</digest>
			<description>
				See description for <m>float</m> 
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="ARG_NAME_0" type="float" optional="0" />
			</arglist>
			<digest>
				Set index for table lookup
			</digest>
			<description>
				When a signal is not connected to the inlet of <o>table~</o>, a number sets the index to use for table lookup output. If the number contains a fractional part and <at>interp</at> is set to Linear, the output will be interpolated between two table values. The number is also mapped to an index according to the current setting of the <at>inmap</at> attribute and the table value is scaled according to the <at>outscale</at> attribute.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Edit table values
			</digest>
			<description>
				Double-clicking on a <o>table~</o> object opens a window where you can edit the values of the lookup table.
			</description>
		</method>
		<method name="goto">
			<arglist>
				<arg name="ARG_NAME_0" type="float" optional="0" />
			</arglist>
			<digest>
				Change index for prev and next messages
			</digest>
			<description>
				The word <m>goto</m>, followed by a table index, sets the next table index used by either the <m>prev</m> or <m>next</m> messages as they increment or decrement through the table. Unlike a <m>float</m> or <m>int</m>, <m>goto</m> itself does not change the output of the <o>table~</o> object and its index is not modified by the <at>inmap</at> attribute.
			</description>
		</method>
		<method name="next">
			<arglist />
			<digest>
				Increment table index
			</digest>
			<description>
				When a signal is not connected to the inlet of <o>table~</o>, the <m>next</m> message adds one to the most recent table index set by the <m>int</m>, or <m>float</m>, then causes the <o>table~</o> to output the value at this index as a signal. If a <m>goto</m> message immediately preceded <m>next</m>, the value at the specified index is output. Note that <m>next</m> does not force the table index to an integer value, so it preserves any fractional part of the index caused by a previous <m>float</m> message. When <m>next</m> increments the index and it is larger than the table size, it wraps around to zero.
			</description>
		</method>
		<method name="prev">
			<arglist />
			<digest>
				Decrement table index
			</digest>
			<description>
				When a signal is not connected to the inlet of <o>table~</o>, the <m>prev</m> message subtracts one from the most recent table index set by the <m>int</m>, or <m>float</m>, then causes the <o>table~</o> to output the value at this index as a signal. If a <m>goto</m> message immediately preceded <m>prev</m>, the value at the specified index is output. Note that <m>prev</m> does not force the table index to an integer value, so it preserves any fractional part of the index caused by a previous <m>float</m> message. When <m>prev</m> decrements the index and it becomes less than zero, it will wrap around to the end of the table.
			</description>
		</method>
		<method name="signal">
			<arglist />
			<digest>
				Signal Input
			</digest>
			<description>
				Incoming signal values are used as indices for table lookup.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="embed" get="1" set="1" type="int" size="1">
			<digest>
				Save Data With Patcher
			</digest>
			<description>
				When the <at>embed</at> attribute is enabled, table values are saved in a patcher file and restored when it is reopened.
			</description>
			<attributelist>
				<attribute name="default" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Save Data With Patcher" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="extend" get="1" set="1" type="int" size="1">
			<digest>
				Index Outside Table Handling
			</digest>
			<description>
				The <at>extend</at> attribute controls how <o>table~</o> responds when an input index value (either signal or float) is less than zero or greater than the table size.
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="4">
					<enumlist>
						<enum name="Zero">
							<digest>
								Output zero
							</digest>
							<description>
								When <at>extend</at> is Zero (0), a zero signal is output when the index is outside the table bounds.
							</description>
						</enum>
						<enum name="Extend">
							<digest>
								Output lowest or highest table values
							</digest>
							<description>
								When <at>extend</at> is set to Extend (1), <o>table~</o> outputs the value at index 0 is output when the input index less than zero. It outputs the value at the highest table index is when the input index is greater than the table size.
							</description>
						</enum>
						<enum name="Wrap">
							<digest>
								Wrap index
							</digest>
							<description>
								When <at>extend</at> is set to Wrap (2), <o>table~</o> performs a modulo operation on the input index. Example: if the table size is 128 and the input is 130, the value at index 2 (130 mod 128) will be output.
							</description>
						</enum>
						<enum name="Ignore">
							<digest>
								Don't change output
							</digest>
							<description>
								When <at>extend</at> is set to Ignore (3), any input index outside the table size is ignored and does not change the output.
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Index Outside Table Handling" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="inmap" get="1" set="1" type="atom" size="1">
			<digest>
				Input Scale to Table Index
			</digest>
			<description>
				The <at>inmap</at> attribute specifies a range of input samples to map to table indices. For instance if your input signal will be between 0 and 1, you can use an <at>inmap</at> of <m>0 1</m>, which will scale to the current size of the table. If the table changes size, the current input map adjusts automatically. To clear the current <at>inmap</at>, use a value of <m>none</m> or <m>0 0</m>.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Input Scale to Table Index" />
			</attributelist>
		</attribute>
		<attribute name="inputmode" get="1" set="1" type="int" size="1">
			<digest>
				Input Mode
			</digest>
			<description>
				The <at>inputmode</at> attribute determines how input values produce output values.
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="3">
					<enumlist>
						<enum name="Lookup">
							<digest>
								Lookup
							</digest>
							<description>
								When <at>inputmode</at> is set to Lookup (0), an incoming value is used as an index into the table.
							</description>
						</enum>
						<enum name="Increment Index">
							<digest>
								Increment Index
							</digest>
							<description>
								When <at>inputmode</at> is set to Increment Index (1), a change event in the input signal (according to the setting of the <at>triggermode</at> attribute) causes the table to output the value at the next index.
							</description>
						</enum>
						<enum name="Random Distribution">
							<digest>
								Random Distribution
							</digest>
							<description>
								When <at>inputmode</at> is set to Random Distribution (2), a change event in the input signal (according to the setting of the <at>triggermode</at> attribute) causes the table to output a value based on using the table data as a probability distribution. See the <m>bang</m> message for more details.
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Input Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="interp" get="1" set="1" type="int" size="1">
			<digest>
				Interpolation Mode
			</digest>
			<description>
				The <at>interp</at> attribute determines how input values between integer table indices produce output.
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="3">
					<enumlist>
						<enum name="None">
							<digest>
								Truncate Index
							</digest>
							<description>
								When <at>interp</at> is set to None (0), an incoming value is truncated to its integer value before the lookup. No interpolation is performed.
							</description>
						</enum>
						<enum name="Linear">
							<digest>
								Linear Interpolation
							</digest>
							<description>
								When <at>interp</at> is set to Linear (1), the output for any input value between two table indices is linearly interpolated between the table values at those two indices. For example, an input of 1.5 -- with table values of 5 at index 1 and 10 at index 2 -- produces an output of 7.5.
							</description>
						</enum>
						<enum name="Round">
							<digest>
								Round Index
							</digest>
							<description>
								When <at>interp</at> is set to Round (2), an incoming value is rounded to the nearest integer value before the lookup. No interpolation is performed.
							</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="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="name" get="1" set="1" type="symbol" size="1">
			<digest>
				Table Name
			</digest>
			<description>
				The <at>name</at> attribute permits table data to be shared among multiple table objects (<o>table~</o>, <o>table</o>, or <o>itable</o>) with the same name. Changing the <at>name</at> switches the table used for lookup.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Table Name" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="outscale" get="1" set="1" type="atom" size="1">
			<digest>
				Output Scaling
			</digest>
			<description>
				The <at>outscale</at> attribute specifies a range of output samples. The current range of the table will map to the specified range. For example, if you want the output of <o>table~</o> to range from 0 - 1, set <at>outscale</at> to <m>0 1</m>. The output scaling adjusts automatically to keep output values in the specified range even if the table range changes. To clear the current <at>outscale</at> use a value of <m>none</m> or <m>0 0</m>.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Output Scaling" />
			</attributelist>
		</attribute>
		<attribute name="parameter_enable" get="1" set="1" type="int" size="1">
			<digest>
				Enable parameter mode
			</digest>
			<description>
				Enables use of this object with <link module="core" name="live_parameters" type="vignette">Max for Live Parameters</link>.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Parameter" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Parameter Mode Enable" />
				<attribute name="order" get="1" set="1" type="int" size="1" value="5" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="parameter_mappable" get="1" set="1" type="int" size="1">
			<digest>
				Visible to Mapping
			</digest>
			<description>
				When <at>parameter_mappable</at> is enabled, the object will be available for mapping to keyboard or MIDI input using the <link module="core" name="mappings" type="vignette">Mappings feature</link>. (default = 1).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Parameter" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Visible to Mapping" />
				<attribute name="order" get="1" set="1" type="int" size="1" value="10" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="range" get="1" set="1" type="int" size="1">
			<digest>
				Table Range
			</digest>
			<description>
				Sets the range of table values. If the <at>signed</at> attribute is not enabled, the maximum table value is one less than the range. For example if the <at>range</at> is 128, table values range from 0 to 127. If <at>signed</at> is enabled, table values range from +/- the <at>range</at> value. For example if the <at>range</at> is 128, table values will be -128 to 128.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Table Range" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="signed" get="1" set="1" type="int" size="1">
			<digest>
				Signed Values
			</digest>
			<description>
				If the <at>signed</at> attribute is enabled, table values range from +/- the <at>range</at> value. For example if the <at>range</at> is 128, table values will be -128 to 128. Changing the state of <at>signed</at> attribute does not modify table values.
			</description>
			<attributelist>
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Signed Values" />
				<attribute name="paint" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="size" get="1" set="1" type="int" size="1">
			<digest>
				Table Size
			</digest>
			<description>
				Sets the number of elements in the table. Indices range from 0 to one less than the <at>size</at>.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Table Size" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="triggermode" get="1" set="1" type="int" size="1">
			<digest>
				Trigger Mode
			</digest>
			<description>
				The <at>triggermode</at> attribute determines how input values are interpret as change events for triggering either an incremented index or random probability output according to the setting of the <at>inputmode</at> attribute. When <at>inputmode</at> is set to 0 (Lookup), the <at>triggermode</at> attribute has no effect and is disabled.
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="Zero to Non-Zero">
							<digest>
								Zero to Non-Zero
							</digest>
							<description>
								When <at>triggermode</at> is set to Zero to Non-Zero (0), a non-zero sample value in the input that follows a zero sample value causes a change event to occur.
							</description>
						</enum>
						<enum name="Change">
							<digest>
								Change
							</digest>
							<description>
								When <at>triggermode</at> is set to Change (1), a sample value in the input that differs from the previous value causes a change event to occur.
							</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="enumindex" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example caption="" img="" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="buffer~" />
		<seealso name="index~" />
		<seealso name="itable" />
		<seealso name="lookup~" />
		<seealso name="table" />
	</seealsolist>
	<mcwrapper>
		<mcwrappermethod name="applymessages" />
		<mcwrappermethod name="applynvalues" />
		<mcwrappermethod name="applyvalues" />
		<mcwrappermethod name="decide" />
		<mcwrappermethod name="deviate" />
		<mcwrappermethod name="ease.in_back" />
		<mcwrappermethod name="ease.in_bounce" />
		<mcwrappermethod name="ease.in_circular" />
		<mcwrappermethod name="ease.in_cubic" />
		<mcwrappermethod name="ease.in_elastic" />
		<mcwrappermethod name="ease.in_exponential" />
		<mcwrappermethod name="ease.in_out_back" />
		<mcwrappermethod name="ease.in_out_bounce" />
		<mcwrappermethod name="ease.in_out_circular" />
		<mcwrappermethod name="ease.in_out_cubic" />
		<mcwrappermethod name="ease.in_out_elastic" />
		<mcwrappermethod name="ease.in_out_exponential" />
		<mcwrappermethod name="ease.in_out_quadratic" />
		<mcwrappermethod name="ease.in_out_quartic" />
		<mcwrappermethod name="ease.in_out_quintic" />
		<mcwrappermethod name="ease.in_out_sine" />
		<mcwrappermethod name="ease.in_quadratic" />
		<mcwrappermethod name="ease.in_quartic" />
		<mcwrappermethod name="ease.in_quintic" />
		<mcwrappermethod name="ease.in_sine" />
		<mcwrappermethod name="ease.linear" />
		<mcwrappermethod name="ease.out_back" />
		<mcwrappermethod name="ease.out_bounce" />
		<mcwrappermethod name="ease.out_circular" />
		<mcwrappermethod name="ease.out_cubic" />
		<mcwrappermethod name="ease.out_elastic" />
		<mcwrappermethod name="ease.out_quadratic" />
		<mcwrappermethod name="ease.out_quartic" />
		<mcwrappermethod name="ease.out_quintic" />
		<mcwrappermethod name="ease.out_sine" />
		<mcwrappermethod name="exponential" />
		<mcwrappermethod name="generate" />
		<mcwrappermethod name="harmonic" />
		<mcwrappermethod name="increment" />
		<mcwrappermethod name="randomrange" />
		<mcwrappermethod name="replicatenvalues" />
		<mcwrappermethod name="replicatevalues" />
		<mcwrappermethod name="scaledexponential" />
		<mcwrappermethod name="setvalue" />
		<mcwrappermethod name="setvaluerange" />
		<mcwrappermethod name="smoothstep" />
		<mcwrappermethod name="spread" />
		<mcwrappermethod name="spreadexclusive" />
		<mcwrappermethod name="spreadincludefirst" />
		<mcwrappermethod name="spreadincludesecond" />
		<mcwrappermethod name="spreadinclusive" />
		<mcwrappermethod name="subharmonic" />
		<mcwrapperattr name="busymapname" />
		<mcwrapperattr name="bz" />
		<mcwrapperattr name="bzname" />
		<mcwrapperattr name="chans" />
		<mcwrapperattr name="fun" />
		<mcwrapperattr name="initialvalues" />
		<mcwrapperattr name="op" />
		<mcwrapperattr name="target" />
		<mcwrapperattr name="usebusymap" />
		<mcwrapperattr name="values" />
		<mcwrapperattr name="voiceprob" />
		<mcwrapperattr name="zero" />
	</mcwrapper>
</c74object>
