<?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="retune~" module="" category="">
	<digest>
		Ztx-based pitch detection and pitchshift
	</digest>
	<description>
		TEXT_HERE
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			TEXT_HERE
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="Signal">
			<digest>
				original signal
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="Signal">
			<digest>
				pitch (Hz)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="2" type="Signal">
			<digest>
				detune modulation (Cents)
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="Signal">
			<digest>
				retuned signal
			</digest>
			<description>
				The retuned output signal.
			</description>
		</outlet>
		<outlet id="1" type="Signal">
			<digest>
				detected frequency
			</digest>
			<description>
				The detected frequency.
			</description>
		</outlet>
		<outlet id="2" type="Signal">
			<digest>
				closest note
			</digest>
			<description>
				The closest note detected.
			</description>
		</outlet>
		<outlet id="3" type="Signal">
			<digest>
				deviation in cents
			</digest>
			<description>
				The deviation in cents from the closest note detected.
			</description>
		</outlet>
		<outlet id="4" type="List">
			<digest>
				closest note and deviation in cents
			</digest>
			<description>
				A list composed of the closest note and the deviation in cents from the closest note detected.
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg id="0" name="standard pitch" type="int" optional="0">
			<digest>
				Standard pitch
			</digest>
			<description>
				Reference tuning in Hz, the default is 440 Hz.
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="list">
			<arglist>
				<arg name="MIDI note" type="list" optional="0" />
			</arglist>
			<digest>
				Enable/disable notes in scale via MIDI notes
			</digest>
			<description>
				MIDI notes as list e.g. “60 100” and “60 0” to enable/disable notes in the current notelist. If the default 12 tone chromatic scale is active, sending the note C3 (60) will enable note 0 (60 modulo 12), which is C.
			</description>
		</method>
		<method name="defaulttuning">
			<arglist />
			<digest>
				Reset to default tuning
			</digest>
			<description>
				Go back to the default 12 note chromatic tuning.
			</description>
		</method>
		<method name="flush">
			<arglist />
			<digest>
				Clear current notelist
			</digest>
			<description>
				The <m>flush</m> message is used in conjunction with sending MIDI notes and will re-enable all notes in a scale.
			</description>
		</method>
		<method name="getlatency">
			<arglist />
			<digest>
				Report current latency
			</digest>
			<description>
				Report the latency in samples introduced by the retune~ object out the rightmost outlet.
			</description>
		</method>
		<method name="signal">
			<arglist />
			<digest>
				Specify pitch or detune modulation
			</digest>
			<description>
				Signal values in the second or third inlets are used to lock the retuned signal to a specific pitch (Hz) (inlet 2) or to de fine detune modulation (inlet 3) values (Cents).
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="correction_ambience_threshold" get="1" set="1" type="float" size="1">
			<digest>
				Correction Ambience Threshold
			</digest>
			<description>
				Set the automatic bypass when the signal contains too much noise or background ambience (reverb). A value between 0.2 and 0.4 is usually a good starting point. Range: (-10...10).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="0.3" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Correction Ambience Threshold" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="correction_amount" get="1" set="1" type="float" size="1">
			<digest>
				Correction Amount
			</digest>
			<description>
				Set the amount of pitch correction. 0 means no correction, 100 means full correction.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="100." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Correction Amount" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="correction_bypass" get="1" set="1" type="float" size="1">
			<digest>
				Correction Autobypass Threshold
			</digest>
			<description>
				Define the sibilance threshold at which the original signal is passed through unaffected. This bypass switch is required to make sure that sibilances in vocal recordings don’t sound too processed. A default setting of 100 is good.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="100." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Correction Autobypass Threshold" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="correction_threshold" get="1" set="1" type="float" size="1">
			<digest>
				Correction Threshold
			</digest>
			<description>
				Define the threshold at which the correction takes effect. For most applications this should be set to 0 as this will correct notes that are more that 0 cent off, wrt their ideal pitch. A setting of 10 will allow a pitch deviation of 10 cents in either direction before the correction takes effect.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<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="Correction Threshold" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="enablednotes" get="1" set="1" type="atom" size="36">
			<digest>
				Enabled Notes
			</digest>
			<description>
				Either the keyword “all” or a list of notes in the range from 0 to the size of the current scale minus 1 (0 .. 11 in the case of a chromatic scale) determines which notes retune will quantize to. That list may also be sent in the form of a message (e.g. enablednotes 0 2 3 5 7 9 10 ).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="default" get="1" set="1" type="atom" size="1" value="all" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Enabled Notes" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="notebase" get="1" set="1" type="int" size="1">
			<digest>
				Base note for the currently used scale.
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="12">
					<enumlist>
						<enum name="C">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="C#">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="D">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="D#">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="E">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="F">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="F#">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="G">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="G#">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="A">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="A#">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="B">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Note Base" />
				<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="notelist" get="1" set="1" type="symbol" size="36">
			<digest>
				Notes in Octave
			</digest>
			<description>
				A list of note values or relations is used to specified the scale values used for retuning. The format follows the format used in the Scala definition standard.
				<br />
				e.g.:
				<br />
				Chromatic Scale: 100 200 300 400 500 600 700 800 900 1000 1100
				<br />
				Major Scale: 200 400 500 700 900 1100
				<br />
				Pythagorean Major Scale: 9/8 81/64 4/3 3/2 27/16 243/128
				<br />
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Notes in Octave" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="pitchdetection" get="1" set="1" type="int" size="1">
			<digest>
				Detect pitch
			</digest>
			<description>
				Returns the average pitch of the segment that is currently being analyzed. This can be used as a pitch detector. A return value of 0.0 means that no coherent pitch could be estimated. You should expect an output fundamental frequency in the range of 50 Hz to 1000 Hz. Please note that this feature is experimental and might produce unpredictable results. In particular, it might introduce octave errors for the measured pitch depending on the input signal. Output as a signal from the second outlet.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Detect pitch" />
				<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="quality" get="1" set="1" type="int" size="1">
			<digest>
				Retune Quality
			</digest>
			<description>
				Sets the relative quality for retuning operations.
				<br />
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="4">
					<enumlist>
						<enum name="basic">
							<digest>
								Basic quality for retuning calculations (the default)
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="good">
							<digest>
								Good quality for retuning calculations
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="better">
							<digest>
								Better quality for retuning calculations
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="best">
							<digest>
								Highest quality for retuning calculations
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Retune Quality" />
				<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="reportlatency" get="1" set="1" type="int" size="1">
			<digest>
				Report latency
			</digest>
			<description>
				Enable (1) or disable (0) sending latency information out the right outlet of the <o>retune~</o> object. Latency is reported in samples.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Report latency" />
				<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="retune" get="1" set="1" type="int" size="1">
			<digest>
				Turn on retune
			</digest>
			<description>
				Enable (1) or disable (0) retuning.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Turn on retune" />
				<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="use_16bit" get="1" set="1" type="int" size="1">
			<digest>
				Use 16-bit processing
			</digest>
			<description>
				Enable (1) or disable (0) 16-bit processing. Better CPU performance can be obtained by using 16-bit processing, and it is reccomended if you are using the object for pitch detection and not retuning.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Use 16bit processing" />
				<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="windowsize" get="1" set="1" type="int" size="1">
			<digest>
				Windowsize
			</digest>
			<description>
				Specifies the window size to be used for retuning calculations. The range is between 16 samples and the currently used signal vector size.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Retune" />
				<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="Windowsize" />
				<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="fbinshift~" />
		<seealso name="freqshift~" />
		<seealso name="fzero~" />
		<seealso name="gizmo~" />
		<seealso name="hilbert~" />
		<seealso name="pitchshift~" />
	</seealsolist>
</c74object>
