<?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="fzero~" module="msp" category="MSP Analysis, MSP Functions">
	<digest>
		Fundamental frequency and pitch estimator
	</digest>
	<description>
		The <o>fzero~</o> object estimates the fundamental frequency of an an incoming, monophonic audio signal. It performs multiple layers of wavelet transforms on an incoming vector, comparing the spacing between the peaks in each.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
		<metadata name="tag">
			MSP Analysis
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="signal">
			<digest>
				Audio to be analyzed
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="signal">
			<digest>
				Audio to be analyzed
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="float">
			<digest>
				Estimated fundamental pitch
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="float">
			<digest>
				Peak amplitude in analysis vector
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="2" type="bang">
			<digest>
				onset detected
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="OBJARG_NAME" optional="0" type="OBJARG_TYPE">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="signal">
			<arglist />
			<digest>
				Audio signal to be analyzed
			</digest>
			<description>
				audio signal to be analyzed.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="freqmax" get="1" set="1" type="int" size="1">
			<digest>
				Maximum frequency to detect
			</digest>
			<description>
				The maximum frequency, in Hertz, that the object will report.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Analysis" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Maximum frequency to be detected in Hertz" />
			</attributelist>
		</attribute>
		<attribute name="freqmin" get="1" set="1" type="int" size="1">
			<digest>
				Minimum frequency to detect
			</digest>
			<description>
				The minimum frequency, in Hertz, that the object will report.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Analysis" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Minimum frequency to be detected in Hertz" />
			</attributelist>
		</attribute>
		<attribute name="onsetamp" get="1" set="1" type="float" size="1">
			<digest>
				Amplitude threshold for detecting an onset
			</digest>
			<description>
				fzero~ gives a bang or list out the right outlet when a new event crosses this amplitude threshold.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Onset detection" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Amplitude change to trigger an new onset" />
			</attributelist>
		</attribute>
		<attribute name="onsetlist" get="1" set="1" type="int" size="1">
			<digest>
				Onset detector output: bang or list(pitch, amplitude)
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Onset detection" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Onset detector output: bang or list(pitch, amplitude)" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="onsetperiod" get="1" set="1" type="atom_long" size="1">
			<digest>
				Number of samples before reporting another onset
			</digest>
			<description>
				This attribute sets the minimum number of samples between reporting any offsets.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Onset detection" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="9">
					<enumlist>
						<enum name="16">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="32">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="64">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="128">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="256">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="512">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="1024">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="2048">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="4096">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Samples before reporting another onset" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="onsetpitch" get="1" set="1" type="float" size="1">
			<digest>
				Frequency change threshold for sending bangs
			</digest>
			<description>
				fzero~ gives a bang or list out the right outlet when the frequency changes by this amount, in in MIDI notes.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Onset detection" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Pitch change to trigger new onset in semitones" />
			</attributelist>
		</attribute>
		<attribute name="period" get="1" set="1" type="atom_long" size="1">
			<digest>
				Period between analyses in samples
			</digest>
			<description>
				Sets the time period between analyses in samples.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Analysis" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="9">
					<enumlist>
						<enum name="16">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="32">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="64">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="128">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="256">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="512">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="1024">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="2048">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="4096">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Period between analyses in samples" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="size" get="1" set="1" type="atom_long" size="1">
			<digest>
				Analysis buffer size in samples
			</digest>
			<description>
				Sets the buffer size to specify how many samples are analyzed each time.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Analysis" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="6">
					<enumlist>
						<enum name="128">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="256">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="512">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="1024">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="2048">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="4096">
							<digest>
								samples
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Analysis buffer size in samples" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="threshold" get="1" set="1" type="float" size="1">
			<digest>
				Minimum amplitude for reporting pitches and onsets
			</digest>
			<description>
				If the peak amplitude of the buffer is below this threshold, then <o>fzero~</o> will report nothing.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="atom" size="1" value="Analysis" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Minimum amplitude for reporting pitches and onsets" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="fzero~.png" caption="detecting an f-sharp" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="ftom" />
		<seealso name="mtof" />
		<seealso name="peakamp~" />
		<seealso name="retune~" />
		<seealso name="thresh~" />
	</seealsolist>
	<misc name="Output">
		<entry name="float">
			<description>
				Out left outlet: Estimated fundamental frequency in Hertz.
				<br />
				<br />
				Out middle outlet: Peak amplitude of the analysis buffer at the time of the last analysis.
			</description>
		</entry>
		<entry name="bang">
			<description>
				Out right outlet: New note onset detected.
			</description>
		</entry>
	</misc>
</c74object>
