<?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="groove~" module="msp" category="MSP Sampling">
	<digest>
		Variable-rate looping sample playback
	</digest>
	<description>
		The <o>groove~</o> object is a variable-rate, looping, sample-playback object which references the audio information stored in a <o>buffer~</o> object having the same name.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
		<metadata name="tag">
			MSP Sampling
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="signal">
			<digest>
				Sample Playback Increment
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="signal/float">
			<digest>
				Loop Min
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="2" type="signal/float">
			<digest>
				Loop Max
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="signal">
			<digest>
				Channel 1 Output
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="signal">
			<digest>
				Loop Sync Output
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="buffer-name" optional="0" type="symbol">
			<digest>
				Buffer name
			</digest>
			<description>
				Names the <o>buffer~</o> object containing the sample to be used by <o>groove~</o> for playback.
			</description>
		</objarg>
		<objarg name="number-of-outputs" optional="1" type="int">
			<digest>
				Number of outputs
			</digest>
			<description>
				A second argument may specify the number of output channels. The default number of channels is 1. If the <o>buffer~</o> being played has fewer channels than the number of <o>groove~</o> output channels, the extra channels output a zero signal. If the <o>buffer~</o> has more channels and is a multiple of 2 or 4, channels are mixed.
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="int">
			<arglist>
				<arg name="playback-position" optional="0" type="int" units="ms" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In all inlets: Converted to <m>float</m>.				<br />
				<br />
				In left inlet: Sets the sample playback position in milliseconds. <m>0</m> sets the playback position to the beginning.
				<br />
				In middle inlet: Sets the sample playback start position in milliseconds.
				<br />
				In right lnlet: Sets the sample playback start position in milliseconds.
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="playback-position" optional="0" type="float" units="ms" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In left inlet: Sets the sample playback position in milliseconds. <m>0</m> sets the playback position to the beginning.
				<br />
				In middle inlet: Sets the sample playback start position in milliseconds.
				<br />
				In right lnlet: Sets the sample playback start position in milliseconds.
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="bars" optional="0" type="int" />
				<arg name="beats" optional="0" type="int" />
				<arg name="units" optional="0" type="int" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In middle inlet: A list composed of three integers specifying bars, beats, and units may be used to specify the loop start point when the <o>groove~</o> object is set to follow a named transport (set using the <m>transport</m> attribute).
				<br />
				<br />
				In right inlet: A list composed of three integers specifying bars, beats, and units may be used to specify the loop end point when the <o>groove~</o> object is set to follow a named transport (set using the <m>transport</m> attribute).
			</description>
		</method>
		<method name="anything">
			<arglist>
				<arg name="bars" optional="0" type="int" />
				<arg name="beats" optional="0" type="int" />
				<arg name="units" optional="0" type="int" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In middle inlet: A list composed of three integers specifying bars, beats, and units may be used to specify the loop start point when the <o>groove~</o> object is set to follow a named transport (set using the <m>transport</m> attribute).
				<br />
				<br />
				In right inlet: A list composed of three integers specifying bars, beats, and units may be used to specify the loop end point when the <o>groove~</o> object is set to follow a named transport (set using the <m>transport</m> attribute).
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Open a file buffer display window
			</digest>
			<description>
				Double-clicking on a <o>groove~</o> object opens the sample display window of the <o>buffer~</o> object associated with the <o>groove~</o> object.
			</description>
		</method>
		<method name="dictionary">
			<arglist>
				<arg name="dictionary-name" type="symbol" optional="1" />
			</arglist>
			<digest>
				Define complex time stretching
			</digest>
			<description>
				Use a dictionary to define more complex stretching and pitch shifting. Define a point in time (sourcetime, sourcetimesample or sourcetimebbu) and define where this point should be transformed to (desttime, desttimesample or desttimebbu). For example, the dictionary below will
				<ul>
					<li>
						create marker01 which will stretch the file so that the audio at 500 ms will be on the first bar, will pitch-shift the audio down by 100 cents until the next marker
					</li>
					<li>
						create marker02 which will stretch so the material at 1000 ms will be at 1.2.0 bbu, will pitch-shift the audio by a factor of 1.1 up until the next marker
					</li>
					<li>
						create marker03 which will stretch the whole sample (“end”) to be twice as long
					</li>
				</ul>
				<code>
					{ &quot;marker01&quot; : { &quot;sourcetime&quot; : &quot;500&quot;, &quot;desttimebbu&quot; : &quot;1.0.0&quot;, &quot;pitchshiftcent&quot; : -100 } , &quot;marker02&quot; : { &quot;sourcetime&quot; : 1000, &quot;desttime&quot; : 1.2.0, &quot;pitchshift&quot; : 1.1 } , &quot;marker03&quot; : { &quot;sourcetime&quot; : “end”, &quot;desttime&quot; : “*2”, } }
				</code>
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="7.0.0" />
			</attributelist>
		</method>
		<method name="clearspeedcues">
			<arglist />
			<digest>
				Clear speed cues
			</digest>
			<description>
				Clear the speed cues that have been defined via a dictionary.
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="7.0.0" />
			</attributelist>
		</method>
		<method name="printspeedcues">
			<arglist />
			<digest>
				Print speed cues
			</digest>
			<description>
				Print the currently active speed cues that have been defined via a dictionary.
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="7.0.0" />
			</attributelist>
		</method>
		<method name="set">
			<arglist>
				<arg name="buffer-name" optional="0" type="symbol" />
			</arglist>
			<digest>
				Reference a new <o>buffer~</o> object
			</digest>
			<description>
				The word <m>set</m>, followed by a symbol, switches the <o>buffer~</o> object containing the sample to be used by <o>groove~</o> for playback.
			</description>
		</method>
		<method name="reset">
			<arglist />
			<digest>
				Clear the start and end loop points
			</digest>
			<description>
			</description>
		</method>
		<method name="setloop">
			<arglist>
				<arg name="start-point" optional="0" type="list" units="ms" />
				<arg name="end-point" optional="0" type="list" units="ms" />
			</arglist>
			<digest>
				Set the start and end loop points
			</digest>
			<description>
				The word <m>setloop</m>, followed by two numbers, sets the start and end loop points in milliseconds.
			</description>
		</method>
		<method name="signal">
			<arglist />
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In left inlet: Defines the sample increment for playback of a sound from a <o>buffer~</o>. A sample increment of 0 stops playback. A sample increment of 1 plays the sample at normal speed. A sample increment of -1 plays the sample backwards at normal speed. A sample increment of 2 plays the sample at twice the normal speed. A sample increment of .5 plays the sample at half the normal speed. The sample increment can change over time for vibrato or other types of speed effects. The <o>groove~</o> object uses the <o>buffer~</o> sampling rate to determine playback speed.
				<br />
				<br />
				If a loop start and end have been defined for <o>groove~</o> and looping is turned on, when the sample playback reaches the loop end the sample position is set to the loop start and playback continues at the current sample increment.
				<br />
				<br />
				In middle inlet: Sets the starting point of the loop in milliseconds.
				<br />
				<br />
				In right inlet: Sets the end point of the loop in milliseconds.
			</description>
		</method>
		<method name="startloop">
			<arglist />
			<digest>
				Play the loop from the start point
			</digest>
			<description>
				Causes <o>groove~</o> to begin sample playback at the starting point of the loop. If no loop has been defined, <o>groove~</o> begins playing at the beginning.
			</description>
		</method>
		<method name="stop">
			<arglist />
			<digest>
				Stop playback
			</digest>
			<description>
				The word <m>stop</m> will cause <o>groove~</o> to stop playback until the next <m>int</m>, <m>float</m>, or <m>startloop</m> message is received.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="basictuning" get="1" set="1" type="int" size="1">
			<digest>
				Basic tuning (from A)
			</digest>
			<description>
				Set a tuning standard based on a frequency for A for pitchshifting operations (440 = default, range is 400 - 500)
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Pitchcorrection" />
				<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="Basic tuning" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="followglobaltempo" get="1" set="1" type="int" size="1">
			<digest>
				Follow global tempo
			</digest>
			<description>
				When followgobaltempo is enabled, <o>groove~</o> will calculate the current tempo out of the ratio between originaltempo and global tempo and adapt to global tempo changes.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching Global Transport" />
				<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="Follow Global Tempo" />
				<attribute name="order" 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="formant" get="1" set="1" type="float" size="1">
			<digest>
				Formant Scale
			</digest>
			<description>
				The word <m>formant</m>, followed by floating point value, sets the amount of formant scaling when pitchshifting is performed.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching" />
				<attribute name="default" get="1" set="1" type="float" 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="Formant Scale" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="formantcorrection" get="1" set="1" type="int" size="1">
			<digest>
				Turn on formant correction
			</digest>
			<description>
				The word <m>formantcorrection</m>, followed by a zero or one, disables/enables formant correction when pitch correction is performed.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Pitchcorrection" />
				<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="Turn on formant correction" />
				<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="lock" get="1" set="1" type="int" size="1">
			<digest>
				Lock to transport
			</digest>
			<description>
				TEXT_HERE
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching Global Transport" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<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="Lock to transport" />
				<attribute name="order" get="1" set="1" type="int" size="1" value="4" />
				<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="loop" get="1" set="1" type="int" size="1">
			<digest>
				Turn on looping
			</digest>
			<description>
				The word <m>loop</m>, followed by a zero or one, disables/enables looping.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Turn on looping" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="loopend" get="1" set="1" type="atom" size="10">
			<digest>
				Loop end point
			</digest>
			<description>
				Sets the loop end point. The end point time can be specified in any of the <link module="core" name="maxtime" type="vignette">Max time formats</link>.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timing" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Loop End Point" />
				<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="time" />
				<attribute name="units" get="1" set="1" type="atom" size="7" value="ms hh:mm:ss ticks bars.beats.units notevalues hz samples" />
			</attributelist>
		</attribute>
		<attribute name="loopinterp" get="1" set="1" type="int" size="1">
			<digest>
				Enable loop interpolation around start and end points
			</digest>
			<description>
				The word <m>loopinterp</m>, followed by <m>1</m>, enables interpolation about start and end points for a loop. <m>loop 0</m> turns off loop interpolation. By default, loop interpolation is off. Turning loop interpolation on disables resampling.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Enable loop interpolation" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="loopstart" get="1" set="1" type="atom" size="10">
			<digest>
				Loop start point
			</digest>
			<description>
				Sets the loop start point. The start point time can be specified in any of the <link module="core" name="maxtime" type="vignette">Max time formats</link>.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timing" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Loop Start Point" />
				<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="time" />
				<attribute name="units" get="1" set="1" type="atom" size="7" value="ms hh:mm:ss ticks bars.beats.units notevalues hz samples" />
			</attributelist>
		</attribute>
		<attribute name="mode" get="1" set="1" type="int" size="1">
			<digest>
				Timestretching mode
			</digest>
			<description>
				Set the timestretching mode to be used. Each mode is optimized for handling different kinds of audio material. All modes are zero latency.
				<br />
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="6">
					<enumlist>
						<enum name="basic">
							<digest>
								Default mode of operation
							</digest>
							<description>
								This is the default mode of operation.
							</description>
						</enum>
						<enum name="monophonic">
							<digest>
								Monophonic sources (voice, flute)
							</digest>
							<description>
								This mode is best for monophonic instruments (e.g. solo voice, flute, etc.)
							</description>
						</enum>
						<enum name="rhythmic">
							<digest>
								Optimizes for transient preservation
							</digest>
							<description>
								This mode is for time stretched percussion. It provides optimal transient preservation.
							</description>
						</enum>
						<enum name="general">
							<digest>
								Balance spectral integrity with transient preservaton
							</digest>
							<description>
								This mode balances spectral integrity and transient preservation for general cases.
							</description>
						</enum>
						<enum name="extremestretch">
							<digest>
								For stretch ratios greater than 2.0
							</digest>
							<description>
								This mode is intended for stretch ratios greater 2.0, a more artistic effect is intended.
							</description>
						</enum>
						<enum name="efficient">
							<digest>
								Good CPU performance
							</digest>
							<description>
								This mode is intended for a good CPU performance/quality tradeoff.
							</description>
						</enum>
					</enumlist>
				</attribute>
				<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="Timestretching 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="originallength" get="1" set="1" type="atom" size="10">
			<digest>
				Original length
			</digest>
			<description>
				The original length of the the audio file in beats. Used by <m>followglobaltempo</m> to calculate the speed in relation to the global transport speed. Set <m>originallength</m> to calculate the <m>originaltempo</m>.
			</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="Timestretching Global Transport" />
				<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="Original Length" />
				<attribute name="order" get="1" set="1" type="int" size="1" value="2" />
				<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="time" />
				<attribute name="units" get="1" set="1" type="atom" size="3" value="ticks bars.beats.units notevalues" />
			</attributelist>
		</attribute>
		<attribute name="originaltempo" get="1" set="1" type="float" size="1">
			<digest>
				Original tempo
			</digest>
			<description>
				The original tempo of the the audio file. Used by <m>followglobaltempo</m> to calculate the speed relative to the global transport speed. Setting the <m>originaltempo</m> will calculate the <m>originallength</m>.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching Global Transport" />
				<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="Original Tempo" />
				<attribute name="order" get="1" set="1" type="int" size="1" value="3" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="phase" get="1" set="1" type="atom" size="10">
			<digest>
				Phase
			</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="Timestretching Global Transport" />
				<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="Phase" />
				<attribute name="order" get="1" set="1" type="int" size="1" value="5" />
				<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="time" />
				<attribute name="units" get="1" set="1" type="atom" size="3" value="ticks bars.beats.units notevalues" />
			</attributelist>
		</attribute>
		<attribute name="pitchcorrection" get="1" set="1" type="int" size="1">
			<digest>
				Enable/disable pitch correction
			</digest>
			<description>
				The word <m>pitchcorrection</m>, followed by a zero or one, enable/disables  the formant-corrected chromatic intonation correction. For more extensive real-time intonation correction, use the <o>retune~</o> object.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Pitchcorrection" />
				<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="Turn on pitch correction" />
				<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="pitchshift" get="1" set="1" type="float" size="1">
			<digest>
				Pitch shifting factor
			</digest>
			<description>
				Specifies pitchshift as a factor of the original pitch (i.e. 2.0 = doubling of pitch, .5 = halving of the original pitch, etc.).
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching" />
				<attribute name="default" get="1" set="1" type="float" 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="Pitch Shifting Factor" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="pitchshiftcent" get="1" set="1" type="int" size="1">
			<digest>
				Pitch shifting (in cents)
			</digest>
			<description>
				Specifies pitchshift as positive or negative cent values (i.e. 100 = semitone up, -1200 = octave down). Cents may be specified as ints or floats.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<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="Pitch Shifting in Cents" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="quality" get="1" set="1" type="int" size="1">
			<digest>
				Timestretching quality
			</digest>
			<description>
				Timestretching output quality.
				<br />
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching" />
				<attribute name="enumvals" get="1" set="1" type="atom" size="4">
					<enumlist>
						<enum name="basic">
							<digest>
								Basic quality (the default)
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="good">
							<digest>
								Good quality
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="better">
							<digest>
								Better quality
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="best">
							<digest>
								Highest quality
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<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="Timestretching 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="resample" get="1" set="1" type="int" 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="slurtime" get="1" set="1" type="float" size="1">
			<digest>
				Slur time
			</digest>
			<description>
				Set the time it takes for the correction to reach the full correction amount. Typically, notes are a bit unstable at the beginning, because the attack phase of a sound has a higher amount of noise, and because singers gradually adjust their tuning after the onset of the note. The slur time makes the pitch correction sound natural because it models this effect. Higher values will yield a slower adaptation time and it will take longer for the correction to produce the corrected pitch. However, longer slur times will also preserve vibrato better.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Pitchcorrection" />
				<attribute name="default" get="1" set="1" type="float" size="1" value="0." />
				<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="Slur time" />
				<attribute name="save" get="1" set="1" type="int" size="1" value="1" />
			</attributelist>
		</attribute>
		<attribute name="timestretch" get="1" set="1" type="int" size="1">
			<digest>
				Enable/disable timestretching
			</digest>
			<description>
				The word <m>timestretch</m>, followed by a zero or one, disables/enables timestretching.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timestretching" />
				<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="Turn on timestretching" />
				<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="transport" get="1" set="1" type="symbol" size="1">
			<digest>
				Transport object to bind to
			</digest>
			<description>
				Sets the name of a <o>transport</o> object with which to associate. By default, the global transport is used. When the <o>groove~</o> object is associated with a transport, loop points are specified using 3-item lists which correspond to time in bars, beats, and units.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Timing" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Transport" />
				<attribute name="timeobj" get="1" set="1" type="atom" size="1" value="loopstart" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="groove~.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="2d.wave~" />
		<seealso name="buffer~" />
		<seealso name="play~" />
		<seealso name="wave~" />
		<seealso name="index~" />
		<seealso name="record~" />
		<seealso name="transport" />
		<seealso module="msp" name="07_samplingchapter03" type="tutorial" />
		<seealso module="msp" name="10_midichapter03" type="tutorial" />
	</seealsolist>
	<misc name="Output">
		<entry name="signal">
			<description>
				Out left outlet: Sample output. If <o>groove~</o> has two or four output channels, the left outlet plays the left channel of the sample.
				<br />
				<br />
				Out middle outlets: Sample output. If <o>groove~</o> has two or four output channels, the middle outlets play the channels other than the left channel.
				<br />
				<br />
				Out right outlet: Sync output. During the loop portion of the sample, this outlet outputs a <m>signal</m> that goes from 0. when the loop starts to 1. when the loop ends.
				<br />
				Note: In order for buffer playback to begin (and consequently for sync output), one of the <o>groove~</o> object's output channels must be connected to another signal object.
			</description>
		</entry>
	</misc>
</c74object>
