<?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="zplane~" module="msp" category="MSP U/I">
	<digest>
		Graph filter poles and zeros on the Z-plane
	</digest>
	<description>
		The <o>zplane~</o> object provides a way to graph filter poles and zeros in the Z-plane for display. Use the <o>zplane~</o> object in conjunction with the <o>filtergraph~</o> object, or provide it with a list of <o>biquad~</o> coefficients.
	</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>
				Filter coefficient a0
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="float">
			<digest>
				Filter coefficient a1
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="2" type="float">
			<digest>
				Filter coefficient a2
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="3" type="float">
			<digest>
				Filter coefficient b1
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="4" type="float">
			<digest>
				Filter coefficient b2
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="list">
			<digest>
				List of 2nd Order Filter Coefficients
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="float">
			<digest>
				List of Zero Coordinate Pairs
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="2" type="float">
			<digest>
				List of Pole Coordinate Pairs
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="3" type="float">
			<digest>
				List of 2nd Order Filter Gains
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<palette category="Audio" action="zplane~" pic="zplane~.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>
				Output the current pole and zero values
			</digest>
			<description>
				Causes the current pole and zero values to be re-output.
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="biquad-filter-coefficients" optional="0" type="float" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In 1st-5th inlets: A float in one of the first five inlets changes the current value of the corresponding <o>biquad~</o> filter coefficients (a0, a1, a2, b1, and b2, respectively), recalculates and displays the filter's pole-zero graph on the Z-plane and causes a lists of poles and zeros be output.
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="a0" optional="0" type="float" />
				<arg name="a1" optional="0" type="float" />
				<arg name="a2" optional="0" type="float" />
				<arg name="b1" optional="0" type="float" />
				<arg name="b2" optional="0" type="float" />
			</arglist>
			<digest>
				Set filter coefficients, display poles/zeros, and output pole/zero data
			</digest>
			<description>
				In left inlet: A list of five float values which correspond to <o>biquad~</o> filter coefficients sets the <o>zplane~</o> object's internal values for these coefficients and causes the object to visually display the poles and zeros for the filter(s) and to output the pole and zero data.
				<br />
				<br />
				If more than five values are sent, they are interpreted as sets of cascaded biquad coefficients. The zplane~ object will display a composite pole-zero graph which shows the multiplication of a group of biquad filters in cascade. Up to 24 groups of five float values may be cascaded.
			</description>
		</method>
		<method name="dictionary">
			<arglist>
				<arg name="dictionary-name" optional="0" type="symbol" />
			</arglist>
			<digest>
				Use a <o>filterdesign</o> dictionary's filter coefficients
			</digest>
			<description>
				The word <m>dictionary</m>, followed by a symbol that references a named <o>filterdesign</o> object dictionary (set via the <m>name</m> attribute), will cause the <o>zplane~</o> object to use the dictionary values for filter coefficients.
			</description>
		</method>
		<method name="ft1">
			<arglist>
				<arg name="coefficient value" optional="0" type="float" />
			</arglist>
			<digest>
				Set filter coefficient a1
			</digest>
			<description>
				In 2nd inlet: Sets the current value of the <o>biquad~</o> filter's <i>a1</i> coefficient.
			</description>
		</method>
		<method name="ft2">
			<arglist>
				<arg name="coefficient value" optional="0" type="float" />
			</arglist>
			<digest>
				Set filter coefficient a2
			</digest>
			<description>
				In 3rd inlet: Sets the current value of the <o>biquad~</o> filter's <i>a2</i> coefficient.
			</description>
		</method>
		<method name="ft3">
			<arglist>
				<arg name="coefficient value" optional="0" type="float" />
			</arglist>
			<digest>
				Set filter coefficient b1
			</digest>
			<description>
				In 4th inlet: Sets the current value of the <o>biquad~</o> filter's <i>b1</i> coefficient.
			</description>
		</method>
		<method name="ft4">
			<arglist>
				<arg name="coefficient value" optional="0" type="float" />
			</arglist>
			<digest>
				Set filter coefficient b2
			</digest>
			<description>
				In 5th inlet: Sets the current value of the <o>biquad~</o> filter's <i>b2</i> coefficient.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Change filter parameters by clicking and dragging in the <o>zplane~</o> object’s display
			</digest>
			<description>
				You can change the filter parameters by clicking and dragging on the <o>zplane~</o> object’s display. Clicking and dragging on any of the poles (shown as an x in the display) or zeros (shown as an o in the display) will modify the filter coefficients and output the new filter coefficient values.
			</description>
		</method>
		<method name="logscale">
			<arglist>
				<arg name="logscale-flag" optional="0" type="int" />
			</arglist>
			<digest>
				Select linear or log frequency display
			</digest>
			<description>
				The word <m>logscale</m>, followed by a zero or one, toggles between linear (the default) and log frequency display.
			</description>
		</method>
		<method name="range">
			<arglist>
				<arg name="visual scaling amount" optional="0" type="float" />
			</arglist>
			<digest>
				Change the visual scaling of the object's display
			</digest>
			<description>
				The word <m>range</m>, followed by a floating point value, changes the visual scaling of the zplane~ object's display. The default is 1.5.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="axiscolor" 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="bgcolor" get="1" set="1" type="float" size="4">
			<digest>
				Background color
			</digest>
			<description>
				Sets the background color of the <o>zplane~</o> object in RGBA format.
			</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="Color" />
				<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.75 0.75 0.75 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="circlebordercolor" 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="fgcolor" 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="gridlinecolor" get="1" set="1" type="float" size="4">
			<digest>
				Grid Color
			</digest>
			<description>
				Sets the colors for the grids and lines in RGBA format. The <m>gridlinecolor</m> attribute is mapped to the <m>elementcolor</m>  <link module="core" name="maxcolor" type="vignette">style color</link>.
			</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="Color" />
				<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.5 0.5 0.5 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="hlcolor" 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="order" get="1" set="1" type="int" size="1">
			<digest>
				Number of Poles and Zeros
			</digest>
			<description>
				The word <m>order</m>, followed by an even number between 2 and 24, sets the number of poles and zeros.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Value" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="2" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Number of Poles and Zeros" />
				<attribute name="paint" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="pconstrain" get="1" set="1" type="int" size="1">
			<digest>
				Constrain poles to unit circle
			</digest>
			<description>
				When set to 1, poles will be constrained inside the unit circle, and thus yield a stable filter. An argument of zero will turn this feature off (the default).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Value" />
				<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="Constrain Poles to Unit Circle" />
				<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="polezerocolor" get="1" set="1" type="float" size="4">
			<digest>
				Color
			</digest>
			<description>
				Sets the pole zero color in RGBA format. The <m>polezerocolor</m> attribute is mapped to the <m>color</m>  <link module="core" name="maxcolor" type="vignette">style color</link>.
			</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="Color" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value=" Color" />
				<attribute name="legacydefault" get="1" set="1" type="float" size="4" value="0. 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="circle_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" />
				<attribute name="stylemap" get="1" set="1" type="symbol" size="1" value="color" />
			</attributelist>
		</attribute>
		<attribute name="rounded" 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="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="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>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="zplane~.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="biquad~" />
		<seealso name="cascade~" />
		<seealso name="filtercoeff~" />
		<seealso name="filtergraph~" />
		<seealso name="audio_filtering" module="core" type="vignette" />
	</seealsolist>
	<discussion>
		Like the <o>filtergraph~</o> object, it does not process audio signals by itself, but it does react internally to the current MSP sampling rate. The <o>zplane~</o> object is designed to help in digital filter design and visualization for MSP, and to provide a basic pedagogical tool which may be used to help explain digital filter theory.
		<br />
		You can change the filter parameters by clicking and dragging on the <o>zplane~</o> object’s display. Clicking and dragging on any of the poles (shown as an x in the display) or zeros (shown as an o in the display) will modify the filter coefficients and output the new filter coefficient values.
	</discussion>
	<misc name="Output">
		<entry name="list">
			<description>
				Out left outlet: a list of 5 floating-point filter coefficients for the <o>biquad~</o> object. Coefficients output in response to mouse clicks and changes in the coefficient inlets.
				<br />
				<br />
				Out second outlet: a list of &quot;zero&quot; location values expressed as complex numbers (real, imaginary). These correspond to the &quot;a&quot; coefficients of the filter. A 2nd order (biquad) filter will have 2 zeros, a 4th order filter will have four, etc...
				<br />
				<br />
				Out third outlet: a list of &quot;pole&quot; location values expressed as complex numbers (real, imaginary). These correspond to the &quot;b&quot; coefficients of the filter. A 2nd order (biquad) filter will have 2 zeros, a 4th order filter will have four, etc...
				<br />
				<br />
				Out fourth outlet: a list of floating-point values representing the overall gain of each cascaded filter.
			</description>
		</entry>
	</misc>
</c74object>
