<?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="plot~" module="msp" category="U/I">
	<digest>
		Visualize two-dimensional data
	</digest>
	<description>
		Use the <o>plot~</o> object to graph sets of data as points across a domain. The source of the data to be visualized may be a Max list, an MSP <o>buffer~</o>, or an audio signal. The number of plots may be changed with the @numplots attribute, and each of these &quot;subplots&quot; is addressed through a dedicated inlet. A variety of out-of-the-box configurations are provided as Max object prototypes.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Max
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
		<metadata name="tag">
			Audio
		</metadata>
		<metadata name="tag">
			Filter
		</metadata>
		<metadata name="tag">
			Dictionary
		</metadata>
		<metadata name="tag">
			MSP FFT
		</metadata>
		<metadata name="tag">
			MSP U/I
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				Messages or Data for subplot 0
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="OUTLET_TYPE">
			<digest>
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<palette category="Data, Audio" action="plot~" pic="plot~.svg" />
	<!--ARGUMENTS-->
	<objarglist />
	<!--MESSAGES-->
	<methodlist>
		<method name="int">
			<arglist>
				<arg name="input" optional="0" type="int" />
			</arglist>
			<digest>
				Set the first value of a subplot
			</digest>
			<description>
				Set the first value of a subplot.
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="input" optional="0" type="float" />
			</arglist>
			<digest>
				Set the first value of a subplot
			</digest>
			<description>
				Set the first value of a subplot.
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="numbers-to-plot" optional="0" type="list" />
			</arglist>
			<digest>
				Data set to be plotted across the domain
			</digest>
			<description>
				Data set to be plotted across the domain. The inlet at which the list is received determines which subplot graphs the data. If the list is larger than the number of points in the plot, then the list will be truncated.
			</description>
		</method>
		<method name="definedomain">
			<arglist>
				<arg name="domain-start" optional="0" type="number" />
				<arg name="domain-end" optional="0" type="number" />
				<arg name="domain-style" optional="1" type="symbol" />
			</arglist>
			<digest>
				Define the domain for a subplot
			</digest>
			<description>
				Define the domain for the subplot associated with the inlet at which the message is received. The number of actual points will not change, as that is set with the @numpoints attribute. This message sets the domain of numbers spanned by those points. For example, there may be 256 points representing a domain of [0.0, 1.0]. In this case the domain is essentially a label for the points. An optional third argument specifies 'linear' vs 'log' scaling of the domain.
			</description>
		</method>
		<method name="definecolor">
			<arglist>
				<arg name="color" optional="0" units="rgba" type="color" />
			</arglist>
			<digest>
				Define the color used for drawing a subplot
			</digest>
			<description>
				Define the color used for drawing the subplot associated with the inlet at which the message is received. The order of the color components is red, green, blue, and alpha.
			</description>
		</method>
		<method name="definefilter">
			<arglist>
				<arg name="filter-name" optional="0" type="symbol" />
			</arglist>
			<digest>
				Define a filter to be applied to the data set before it is graphed
			</digest>
			<description>
				Defines a filter to be applied to the data set before it is graphed. There are currently two options available ('none' and 'atodb').
			</description>
		</method>
		<method name="defineline">
			<arglist>
				<arg name="line-style" optional="0" type="symbol" />
			</arglist>
			<digest>
				Define the style used to display lines in a subplot
			</digest>
			<description>
				Define the style used to display lines in the subplot associated with the inlet at which the message is received. Options are 'linear', 'lines', 'curve', 'origin', or 'none'.
				<br />
				<br />
				While 'lines' will display more quickly than 'linear', the 'linear' option will look better in some cases (usually when working with high thickness values). The difference between the display styles is related to how line segments are joined at the elbows: 'lines' does nothing, while the 'linear' option makes smooth connections.
			</description>
		</method>
		<method name="definenumber">
			<arglist>
				<arg name="number-style" optional="0" type="symbol" />
			</arglist>
			<digest>
				Define the style used displaying numbers in a subplot
			</digest>
			<description>
				Define the style used displaying numbers in the subplot associated with the inlet at which the message is received. Options are 'above', 'below', 'center', or 'none'.
			</description>
		</method>
		<method name="definepoint">
			<arglist>
				<arg name="point-style" optional="0" type="symbol" />
			</arglist>
			<digest>
				Define the style used to display points in a subplot
			</digest>
			<description>
				Define the style used to display points in the subplot associated with the inlet at which the message is received. Options are 'dot', 'circle', 'square', or 'none'.
			</description>
		</method>
		<method name="definerange">
			<arglist>
				<arg name="range-start" optional="0" type="number" />
				<arg name="range-end" optional="0" type="number" />
				<arg name="range-style" optional="1" type="symbol" />
			</arglist>
			<digest>
				Define the range for a subplot
			</digest>
			<description>
				Define the range for the subplot associated with the inlet at which the message is received. Values in the displayed data sets that are out of this range will be out of range of the plot drawing.
			</description>
		</method>
		<method name="definethickness">
			<arglist>
				<arg name="line-thickness" optional="0" type="number" />
			</arglist>
			<digest>
				Define the thickness of the lines for a subplot
			</digest>
			<description>
				Define the thickness of the lines for the subplot associated with the inlet at which the message is received. A thickness of 1 indicates a 1 'pixel' linewidth.
			</description>
		</method>
		<method name="definexgrid">
			<arglist>
				<arg name="x-axis-points" optional="0" type="list" />
			</arglist>
			<digest>
				Define the points along the domain at which a vertical marker-line should be drawn for a subplot
			</digest>
			<description>
				Define the points along the domain at which a vertical marker-line should be drawn for the subplot associated with the inlet at which the message is received. The points along the domain should be within the range specified by the 'definedomain' message.
			</description>
		</method>
		<method name="definexorigin">
			<arglist>
				<arg name="origin" optional="0" type="float" />
			</arglist>
			<digest>
				Define the value across the domain to serve as the origin for the plot
			</digest>
			<description>
				Define the value across the domain to serve as the origin for the plot.
			</description>
		</method>
		<method name="defineygrid">
			<arglist>
				<arg name="y-axis-points" optional="0" type="list" />
			</arglist>
			<digest>
				Define the points along the range at which a horizontal marker-line should be drawn for a subplot
			</digest>
			<description>
				Define the points along the range at which a horizontal marker-line should be drawn for the subplot associated with the inlet at which the message is received. The points along the range should be within the range specified by the 'definerange' message.
			</description>
		</method>
		<method name="defineyorigin">
			<arglist>
				<arg name="origin" optional="0" type="float" />
			</arglist>
			<digest>
				Define the value within the range to serve as the origin for the plot
			</digest>
			<description>
				Define the value within the range to serve as the origin for the plot. This will affect where lines originate when the line style is set to 'origin'.
			</description>
		</method>
		<method name="definexlabels">
			<arglist>
				<arg name="pairs-of-points-and-labels" optional="0" type="list" />
			</arglist>
			<digest>
				Define the labels for points along the domain of a subplot
			</digest>
			<description>
				Defines the labels for points along the domain for the subplot associated with the inlet at which the message is received. For each point that you wish to be labeled, you must provide a float-symbol pair defining the location in the domain (as defined using the 'definedomain' message) and the label for that location.
			</description>
		</method>
		<method name="defineylabels">
			<arglist>
				<arg name="pairs-of-points-and-labels" optional="0" type="list" />
			</arglist>
			<digest>
				Define the labels for points along the range of a subplot
			</digest>
			<description>
				Defines the labels for points along the range for the subplot associated with the inlet at which the message is received. For each point that you wish to be labeled, you must provide a float-symbol pair defining the location in the range (as defined using the 'definerange' message) and the label for that location.
			</description>
		</method>
		<method name="dictionary">
			<arglist>
				<arg name="dictionary-name" optional="0" type="symbol" />
			</arglist>
			<digest>
				Configure a subplot
			</digest>
			<description>
				Configure a subplot. The dictionary may contain the subplot's data, appearance, or both.
			</description>
		</method>
		<method name="edit">
			<arglist />
			<digest>
				Open an editor window for a subplot
			</digest>
			<description>
				Open a dictionary editor window for a subplot. After making edits to the plot, simply close the window and the changes will take effect.
			</description>
		</method>
		<method name="getdictionary">
			<arglist>
				<arg name="subplot-number" optional="1" type="int" />
			</arglist>
			<digest>
				Retrieve the state of a subplot
			</digest>
			<description>
				Retrieve the state of a subplot. The returned dictionary will contain the subplot's complete state including both data and appearance configuration.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Send mouse position and behavior to the outlet
			</digest>
			<description>
				TEXT_HERE
			</description>
		</method>
		<method name="signal">
			<arglist />
			<digest>
				Signal whose samples will be collected and used as the dataset to display
			</digest>
			<description>
				Signal whose samples will be collected and used as the dataset to display. The samples will be collected into blocks that are the same size as the
				<attr>
					numpoints
				</attr>
				attribute unless an
				<attr>
					audioframesize
				</attr>
				has been defined.
			</description>
		</method>
		<method name="refer">
			<arglist>
				<arg name="buffer-name" optional="0" type="symbol" />
				<arg name="channel-number" optional="1" type="number" />
				<arg name="start-time" optional="1" units="ms" type="number" />
				<arg name="end-time" optional="1" units="ms" type="number" />
			</arglist>
			<digest>
				Set a subplot to reference data in a named <o>buffer~</o> object
			</digest>
			<description>
				Set the subplot for the given inlet to reference the data in a named <o>buffer~</o> object. If a second argument is given to this message, it will determine the channel within the <o>buffer~</o> that should be displayed.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="audioframerate" get="1" set="1" type="float" size="1">
			<digest>
				Speed for display update
			</digest>
			<description>
				Speed for display update when a plot~ is visualizing an audio signal. The drawing for such cases is driven by a clock operating at the specified number of frames per second.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Audio" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="15." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Audio Update Rate" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="audioframesize" get="1" set="1" type="atom_long" size="1">
			<digest>
				Frame size
			</digest>
			<description>
				Number of samples collected from audio input to create a single frame of data. By default, audio signals will be visualized by collecting sample values until the number of points in the plot is full (audioframesize=0). Then all points will be updated and drawn. An alternate audioframesize value must be greater than the value of the
				<attr>
					numpoints
				</attr>
				attribute.
				<br />
				<br />
				In some cases it is desirable to collect a larger set of samples and then visualize only a portion of those samples. To visualize the output of an FFT, for example, it is often desirable to only view either the first or second half of a frame because they are mirror images of each other. By setting the audioframesize, the number of points in @audioframesize will be collected, and only the first @numpoints will actually be drawn.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Audio" />
				<attribute name="default" get="1" set="1" type="atom_long" size="1" value="0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Audio Frame Size" />
				<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>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Color" />
				<attribute name="default" get="1" set="1" type="float" size="4" value="1. 1. 1. 1." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Background Color" />
				<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="rgba" />
			</attributelist>
		</attribute>
		<attribute name="domainlabel" get="1" set="1" type="symbol" size="1">
			<digest>
				Bottom (horizontal) text
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Labels" />
				<attribute name="default" get="1" set="1" type="symbol" size="1" value="" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Label for the Domain" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="fontname" get="1" set="1" type="symbol" size="1">
			<digest>
				Font Name
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Font" />
				<attribute name="default" get="1" set="1" type="symbol" size="1" value="Lato" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Font 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" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="font" />
			</attributelist>
		</attribute>
		<attribute name="fontsize" get="1" set="1" type="float" size="1">
			<digest>
				Font Size
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Font" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="10." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Font Size" />
				<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>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Color" />
				<attribute name="default" get="1" set="1" type="float" size="4" value="0.5 0.5 0.5 1." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Grid Color" />
				<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="rgba" />
			</attributelist>
		</attribute>
		<attribute name="gridorigincolor" get="1" set="1" type="float" size="4">
			<digest>
				Grid Color at Origin
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Color" />
				<attribute name="default" get="1" set="1" type="float" size="4" value="0. 0. 0. 1." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Grid Color at Origin" />
				<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="rgba" />
			</attributelist>
		</attribute>
		<attribute name="margins" get="1" set="1" type="float" size="4">
			<digest>
				Indent margins (top, right, bottom, and left)
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Appearance" />
				<attribute name="default" get="1" set="1" type="float" size="4" value="8. 8. 8. 8." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Margins" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="numplots" get="1" set="1" type="int" size="1">
			<digest>
				Number of data sets to plot
			</digest>
			<description>
				Number of data sets to be plotted. The object will grow/absorb inlets as needed. Each 'subplot' will be addressed through its dedicated inlet.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="General" />
				<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="Number of Plots" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="numpoints" get="1" set="1" type="int" size="1">
			<digest>
				Number of display points
			</digest>
			<description>
				Sets the number of points to be displayed across the domain of all plots
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="General" />
				<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="Number of Points" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="rangelabel" get="1" set="1" type="symbol" size="1">
			<digest>
				Left-hand (vertical) text
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Labels" />
				<attribute name="default" get="1" set="1" type="symbol" size="1" value="" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Label for the Range" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="thinmode" get="1" set="1" type="symbol" size="1">
			<digest>
				Data-thinning behavior mode
			</digest>
			<description>
				Data-thinning behavior when the size of the data set (number of points) exceeds the number of pixels available to display each point discretely.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Data" />
				<attribute name="default" get="1" set="1" type="symbol" size="1" value="sample" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="2">
					<enumlist>
						<enum name="none">
							<digest>
								All points will be drawn, and will overlap as needed
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="sample">
							<digest>
								Number of points will be reduced according to
								<attr>
									thinto
								</attr>
								prior to drawing
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Data Thinning 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="enum" />
			</attributelist>
		</attribute>
		<attribute name="thinthresh" get="1" set="1" type="int" size="1">
			<digest>
				Thinning threshold
			</digest>
			<description>
				The point at which the
				<attr>
					thinmode
				</attr>
				is invoked to begin reducing the data set. By default this attribute is set to a value of 10, meaning that once there are 10 points being drawn at the same pixel location on the screen the
				<attr>
					thinmode
				</attr>
				will be invoked.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Data" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="10" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Data Thinning Threshold" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="thinto" get="1" set="1" type="float" size="1">
			<digest>
				Data set reduction factor
			</digest>
			<description>
				Factor by which the data set is reduced when the
				<attr>
					thinmode
				</attr>
				is invoked. By default the factor is 0.2, which results in 5 values being overlapped at a given pixel location.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Data" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="0.2" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Data Thinning Factor" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example caption="" img="" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="filterdetail" />
		<seealso name="scope~" />
		<seealso name="multislider" />
		<seealso name="waveform~" />
		<seealso name="filtergraph~" />
		<seealso name="spectroscope~" />
		<seealso name="audio_filtering" module="core" type="vignette" />
	</seealsolist>
	<misc name="Output">
		<entry name="list">
			<description>
				The 'mouse' message is sent together with normalized mouse coordinates and the mouse button state.
			</description>
		</entry>
	</misc>
</c74object>
