<?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="lookup~" module="msp" category="MSP Sampling">
	<digest>
		Transfer function lookup table
	</digest>
	<description>
		<o>lookup~</o> allows you to use a table of samples (<o>buffer~</o> object) to do waveshaping on a signal, in which the Y values of an input signal are used as X values to look up new signal values. Input values of -1 to +1 are mapped to table values between 0 (or the specified sample offset) and the size of the table.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
		<metadata name="tag">
			MSP Sampling
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="signal">
			<digest>
				Input To Distort
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="signal/float">
			<digest>
				Sample Offset
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="2" type="signal/float">
			<digest>
				Lookup Table Size
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="signal">
			<digest>
				Distorted Output
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="buffer-name" optional="0" type="symbol">
			<digest>
				Buffer name
			</digest>
			<description>
				Names the <o>buffer~</o> object whose sample memory is used by <o>lookup~</o> for table lookup.
			</description>
		</objarg>
		<objarg name="sample-offset" optional="1" type="int">
			<digest>
				Sample offset
			</digest>
			<description>
				After the <o>buffer~</o> name, you may specify the sample offset in the sample memory of the <o>buffer~</o> used <m /> for a signal value of -1. The default offset is 0. The offset value is followed by an optional table size that defaults to 512. Note that the actual <o>lookup~</o> table size is equal to the table size (set using the second argument) minus the offset (set using first argument), so raising the offset value will decrease the table size. The <o>lookup~</o> object always uses the first channel in a multi-channel <o>buffer~</o>. The
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="int">
			<arglist>
				<arg name="offset" optional="0" type="int" />
				<arg name="table-size" optional="0" type="int" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				The settings of offset and table size can be changed with a number in the middle or right inlets. If a signal is connected to one of these inlets, a number in the corresponding inlet is ignored.
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="offset" optional="0" type="int" />
				<arg name="table-size" optional="0" type="int" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				The settings of offset and table size can be changed with an number in the middle or right inlets. If a signal is connected to one of these inlets, a number in the corresponding inlet is ignored.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Open a buffer display window
			</digest>
			<description>
				Double-clicking on <o>lookup~</o> opens an editing window where you can vieW the contents of its associated <o>buffer~</o> object.
			</description>
		</method>
		<method name="set">
			<arglist>
				<arg name="buffer-name" optional="0" type="symbol" />
			</arglist>
			<digest>
				Set the <o>buffer~</o> object used for table lookup
			</digest>
			<description>
				The word <m>set</m>, followed by a <m>symbol</m>, changes the associated <o>buffer~</o> object.
			</description>
		</method>
		<method name="signal">
			<arglist />
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In left inlet: Signal values are mapped by amplitude to values stored in a <o>buffer~</o>. Each sample in the incoming signal within the range -1 to 1 is mapped to a corresponding value in the current table size number of samples of the <o>buffer~</o>. Signal values between -1 and 0 are mapped to the first half of the total number of samples after the current sample offset. Signal values between 0 and 1 are mapped to the next half of the samples. Input amplitude exceeding the range from -1 to 1 results in an output of 0.
				<br />
				<br />
				In middle inlet: Sets the offset into the sample memory of a <o>buffer~</o> used to map samples coming in the left inlet. The sample at the specified offset corresponds to an input value of -1.
				<br />
				<br />
				In right inlet: Sets the number of samples in a <o>buffer~</o> used for the table. Samples coming in the left inlet between -1 and 1 will be mapped by amplitude to the specified range of samples. The default value is 512. <o>lookup~</o> changes the table size before it computes each vector but not within a vector. It uses the first sample in a signal vector coming in the right inlet as the table size.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<!--EXAMPLE-->
	<examplelist>
		<example img="lookup~.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="buffer~" />
		<seealso name="peek~" />
		<seealso name="07_samplingchapter05" module="msp" type="tutorial" />
	</seealsolist>
	<misc name="Output">
		<entry name="signal">
			<description>
				Each sample in the incoming signal within the range -1 to 1 is mapped to a corresponding position in the current table size number of samples of the named <o>buffer~</o> object, and the stored value is sent out.
			</description>
		</entry>
	</misc>
</c74object>
