<?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="waveform~" module="msp" category="MSP U/I">
	<digest>
		buffer~ viewer and editor
	</digest>
	<description>
		Use the <o>waveform~</o> object to view or edit the contents of a <o>buffer~</o>.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
		<metadata name="tag">
			MSP U/I
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="float">
			<digest>
				Display Start (ms)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="float">
			<digest>
				Display Length (ms)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="2" type="float">
			<digest>
				Selection Start (ms) / (list) Selection Start - Selection End
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="3" type="float">
			<digest>
				Selection End (ms)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="4" type="float">
			<digest>
				Link In (for multi-channel viewing)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="float">
			<digest>
				Display Start (ms)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="float">
			<digest>
				Display Length (ms)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="2" type="float">
			<digest>
				Selection Start (ms)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="3" type="float">
			<digest>
				Selection End (ms)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="4" type="float">
			<digest>
				Mouse Output (x,y,state)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="5" type="float">
			<digest>
				Link Out (for multi-channel viewing)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<palette category="Audio" action="waveform~" pic="waveform~.svg" />
	<!--ARGUMENTS-->
	<objarglist>
		<objarg id="0" name="OBJARG_NAME" type="OBJARG_TYPE" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="bang">
			<arglist />
			<digest>
				Function depends on inlet
			</digest>
			<description>
				A bang in any inlet will cause <o>waveform~</o> to dump/output the value to which it is set specific to the inlet in which the <m>bang</m> is received.
			</description>
		</method>
		<method name="int">
			<arglist>
				<arg name="display-settings" optional="0" type="int" />
			</arglist>
			<digest>
				Function depends on inlet (data converted to floats)
			</digest>
			<description>
				Converted to <m>float</m> specific to each inlet.
				<br />
				<br />
				In left inlet: Sets the display start time in milliseconds. Changing this value will offset and/or zoom the view, so that the requested time in the <o>buffer~</o> sample data is aligned to the left edge of the display. The default is 0 (display starts at the beginning of the target <o>buffer~</o>).
				<br />
				<br />
				In 2nd inlet: Sets the display length in milliseconds. The default is the length of the <o>buffer~</o>.				<br />
				In 3rd inlet: Sets the start time of the selection range in milliseconds.
				<br />
				In 4th inlet: Sets the end time of the selection range in milliseconds.
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="display-settings" optional="0" type="float" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In left inlet: Sets the display start time in milliseconds. Changing this value will offset and/or zoom the view, so that the requested time in the <o>buffer~</o> sample data is aligned to the left edge of the display. The default is 0 (display starts at the beginning of the target <o>buffer~</o>).
				<br />
				<br />
				In 2nd inlet: Sets the display length in milliseconds. The default is the length of the <o>buffer~</o>.				<br />
				In 3rd inlet: Sets the start time of the selection range in milliseconds.
				<br />
				In 4th inlet: Sets the end time of the selection range in milliseconds.
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="start" optional="0" units="ms" type="float" />
				<arg name="length" optional="0" units="ms" type="float" />
				<arg name="select-start" optional="0" units="ms" type="float" />
				<arg name="select-end" optional="0" units="ms" type="float" />
				<arg name="select-start-ms" optional="0" units="samples" type="int" />
				<arg name="select-end-ms" optional="0" units="samples" type="int" />
			</arglist>
			<digest>
				Receive link data from other <o>waveform~</o> objects
			</digest>
			<description>
				In 5th inlet: The 5th inlet provides a link input, which allows any number of <o>waveform~</o> objects to share their start, length, select start, and select end values. Whenever any of these values changes, <o>waveform~</o> sends them all as a list out its right outlet. If this outlet is connected to the link input of another <o>waveform~</o> object, it will be updated as it receives the lists.
				<br />
				<br />
				To complete the circuit, the second <o>waveform~</o> object's list output can be connected to the link input of the first. Then, changes in either one (via mouse clicks, etc.) will be reflected in the other. This is mainly useful when the <o>waveform~</o> objects are viewing different channels of the same <o>buffer~</o>. Any number of <o>waveform~</o> objects can be linked in this fashion, forming one long, circular chain of links. In this case <o>waveform~</o> will prevent feedback from occurring.
			</description>
		</method>
		<method name="(drag)">
			<digest>
				Function depends on <m>setmode</m> attribute
			</digest>
			<description>
				Click and drag behavior for the <o>waveform~</o> object varies according to the object's mode of operation (see the <m>setmode</m> attribute).
			</description>
		</method>
		<method name="bpm">
			<arglist>
				<arg name="tempo" optional="0" type="int" />
				<arg name="beats-per-bar" optional="0" type="int" />
			</arglist>
			<digest>
				Specify beats per minute as the time reference unit
			</digest>
			<description>
				Specifies beats per minute as the time reference unit, relative to a tempo and number of beats per bar, both of which you can set with the <m>bpm</m> message. <o>waveform~</o> can also calculate a tempo that fits your current selection, via the <m>setbpm</m> message.
			</description>
		</method>
		<method name="buftime">
			<arglist>
				<arg name="drawing-interval" optional="0" type="int" />
			</arglist>
			<digest>
				Set the minimum drawing interval in milliseconds when a <o>waveform~</o> object is redrawn
			</digest>
			<description>
				The word <m>buftime</m>, followed by a number between 20 and 60000, sets the minimum drawing interval in milliseconds when a <o>waveform~</o> object is redrawn due to changes in its associated <o>buffer~</o> object. Setting a higher number value will make some difference in CPU utilization. The default value is 500ms.
			</description>
		</method>
		<method name="crop">
			<arglist />
			<digest>
				Crop the <o>buffer~</o> contents to the current selection
			</digest>
			<description>
				The <m>crop</m> message will trim the audio data in the target <o>buffer~</o> to the current selection. It resizes the <o>buffer~</o> to the selection length, copies the selected samples into it, and displays the result at default settings. The <o>buffer~</o> is erased, except for the selected range. This is a &quot;destructive edit,&quot; and cannot be undone.
			</description>
		</method>
		<method name="line">
			<arglist>
				<arg name="time" optional="0" units="ms" type="list" />
			</arglist>
			<digest>
				Draw a vertical line on the display
			</digest>
			<description>
				The word <m>line</m>, followed by a integer or floating point value representing a time in milliseconds, will cause a vertical line to be superimposed on the waveform display at the millisecond point indicated by the argument. The purpose of this is to be able to visually indicate where the playback point of the waveform is at any given moment. If the argument of <m>line</m> is a negative value, the vertical line will be hidden.
				<br />
				The word <m>line</m>, followed by a symbol, defines the unit used to display the line. The options are:
				<br />
				<br />
				bpm: beats per minute
				<br />
				ms: milliseconds (the default)
				<br />
				phase: phase (range 0. - 1.0)
				<br />
				samples
			</description>
		</method>
		<method name="mode">
			<arglist>
				<arg name="mouse-response-mode (symbol)" optional="0" type="list" />
			</arglist>
			<digest>
				Set legacy mouse response mode
			</digest>
			<description>
				This is a legacy message - this functionality is now provided by the <m>setmode</m> attribute.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Click and drag to manipulate the buffer contents
			</digest>
			<description>
				The way that the <o>waveform~</o> object responds to clicking and dragging varies according to how the object is configured using the <m>setmode</m> attribute.
			</description>
		</method>
		<method name="mouseoutput">
			<arglist>
				<arg name="mouse-output-mode (symbol)" optional="0" type="list" />
			</arglist>
			<digest>
				Determine when start and end mouse output is sent
			</digest>
			<description>
				The word <m>mouseoutput</m>, followed by a symbol argument, determines when selection start and end values are sent in response to mouse activity. Only the selection start and end (outlets 3 and 4) are affected. Mouse information is always sent from outlet 5, regardless of the mouseoutput mode. Valid symbol arguments are, <m>none</m>, <m>down</m>, <m>up</m>, <m>downup</m>, and <m>continuous</m>.				<br />
				<br />
				<m>none</m>- Selection start and end values are not sent in response to mouse activity. Sending the <m>mouseoutput</m> message with no argument has the same effect as the same message with the argument <m>none</m>.				<br />
				<m>down</m>- Causes the current selection start and end values to be sent (from outlets 3 and 4) only when you click inside the <o>waveform~</o>.				<br />
				<m>up</m>- Causes selection start and end to be sent only when you release the mouse button, after clicking inside the <o>waveform~</o>.				<br />
				<m>downup</m>- Causes selection start and end to be sent both when you click inside the <o>waveform~</o>, and when the mouse button is released.
				<br />
				<m>continuous</m>- Causes selection start and end to be sent on click, release, and throughout the drag operation, whenever the values change.
			</description>
		</method>
		<method name="name">
			<arglist>
				<arg name="buffer-name" optional="0" type="symbol" />
				<arg name="channel" optional="1" type="int" />
			</arglist>
			<digest>
				Link <o>waveform~</o> to a named <o>buffer~</o> object and display contents
			</digest>
			<description>
				Identical to the <m>set</m> message. The word <m>name</m>, followed by a symbol which is the name of a <o>buffer~</o> object, links <o>waveform~</o> to the target <o>buffer~</o>, which is drawn with default display values. An optional int argument sets the channel offset, for viewing multi-channel <o>buffer~</o> objects. The name of the linked <o>buffer~</o> is copied to the <at>buffername</at> attribute and the channel offset is copied to the <at>chanoffset</at> attribute. Both are saved with the patcher.
				<br />
				<br />
				If the <m>name</m> message is sent with no arguments, it will clear the <o>waveform~</o>.
			</description>
		</method>
		<method name="normalize">
			<arglist>
				<arg name="maximum-peak-value" optional="0" type="list" />
			</arglist>
			<digest>
				Normalize the <o>buffer~</o> contents
			</digest>
			<description>
				The word <m>normalize</m>, followed by a float, will scale the sample values in the target <o>buffer~</o> so that the highest peak matches the value given by the argument. This can cause either amplification or attenuation of the audio, but in either case, every <o>buffer~</o> value is scaled, and this activity cannot be undone.
			</description>
		</method>
		<method name="replacebuffercontents">
			<arglist>
				<arg name="filename" optional="0" type="symbol" />
			</arglist>
			<digest>
				Replace <o>buffer</o> contents and display new contents
			</digest>
			<description>
				The word <m>replacebuffercontents</m>, followed by a symbol argument, will replace the current contents of the buffer with which the <o>waveform~</o> object is associated and display the new buffer contents.
			</description>
		</method>
		<method name="set">
			<arglist>
				<arg name="buffer-name" optional="0" type="symbol" />
				<arg name="channel" optional="1" type="int" />
			</arglist>
			<digest>
				Link <o>waveform~</o> to a named <o>buffer~</o> object and display contents
			</digest>
			<description>
				Identical to the <m>name</m> message. The word <m>set</m>, followed by a symbol which is the name of a <o>buffer~</o> object, links <o>waveform~</o> to the target <o>buffer~</o>, which is drawn with default display values. An optional int argument sets the channel offset, for viewing multi-channel <o>buffer~</o> objects. The name of the linked <o>buffer~</o> is copied to the <at>buffername</at> attribute and the channel offset is copied to the <at>chanoffset</at> attribute. Both are saved with the patcher.
				<br />
				<br />
				If the <m>set</m> message is sent with no arguments, it will clear the <o>waveform~</o>.
			</description>
		</method>
		<method name="setbpm">
			<arglist />
			<digest>
				Calculate a new tempo based on the current selection range
			</digest>
			<description>
				The word <m>setbpm</m>, with no arguments, causes <o>waveform~</o> to calculate a tempo based on the current selection range. It automatically changes the display time unit to bpm, as if you had sent the message <m>unit bpm</m>. A tempo is selected such that the selection range constitutes a logical multiple or subdivision of the bar, preserving the current beats per bar value, and attempting to find the closest value to the current tempo that satisfies its criteria. When a suitable tempo is selected, the offset parameter is adjusted so that the start time of the selection range falls exactly on a bar line.
				<br />
				<br />
				The result is that the selection area will be framed precisely by a compatible tempo. One use of this technique is to quickly establish time labels and tick marks for a section of audio. After selecting a bar as accurately as possible, sending the <m>setbpm</m> message and turning on snap to label allows immediate quantization of the selection range to metric values.
				<br />
				<br />
				If the target <o>buffer~</o> contains an audio segment that is already cropped to a logical number of beats or bars, the best technique is to select the entire range of the <o>buffer~</o> (with messages to the select start and end inlets), followed by the <m>setbpm</m> message. If the <o>buffer~</o> is cropped precisely, the resulting tempo overlay should be quite accurate, and immediately reveal the tempo along with metric information.
				<br />
				<br />
				When a new tempo is calculated, it is sent from the rightmost outlet (the link outlet), to update any linked <o>waveform~</o> objects, and to be used in whatever manner required by the surrounding patch.
			</description>
		</method>
		<method name="snap">
			<arglist>
				<arg name="snap-mode (symbol)" optional="0" type="list" />
			</arglist>
			<digest>
				Sets the snap mode of the selection range
			</digest>
			<description>
				The word <m>snap</m>, followed by a symbol argument, Sets the snap mode of the <o>waveform~</o> selection range. <m>snap</m> causes the start and end points of the selection to automatically move to specific points in the <o>buffer~</o>, defined by the snap mode. Possible arguments are <m>none</m>, <m>grid</m>, and <m>zero</m>.				<br />
				<br />
				<m>none</m>- Disables snap to allow free selection. This is the default. The <m>snap</m> message with no argument has the same effect.
				<br />
				<m>grid</m>- Specifies that the selection start and end points should snap to the vertical grid lines, as set by the <m>grid</m> message. Since the spacing of the grid lines is affected by the current time measurement unit, and by the offset value (if an offset has been specified), snap to grid will be affected by these parameters as well.
				<br />
				<m>tick</m>- Causes the selection start and end to snap to the tick divisions specified by the ticks message.
				<br />
				<m>zero</m>- Instead of snapping the selection to a uniform grid, this mode searches for zero-crossings of the <o>buffer~</o> data. These are defined as the points where a positive sample follows a negative sample, or vice-versa. This can be useful to find loop and edit points.
			</description>
		</method>
		<method name="undo">
			<arglist />
			<digest>
				Revert waveform selection to previous start and end points
			</digest>
			<description>
				This mode works for <o>waveform~</o> selection only. It causes the selection start and end points to revert to their immediately previous values. This is helpful when you are making fine editing adjustments with the mouse and accidentally click in the wrong place, or otherwise cause the selection to change unintentionally. Repeated <m>undo</m> commands will toggle between the last two selection states.
			</description>
		</method>
		<method name="unit">
			<arglist>
				<arg name="unit-of-measurement (symbol)" optional="0" type="list" />
			</arglist>
			<digest>
				Set the unit of time measurement used by the display
			</digest>
			<description>
				The word <m>unit</m>, followed by a symbol argument, sets the unit of time measurement used by the display. Valid symbol arguments are <m>ms</m>, <m>samples</m>, <m>phase</m>, and <m>bpm</m>.				<br />
				<br />
				<m>ms</m>- Sets the display unit to milliseconds. This is the default.
				<br />
				<m>samples</m>- Causes time values to be shown as sample positions in the target <o>buffer~</o>. The first sample is numbered 0, unless the display has been shifted by the <m>offset</m> message.
				<br />
				<m>phase</m>- Causes time to be displayed according to phase within the <o>buffer~</o>, normalized so that the 0 refers to the first sample, and 1 refers to the last. This type of measurement unit is especially relevant when working with objects that use 0-1 signal sync, such as <o>phasor~</o> and <o>wave~</o>.				<br />
				<m>bpm</m>- Specifies beats per minute as the time reference unit, relative to a tempo and number of beats per bar, both of which you can set with the <m>bpm</m> message. <o>waveform~</o> can also calculate a tempo that fits your current selection, via the <m>setbpm</m> message.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="allowdrag" get="1" set="1" type="int" size="1">
			<digest>
				Allow Drag &amp; Drop
			</digest>
			<description>
				Toggles drag &amp; drop functionality.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="7.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Allow Drag &amp; Drop" />
				<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="attr_bpm" get="1" set="1" type="float" size="1">
			<digest>
				Ruler BPM
			</digest>
			<description>
				Specifies beats per minute as the time reference unit relative to a tempo and number of beats per bar, both of which you can set with the <m>bpm</m> message. <o>waveform~</o> can also calculate a tempo that fits your current selection, via the <m>setbpm</m> message.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Ruler" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="120." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Ruler BPM" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="beats" get="1" set="1" type="int" size="1">
			<digest>
				Ruler Beats
			</digest>
			<description>
				Toggles the display of time in beat units if the <m>waveform~</m> object is set to display time in bpm units (set using the <m>setunit</m> attribute). The default is 0 (off).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Ruler" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="4" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Ruler Beats" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="bgcolor" get="1" set="1" type="float" size="4">
			<digest>
				Background color
			</digest>
			<description>
				Sets the background color in RGBA format used to paint the entire object rectangle before the rest of the display components are drawn on top.
			</description>
			<attributelist>
				<attribute name="attr_attr_save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Color" />
				<attribute name="dynamiccolor_default" get="1" set="1" type="symbol" size="1" value="bgcolor" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Background Color" />
				<attribute name="legacydefault" get="1" set="1" type="float" size="4" value="0.235 0.698 0.678 1." />
				<attribute name="paint" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="preview" get="1" set="1" type="symbol" size="1" value="rect_fill" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="set" get="1" set="1" type="pointer" size="1" value="pointer" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="rgba" />
			</attributelist>
		</attribute>
		<attribute name="bordercolor" get="1" set="1" type="atom" size="1">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="buffername" get="1" set="1" type="symbol" size="1">
			<digest>
				Buffer object name
			</digest>
			<description>
				Sets the name of the <o>buffer~</o> object.
			</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="buffer~ Object Name" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="chanoffset" get="1" set="1" type="int" size="1">
			<digest>
				Channel offset for display
			</digest>
			<description>
				Specifies a given channel in a multi-channel audio file to be displayed. Channel numbering starts at 1, and values must be in the range 1-4.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="4">
					<enumlist>
						<enum name="1">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="2">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="3">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="4">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Channel" />
				<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="enum" />
			</attributelist>
		</attribute>
		<attribute name="clipdraw" get="1" set="1" type="int" size="1">
			<digest>
				Clip draw enable
			</digest>
			<description>
				When set to 1, will cause values being edited in draw mode to be clipped to the range of the display (as determined by the <m>vzoom</m> message). <m>clipdraw 0</m> disables clipping, allowing values to be scaled freely beyond the range of the window. The default is 0, no clipping.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Appearance" />
				<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="Draw with Clipping" />
				<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="grid" get="1" set="1" type="float" size="1">
			<digest>
				Snap selection to grid toggle
			</digest>
			<description>
				Specifies that the selection start and end points should snap to the vertical grid lines, as set by the <m>grid</m> message. Since the spacing of the grid lines is affected by the current time measurement unit, and by the offset value (if an offset has been specified), snap to grid will be affected by these parameters as well.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Appearance" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="1000." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Set Display Grid" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="gridcolor" get="1" set="1" type="float" size="4">
			<digest>
				Grid Color
			</digest>
			<description>
				Sets the gridcolor in RGBA format. The <m>gridcolor</m> attribute is mapped to the <m>elementcolor</m>  <link module="core" name="maxcolor" type="vignette">style color</link>.
			</description>
			<attributelist>
				<attribute name="attr_attr_save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Color" />
				<attribute name="dynamiccolor_default" get="1" set="1" type="symbol" size="1" value="elementcolor" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Grid Color" />
				<attribute name="legacydefault" get="1" set="1" type="float" size="4" value="0.392 0.392 0.392 1." />
				<attribute name="paint" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="preview" get="1" set="1" type="symbol" size="1" value="gridlines" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="set" get="1" set="1" type="pointer" size="1" value="pointer" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="rgba" />
				<attribute name="stylemap" get="1" set="1" type="symbol" size="1" value="elementcolor" />
			</attributelist>
		</attribute>
		<attribute name="invert" get="1" set="1" type="int" size="1">
			<digest>
				Invert Waveform Colors
			</digest>
			<description>
				Toggles inverting the colors used for selected and non-selected portions of the <m>waveform~</m> object's display. The default is 0 (non-inverted).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Appearance" />
				<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="Invert Waveform Colors" />
				<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="labelbgcolor" get="1" set="1" type="atom" size="1">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="labels" get="1" set="1" type="int" size="1">
			<digest>
				Numerical time measurement display toggle
			</digest>
			<description>
				Toggles the display of the numerical labels of time measurement across the top of the display. Any non-zero int causes the labels to be drawn. An argument of <m>0</m>, or no argument, disables them.
			</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="Ruler" />
				<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="Show Time Ruler" />
				<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="labeltextcolor" get="1" set="1" type="atom" size="1">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="linecolor" get="1" set="1" type="atom" size="1">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="invisible" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="obsolete" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="norulerclick" get="1" set="1" type="int" size="1">
			<digest>
				Ruler area click and drag toggle
			</digest>
			<description>
				Toggles clicking and dragging in the ruler area of the <o>waveform~</o> display. The default is enabled.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Ruler" />
				<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="No Ruler Click" />
				<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="offset" get="1" set="1" type="float" size="1">
			<digest>
				Label and time measurement marking shift
			</digest>
			<description>
				Causes all labels and time measurement markings to be shifted by a specified number of milliseconds. Snap behavior is shifted as well. <m>offset</m> can be removed by sending the message <m>offset 0.</m>, or the <m>offset</m> message with no argument.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Appearance" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="0." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Waveform Offset" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="outmode" get="1" set="1" type="int" size="1">
			<digest>
				Mouse activity for start/end value mode select
			</digest>
			<description>
				Determines when selection start and end values are sent in response to mouse activity. Only the selection start and end (outlets 3 and 4) are affected. Mouse information is always sent from outlet 5, regardless of the selected mode.
				<br />
				<m>none</m>: Selection start and end values are not sent in response to mouse activity. Sending the <m>outmode</m> message with no argument has the same effect as the same message with the argument <m>none</m>.				<br />
				<m>down</m>: Causes the current selection start and end values to be sent (from outlets 3 and 4) only when you click inside the <o>waveform~</o> object's display.
				<br />
				<m>up</m>: Causes selection start and end to be sent only when you release the mouse button, after clicking inside the <o>waveform~</o> object's display..
				<br />
				<m>downup</m>: Causes selection start and end to be sent both when you click inside the <o>waveform~</o> object's display., and when the mouse button is released.
				<br />
				<m>continuous</m>: Causes selection start and end to be sent on click, release, and throughout the drag operation, whenever the values change.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="4" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Mouse Output Mode" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="quiet" get="1" set="1" type="int" size="1">
			<digest>
				Waveform output drag value toggle
			</digest>
			<description>
				Toggles outputting values from the <m>waveform~</m> object while dragging. The default is 0 (send values while dragging) inverting the colors used for selected and non-selected portions of the <m>waveform~</m> object's display. The default is 0 (output data while dragging).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<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="Don't Send Values While Dragging" />
				<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="selectalpha" get="1" set="1" type="float" size="1">
			<digest>
				Legacy select color alpha
			</digest>
			<description>
				This attribute is used to import older patches that contain <o>waveform~</o> objects. Previously, the selection rectangle is painted using two legacy messages (rgb2 and rgb7) and a &quot;blend&quot; transfer mode. Max uses the alpha channel to set the selection color, and will automatically apply this attribute to older version patches containing this object. rectangle.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Color" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="0.5" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Legacy Select Color Alpha" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="selectioncolor" get="1" set="1" type="float" size="4">
			<digest>
				Rectangular selection range color
			</digest>
			<description>
				Sets the selection rectangle color which identifies the selection range in RGBA format.
			</description>
			<attributelist>
				<attribute name="attr_attr_save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Color" />
				<attribute name="dynamiccolor_default" get="1" set="1" type="symbol" size="1" value="selectioncolor" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Selection Color" />
				<attribute name="legacydefault" get="1" set="1" type="float" size="4" value="0. 0.372 1. 0.5" />
				<attribute name="paint" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="preview" get="1" set="1" type="symbol" size="1" value="rect_fill" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="set" get="1" set="1" type="pointer" size="1" value="pointer" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="rgba" />
			</attributelist>
		</attribute>
		<attribute name="setmode" get="1" set="1" type="int" size="1">
			<digest>
				Mouse activity mode
			</digest>
			<description>
				Determines how the <o>waveform~</o> object responds to mouse activity.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Behavior" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="5">
					<enumlist>
						<enum name="None">
							<digest>
								Set display only mode
							</digest>
							<description>
								Causes <o>waveform~</o> to enter a &quot;display only&quot; mode, in which clicking and dragging have no effect. For convenience, and to add custom interface behavior, mouse activity is still sent according to the mouseoutput mode. A <m>mode</m> message with no argument has the same effect as <m>mode none</m>.
							</description>
						</enum>
						<enum name="Select">
							<digest>
								Set default display mode
							</digest>
							<description>
								Sets the default display mode of the <o>waveform~</o> object. In select mode, the cursor appears as an I-beam within the <o>waveform~</o> display area. You can click and drag with the mouse to select a range of values. Mouse activity will cause <o>waveform~</o> to generate update messages, according to the mouseoutput setting.
							</description>
						</enum>
						<enum name="Loop">
							<digest>
								Set loop display mode
							</digest>
							<description>
								Sets an alternative loop selection style that uses vertical mouse movement to grow and shrink the selection length, while horizontal movement is mapped to position. This works well to control a <o>groove~</o> object. When loop mode is selected, moving your cursor inside the display area changes its appearance to a double I-beam.
							</description>
						</enum>
						<enum name="Move">
							<digest>
								Set move display mode
							</digest>
							<description>
								Sets the move display mode of the <o>waveform~</o> object. This mode allows you to navigate the <o>waveform~</o> view. Vertical mouse movement lets you zoom in and out, while horizontal movement scrolls through the time range of the x-axis. Clicking on a point in the graph makes it the center reference point for the rest of the mouse event (until the mouse button is released). This lets you &quot;grab&quot; a spot and zoom in on it without having to constantly re-center the display.
							</description>
						</enum>
						<enum name="Draw">
							<digest>
								Set draw display mode
							</digest>
							<description>
								Sets the draw display mode of the <o>waveform~</o> object. This mode allows you to edit the values of the target <o>buffer~</o>, using a pencil tool. Clicking and dragging in draw mode directly changes the <o>buffer~</o> samples, and can not be undone. Sample values are interpolated linearly as you drag, resulting in a continuous change, even if you are zoomed out too far to see the individual samples.
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Click Mode" />
				<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="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="setunit" get="1" set="1" type="int" size="1">
			<digest>
				Time measurement unit
			</digest>
			<description>
				Sets the unit of time measurement used by the display.
			</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="Ruler" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="4">
					<enumlist>
						<enum name="Millisecond">
							<digest>
								Set timing to milliseconds
							</digest>
							<description>
								Sets the display unit to milliseconds (the default).
							</description>
						</enum>
						<enum name="Samples">
							<digest>
								Set timing to sample position in the <o>buffer~</o> 
							</digest>
							<description>
								Causes time values to be shown as sample positions in the target <o>buffer~</o>. The first sample is numbered 0, unless the display has been shifted by the <m>offset</m> message.
							</description>
						</enum>
						<enum name="Phase">
							<digest>
								Set timing to phase within the <o>buffer~</o> 
							</digest>
							<description>
								Causes time to be displayed according to phase within the <o>buffer~</o>, normalized so that the 0 refers to the first sample, and 1 refers to the last. This type of measurement unit is especially relevant when working with objects that use 0-1 signal sync, such as <o>phasor~</o> and <o>wave~</o>.
							</description>
						</enum>
						<enum name="BPM">
							<digest>
								Set timing to beats per minute
							</digest>
							<description>
								Specifies beats per minute as the time reference unit, relative to a tempo and number of beats per bar, both of which you can set with the <m>bpm</m> message. <o>waveform~</o> can also calculate a tempo that fits your current selection, via the <m>setbpm</m> message.
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Timing Units" />
				<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="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="snapto" get="1" set="1" type="int" size="1">
			<digest>
				Snap mode
			</digest>
			<description>
				Sets the snap mode of the <o>waveform~</o> selection range. <m>snap</m> causes the start and end points of the selection to automatically move to specific points in the <o>buffer~</o>, defined by the snap mode.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Ruler" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="3">
					<enumlist>
						<enum name="Nothing">
							<digest>
								Disable snap
							</digest>
							<description>
								Disables snap to allow free selection (the default).
							</description>
						</enum>
						<enum name="Grid">
							<digest>
								Snap start and end point to vertical grid lines
							</digest>
							<description>
								Specifies that the selection start and end points should snap to the vertical grid lines, as set by the <m>grid</m> attribute. Since the spacing of the grid lines is affected by the current time measurement unit, and by the offset value (if an offset has been specified), snap to grid will be affected by these parameters as well.
							</description>
						</enum>
						<enum name="Zero Crossing">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Snap" />
				<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="enumindex" />
			</attributelist>
		</attribute>
		<attribute name="style" get="1" set="1" type="symbol" size="1">
			<digest>
				Style
			</digest>
			<description>
				Sets the <link type="vignette" module="core" name="styles">style</link> to be applied to the object. Styles can be set using the <link type="vignette" module="core" name="format_palette">Format palette</link>.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Appearance" />
				<attribute name="default" get="1" set="1" type="symbol" size="1" value="" />
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="7.0.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Style" />
				<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="style" />
			</attributelist>
		</attribute>
		<attribute name="ticks" get="1" set="1" type="int" size="1">
			<digest>
				Show Horizontal Tick Marks
			</digest>
			<description>
				Specifies the number of ticks that should be drawn between each grid line. The default is eight. An argument of <m>0</m>, or no argument, disables the tick marks.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Ruler" />
				<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="Show Horizontal Tick Marks" />
				<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="vlabels" get="1" set="1" type="int" size="1">
			<digest>
				Show Volume Indicators
			</digest>
			<description>
				Toggles the drawing of vertical axis labels along the rightmost edge of the <o>waveform~</o> display. Any non-zero number causes the labels to be drawn. An argument of <m>0</m>, or no argument, disables them.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Ruler" />
				<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="Show Volume Indicators" />
				<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="voffset" get="1" set="1" type="float" size="1">
			<digest>
				Waveform Vertical Offset
			</digest>
			<description>
				Sets the vertical offset of the <o>waveform~</o> display. A value of 0. places the x-axis in the middle, which is the default.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Appearance" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="0." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Waveform Vertical Offset" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="vticks" get="1" set="1" type="int" size="1">
			<digest>
				Show Vertical Tick Marks
			</digest>
			<description>
				Disables or enables display of the vertical axis tick marks along the left and right edges of the <o>waveform~</o> display. Any non-zero int causes the tick marks to be drawn. An argument of <m>0</m>, or no argument, disables them.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Ruler" />
				<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="Show Vertical Tick Marks" />
				<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="vzoom" get="1" set="1" type="float" size="1">
			<digest>
				Waveform Vertical Zoom
			</digest>
			<description>
				Sets the vertical scaling of the <o>waveform~</o> display.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Appearance" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="1." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Waveform Vertical Zoom" />
				<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" />
			</attributelist>
		</attribute>
		<attribute name="waveformcolor" get="1" set="1" type="float" size="4">
			<digest>
				Waveform Color
			</digest>
			<description>
				Sets the foreground color in RGBA format used to draw the <o>buffer~</o> data as a waveform graph. The <m>waveformcolor</m> attribute is mapped to the <m>color</m>  <link module="core" name="maxcolor" type="vignette">style color</link>.
			</description>
			<attributelist>
				<attribute name="attr_attr_save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Color" />
				<attribute name="dynamiccolor_default" get="1" set="1" type="symbol" size="1" value="color" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Waveform Color" />
				<attribute name="legacydefault" get="1" set="1" type="float" size="4" value="0.13 0. 0. 1." />
				<attribute name="paint" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="preview" get="1" set="1" type="symbol" size="1" value="wave" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="set" get="1" set="1" type="pointer" size="1" value="pointer" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="rgba" />
				<attribute name="stylemap" get="1" set="1" type="symbol" size="1" value="color" />
			</attributelist>
		</attribute>
		<attribute name="zoom_orientation" get="1" set="1" type="int" size="1">
			<digest>
				Zoom orientation
			</digest>
			<description>
				Change the zoom orientation depending on mouse direction.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Appearance" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="Up">
							<digest>
								Zoom when mouse is moved up
							</digest>
							<description>
							</description>
						</enum>
						<enum name="Down">
							<digest>
								Zoom when mouse is moved down
							</digest>
							<description>
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Zoom Orientation" />
				<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="enumindex" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="waveform~.png" caption="waveform~ lets you view, select, and edit sample data from a buffer~ object" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="buffer~" />
		<seealso name="groove~" />
	</seealsolist>
	<misc name="Output">
		<entry name="float">
			<description>
				Out 1st outlet: The display start time of the waveform in milliseconds.
				<br />
				<br />
				Out 2nd outlet: The display length in milliseconds.
				<br />
				<br />
				Out 3rd outlet: The start time of the selection range in milliseconds.
				<br />
				<br />
				Out 4th outlet: The end time of the selection range in milliseconds.
			</description>
		</entry>
		<entry name="list">
			<description>
				Out 5th outlet: This is the mouse outlet, which sends information about mouse click/drag/release cycles that are initiated by clicking within the <o>waveform~</o> object. The list contains three numbers.
				<br />
				<br />
				The first number is a float specifying the horizontal (x) position of the mouse, in 0-1 scale units relative to the <o>waveform~</o> object. x is always 0 at the left edge of the <o>waveform~</o>, and 1. at the right edge.
				<br />
				<br />
				The second number in the list is the floating-point y value of the mouse, scaled to match the <o>buffer~</o> values. With the default <m>vzoom</m>= 1. and <m>voffset</m>= 0., the top of the <o>waveform~</o> gives a y value of 1, and the bottom is -1.
				<br />
				<br />
				Finally, the third number in the list is an int that indicates which portion of the mouse event is currently taking place. On mouse down, or click, this value is 1. During the drag, it is 2, and on mouse up it is 0. These can be helpful when creating custom responses to mouse clicks. Note that a drag (2) message is sent immediately after the mouse down (1) message, whether the mouse has moved or not, to indicate that the drag segment has begun.
				<br />
				<br />
				Out 6th outlet: <o>waveform~</o> outputs a list containing its display start time, display length, selection start time, and selection end time, whenever one of these values changes (by mouse activity, float input, etc.). See the link input information above for more information.
			</description>
		</entry>
	</misc>
</c74object>
