<?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="pattr" module="max" category="Data">
	<digest>
		Provide an alias with a named data wrapper
	</digest>
	<description>
		Stores its own data, or binds to another object to share its contents with other pattr-based objects (such as <o>pattrstorage</o>). Can be used for data routing or preset creation.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Max
		</metadata>
		<metadata name="tag">
			Data
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				messages or data in
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="OUTLET_TYPE">
			<digest>
				attribute value
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="OUTLET_TYPE">
			<digest>
				bindto connection
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="2" type="OUTLET_TYPE">
			<digest>
				dumpout
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="name" optional="1" type="symbol">
			<digest>
				Connection name
			</digest>
			<description>
				A symbol argument may be optionally used to set the <o>pattr</o> object's <m>name</m>. In the absence of an argument (or the explicit setting of the <m>name</m> attribute using the <m>@name</m> syntax), the <o>pattr</o> object is given an arbitrary, semi-random name, such as u197000004.
			</description>
		</objarg>
	</objarglist>
	<!--parameter-->
	<parameter />
	<!--MESSAGES-->
	<methodlist>
		<method name="bang">
			<arglist />
			<digest>
				Output current values
			</digest>
			<description>
				Outputs the data maintained by the <o>pattr</o> object from the left outlet.
			</description>
		</method>
		<method name="int">
			<arglist>
				<arg name="input" optional="0" type="int" />
			</arglist>
			<digest>
				Store and output data
			</digest>
			<description>
				An <m>int</m> is stored inside the <o>pattr</o> object and output from its left outlet. Optionally, the value is passed along to a bound object. (See the <m>bindto</m> attribute for more information on bound objects).
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="input" optional="0" type="float" />
			</arglist>
			<digest>
				Store and output data
			</digest>
			<description>
				<m>float</m> is stored inside the <o>pattr</o> object and output from its left outlet. Optionally, the value is passed along to a bound object. (See the <m>bindto</m> attribute for more information on bound objects).
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="input" optional="0" type="list" />
			</arglist>
			<digest>
				Store and output data
			</digest>
			<description>
				<m>list</m> is stored inside the <o>pattr</o> object and output from its left outlet. Optionally, the value is passed along to a bound object. (See the <m>bindto</m> attribute for more information on bound objects).
			</description>
		</method>
		<method name="anything">
			<arglist>
				<arg name="input" optional="0" type="list" />
			</arglist>
			<digest>
				Store and output data
			</digest>
			<description>
				Any <m>message</m> is stored inside the <o>pattr</o> object and output from its left outlet. Optionally, the value is passed along to a bound object. (See the <m>bindto</m> attribute for more information on bound objects).
			</description>
		</method>
		<method name="assign">
			<arglist>
				<arg name="input" optional="0" type="float" />
			</arglist>
			<digest>
				Store and output data
			</digest>
			<description>
				The word <m>assign</m>, followed by a floating point value, causes that value to be stored and displayed and sent out the <o>pattr</o> object's left outlet. If the object’s Parameter Enabled attribute is set (checked) and the Parameter Visibility attribute is set to Stored Only, the <m>assign</m> message will not add the new value to the Live application’s undo chain.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Open the Parameters window
			</digest>
			<description>
				Double-clicking on a <o>pattr</o> object that is parameter-enabled will open the Parameters Window in Max for Live.
			</description>
		</method>
		<method name="dictionary">
			<arglist>
				<arg name="input" type="symbol" optional="0" />
			</arglist>
			<digest>
				Store and output data.
			</digest>
			<description>
				A copy of a <m>dictionary</m> is stored inside the <o>pattr</o> object and output from its left outlet. Optionally, the dictionary is passed along to a bound object. (See the <m>bindto</m> attribute for more infomation on bound objects).
			</description>
			<discussion>
				The dictionary that is stored in pattr is not the exact same dictionary as what was sent in.  It is a copy of the initial dictionary.  If the pattr is bound to a dict object, it's internal dict copy will be updated.
			</discussion>
		</method>
		<method name="init">
			<arglist />
			<digest>
				Revert to the initial value
			</digest>
			<description>
				If the <o>pattr</o> object's <at>initial</at> attribute has been set, the <m>init</m> message will cause the <o>pattr</o> object's value to be set to value of the <at>initial</at> attribute.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="autorestore" get="1" set="1" type="int" size="1">
			<digest>
				Automatic restore state
			</digest>
			<description>
				Enables (1) or disables (0) the autorestore state of the <o>pattr</o> object. The default is 1 (enabled). When enabled, the <o>pattr</o> object will automatically output its last-saved value when the patcher is loaded (and, if bound to another object, send the value to that object. See the <m>bindto</m> attribute, below for more information on bound objects).
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Restore Saved Value at Patcher Load" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="bindto" get="1" set="1" type="symbol" size="1">
			<digest>
				Named object binding
			</digest>
			<description>
				The word <m>bindto</m>, which may be followed by an optional <m>symbol</m> argument, sets the <o>pattr</o> object's binding state. The default state is unbound (no arguments). By default, the <o>pattr</o> object maintains its own data. When &quot;bound&quot; using the <m>bindto</m> feature, a <o>pattr</o> object maintains the data for the other object and automatically gets and sets values for that object. <m>bindto</m> takes an optional <m>symbol</m> argument, which specifies the name of the object to which <o>pattr</o> will bind. Binding targets need not be at the same patcher-level as the <o>pattr</o> object. In this case, a double-colon syntax ('::') is used to separate levels of patcher hierarchy for the purposes of describing a path for name resolution (e.g. somepatcher::someobject). If the named object is at a higher patcher-level than the pattr object, the word parent can be used to refer to a patcher at a higher level (e.g. parent::objectaboveme, parent::parent::objectaboveobjectaboveme or <i>parent::patchernexttome::someobject</i>).
				<br />
				<br />
				If the named object contains attributes, and the user wishes to bind to a specific attribute, the same double-colon syntax is used to specify the name of that attribute (e.g. someobject::someattribute). A <m>bindto</m> message sent without an argument unbinds the <o>pattr</o> object from any bound object, and causes it to resume the maintenance its own internal state. See the pattr helpfile for more information about this feature.
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Bound Object" />
			</attributelist>
		</attribute>
		<attribute name="default_active" get="1" set="1" type="int" size="1">
			<digest>
				Active state
			</digest>
			<description>
				Enables (1) or disables (0) the <o>pattr</o> object's default active state, when it is discovered by a <o>pattrstorage</o> object. The default is 1 (active). See the Reference for the <o>pattrstorage</o> object for more information.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Pattrstorage" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Pattrstorage Default Active State" />
			</attributelist>
		</attribute>
		<attribute name="default_interp" get="1" set="1" type="atom" size="2">
			<digest>
				Interpolation mode
			</digest>
			<description>
				The word <m>default_interp</m>, followed by a symbol and an optional 2nd argument, defines the <o>pattr</o> object's default interpolation setting, when it is discovered by a <o>pattrstorage</o> object. The default is <m>linear</m>. See the Reference for the <o>pattrstorage</o> object for more information.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Pattrstorage" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Pattrstorage Default Interpolation Mode" />
			</attributelist>
		</attribute>
		<attribute name="default_priority" get="1" set="1" type="int" size="1">
			<digest>
				Default priority
			</digest>
			<description>
				The word <m>default_priority</m>, followed by an <m>int</m>, defines the <o>pattr</o> object's default priority, when it is discovered by a <o>pattrstorage</o> object. The default is <m>0</m>. See the Reference for the <o>pattrstorage</o> object for more information.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Pattrstorage" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Pattrstorage Default Priority" />
			</attributelist>
		</attribute>
		<attribute name="dirty" get="1" set="1" type="int" size="1">
			<digest>
				Patcher-dirty flag
			</digest>
			<description>
				Enables (1) or disables (0) the patcher-dirty flag. The default is 0 (disabled). When enabled, the <o>pattr</o> object will dirty the patch whenever its state changes.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Dirty Patcher Flag" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="initial" get="1" set="1" type="atom" size="256">
			<digest>
				Initial value
			</digest>
			<description>
				The <o>pattr</o> object's initial value. If <at>autorestore</at> is set to <m>1</m>, this value will be restored upon patch load, rather than the value of the <o>pattr</o> object at the time the patch was last saved. The <at>initial</at> attribute can be used in combination with the <m>init</m> message to reset the <o>pattr</o> object to the specified value.
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Pattrstorage" />
				<attribute name="default" get="1" set="1" type="atom" size="0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Initial Value" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="invisible" get="1" set="1" type="int" size="1">
			<digest>
				pattrstorage visibility flag
			</digest>
			<description>
				The word <m>invisible</m>, followed by a 1 or 0, determines whether or not the <o>pattr</o> object is invisible to <o>pattrstorage</o> objects. The default is 0 (visible).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Pattrstorage" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Hide From Pattrstorage" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="parameter_enable" get="1" set="1" type="int" size="1">
			<digest>
				Enable parameter mode handling
			</digest>
			<description>
				Enables use of this object with <link type="vignette" module="core" name="live_parameters">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="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="thru" get="1" set="1" type="int" size="1">
			<digest>
				Throughput mode
			</digest>
			<description>
				Enables (1) or disables (0) the <o>pattr</o> object's thru behavior. The default is 1 (enabled). When enabled, the object will output its value whenever it changes. When disabled, the object will only output its value when it receives a <m>bang</m> message.
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Output Value On Change" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="type" get="1" set="1" type="symbol" size="1">
			<digest>
				Data type
			</digest>
			<description>
				The word <m>type</m>, followed by a symbol corresponding to a valid type, sets the data type maintained internally by the <o>pattr</o> object, when the object is not bound. The default is <m>atom</m>. Available types include <m>char</m>, <m>long</m>, <m>float32</m>, <m>float64</m>, <m>symbol</m>, and <m>atom</m>.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="default" get="1" set="1" type="symbol" size="1" value="atom" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="6">
					<enumlist>
						<enum name="atom">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="char">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="long">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<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="symbol">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Data Type" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="pattr.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="autopattr" />
		<seealso name="pattrforward" />
		<seealso name="pattrhub" />
		<seealso name="pattrmarker" />
		<seealso name="pattrstorage" />
		<seealso name="pattrchapter01" module="max" type="tutorial" />
	</seealsolist>
	<discussion>
		The <o>pattr</o> object can be thought of as an alias for data. It functions in two modes. By default, the <o>pattr</o> object maintains its own data. This data can be of any normal Max type (int, float, list, symbol). The <o>pattr</o> object can also bind to another object, as long as that object has a patcher name that the <o>pattr</o> object can resolve. In this instance, the <o>pattr</o> object merely <i>refers</i> to the data inside of another object, and is restricted to the type of data expected by the object. When bound, data sent to the <o>pattr</o> object is forwarded to the referred object (target), and changes made to the target are reflected in the <o>pattr</o> object.
	</discussion>
	<misc name="Output">
		<entry name="anything">
			<description>
				Out left outlet: When the <o>pattr</o> object receives new data, a <m>bang</m>, or registers the change of the value of its bound object, this value is output.
				<br />
				<br />
				Out right outlet: <m>get</m> queries to the <o>pattr</o> object's attributes are output from the right outlet, also known as the <m>dumpout</m> outlet.
			</description>
		</entry>
		<entry name="(internal)">
			<description>
				A user interface object (or other object that responds to the internal messaging system utilized by <o>pattr</o>) connected to the middle outlet of the <o>pattr</o> object will be automatically named (if necessary) and bound to. The name is automatically generated from the object's class name (e.g. a connected <link name="number" type="refpage">number box</link> might be named number[1].) Currently, the following Max user interface objects can be bound in this fashion: <o>dial</o>, <o>function</o>, <o>gain~</o>, <link name="gswitch2" type="refpage">ggate</link>, <o>gswitch</o>, <o>js</o> (requires user support), <o>jsui</o> (see the JavaScript in Max manual for more information on using the <o>pattr</o> system with JavaScript), <o>led</o>, <o>matrixctrl</o>, <o>multislider</o>, <o>nslider</o>, <link name="number" type="refpage">number box</link> (int and float), <o>pattr</o>, <o>pattrstorage</o>, <o>pictctrl</o>, <o>pictslider</o>, <o>radiogroup</o>, <o>rslider</o>, <o>slider</o>, <o>swatch</o>, <o>table</o>, <o>textedit</o>, <o>toggle</o>, and <o>umenu</o>.
			</description>
		</entry>
	</misc>
</c74object>
