<?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="record~" module="msp" category="MSP Sampling">
	<digest>
		Record sound into a buffer
	</digest>
	<description>
		<o>record~</o> records a signal into a <o>buffer~</o> object. You can specify how many channels to record with the optional <m>input-channels</m> argument. Recording stops when the <o>buffer~</o> is filled.
	</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>
				Record Ch 1 In, 1 Starts, 0 Stops
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="double">
			<digest>
				Recording Start Point in ms
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="2" type="double">
			<digest>
				Recording End Point in ms
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="signal">
			<digest>
				Sync Out
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="buffer-name" optional="0" type="symbol">
			<digest>
				Buffer name
			</digest>
			<description>
				Obligatory. Names the <o>buffer~</o> where <o>record~</o> will write the recorded samples.
			</description>
		</objarg>
		<objarg name="input-channels" optional="1" type="int">
			<digest>
				Number of input channels
			</digest>
			<description>
				Specifies the number of input channels (1, 2, 4, 50, etc). This determines the number of inlets <o>record~</o> has. The two rightmost inlets always set the record start and end points.
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="int">
			<arglist>
				<arg name="recording-flag (0 or nonzero)" optional="0" type="int" />
			</arglist>
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In left inlet: Any non-zero number starts recording; 0 stops recording. Recording starts at the start point unless append mode is on.
				<br />
				<br />
				In the inlet to the left of the right inlet: Set the start point within the <o>buffer~</o> (in milliseconds) for the recording. By default, the start point is 0 (the beginning of the <o>buffer~</o>).
				<br />
				<br />
				In right inlet: Sets the end point of the recording. By default, the end point is the end of the <o>buffer~</o> object's allocated memory.
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="recording-flag (0 or nonzero)" optional="0" type="float" />
			</arglist>
			<digest>
				Function depends on inlet (<m>float</m> converted to <m>int</m>).
			</digest>
			<description>
				In left inlet: Any non-zero number starts recording; 0 stops recording. Recording starts at the start point unless append mode is on.
				<br />
				<br />
				In the inlet to the left of the right inlet: Set the start point within the <o>buffer~</o> (in milliseconds) for the recording. By default, the start point is 0 (the beginning of the <o>buffer~</o>).
				<br />
				<br />
				In right inlet: Sets the end point of the recording. By default, the end point is the end of the <o>buffer~</o> object's allocated memory.
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="loop-start/loop-end/timing-parameters" optional="0" type="list" />
			</arglist>
			<digest>
				Specify settings for <o>transport</o> 
			</digest>
			<description>
				<m>list</m> can be used to specify loop-start and loop-end points or timing/synchronization settings for <o>transport</o>.
			</description>
		</method>
		<method name="anything">
			<arglist>
				<arg name="loop-start/loop-end/timing-parameters" optional="0" type="list" />
			</arglist>
			<digest>
				Specify settings for <o>transport</o> 
			</digest>
			<description>
				<m>list</m> can be used to specify loop-start and loop-end points or timing/synchronization settings for <o>transport</o>.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Open a file buffer display window
			</digest>
			<description>
				Double-clicking on <o>record~</o> opens an editing window where you can view the contents of its associated <o>buffer~</o> object.
			</description>
		</method>
		<method name="reset">
			<arglist />
			<digest>
				Reset record-loop points
			</digest>
			<description>
				The word <m>reset</m> resets the record-loop points to the default values (which record through the whole duration of the assigned <o>buffer~</o>).
			</description>
		</method>
		<method name="set">
			<arglist>
				<arg name="buffer-name" optional="0" type="symbol" />
			</arglist>
			<digest>
				Change target <o>buffer~</o> name
			</digest>
			<description>
				The word <m>set</m>, followed by the name of a <o>buffer~</o>, changes the <o>buffer~</o> where <o>record~</o> will write the recorded samples.
			</description>
		</method>
		<method name="signal">
			<arglist />
			<digest>
				Function depends on inlet
			</digest>
			<description>
				In left inlet: When recording is turned on, the signal is recorded into the sample memory of a <o>buffer~</o> at the current sampling rate.
				<br />
				<br />
				In middle inlets: If <o>record~</o> has more than one input channel, these inlets record the additional channels into the <o>buffer~</o>.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="append" get="1" set="1" type="int" size="1">
			<digest>
				Enable append mode
			</digest>
			<description>
				The word <m>append</m>, followed by a non-zero number, enables <m>append</m> mode. In this mode, when recording is turned on, it continues from where it was last stopped. <m>append 0</m> disables append mode. In this case, recording always starts at the start point when it is turned on. Append mode is off initially by default.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Append Mode" />
				<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 non-zero number, enables loop recording mode. In loop mode, when recording reaches the end point of the recording (see above) it continues at the start point. <m>loop 0</m> disables loop recording mode. In this case, recording stops when it reaches the end point. Loop mode is off initially by default. The <o>record~</o> object also takes into account any changes in the <o>buffer~</o> object's sampling rate if the <o>buffer~</o> object's length is modified for the purpose of establishing loop points.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Loop Recording" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="loopend" get="1" set="1" type="Time Value" size="1">
			<digest>
				Loop point
			</digest>
			<description>
				Sets the loop end point for the object. The sampling interval can be specified in any of the <link name="maxtime" module="core" type="vignette">time formats</link> used in Max.
			</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="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="loopstart" get="1" set="1" type="Time Value" size="1">
			<digest>
				Loop start point
			</digest>
			<description>
				Sets the loop start point for the object. The sampling interval can be specified in any of the <link name="maxtime" module="core" type="vignette">time formats</link> used in Max.
			</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="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="transport" get="1" set="1" type="symbol" size="1">
			<digest>
				Transport name to associate with <o>record~</o> object.
			</digest>
			<description>
				The name of a <o>transport</o> object with which to associate. By default the global transport is used.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Transport Name" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="record~.png" caption="Store a signal excerpt for future use" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="2d.wave~" />
		<seealso name="buffer~" />
		<seealso name="groove~" />
		<seealso name="play~" />
		<seealso name="transport" />
		<seealso name="07_samplingchapter01" module="msp" type="tutorial" />
	</seealsolist>
	<misc name="Output">
		<entry name="signal">
			<description>
				Sync output. During recording, this outlet outputs a <m>signal</m> that goes from 0 when recording at the start point to 1 when recording reaches the end point. When not recording, a zero signal is output.
			</description>
		</entry>
	</misc>
</c74object>
