<?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="el.sarec~">
    
	<digest>
		Sample-accurate recorder
	</digest>
	<description>
		<o>el.sarec~</o> implements sample-accurate recording, including precision punching and overdubs.
        The record mode is set with various messages.
        Recording operations are triggered exclusively by clicks with particular values.
        The click codes are: <p/>
        1, 2, 3 ... : start recording immediately on the specified channel only.
        Channels are counted starting from 1. <p/>
        -1 : start recording immediately on all armed channels <p/>
        -2 : stop recording immediately
    </description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Eric Lyon
		</metadata>
		<metadata name="tag">
			MSP
		</metadata>
		<metadata name="tag">
			LyonPotpourri
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="buffer name" type="symbol" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				The buffer to record into.
			</description>
		</objarg>
		<objarg name="channel count" type="int" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				The number of channels in the buffer.
			</description>
		</objarg>
    </objarglist>
	<!--MESSAGES-->
	<methodlist>
        
		<method name="arm">
			<arglist>
                <arg name="channel number" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				The channel given as an argument is armed for recording. Channels are counted
                starting at 1.
                If the channel number is -1, all channels are armed. If the channel number is 0,
                all channels are disarmed. All channels initially armed by default.
            </description>
		</method>
        
		<method name="disarm">
			<arglist>
                <arg name="channel number" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				The channel given as an argument is disarmed for recording.
            </description>
		</method>
        
		<method name="overdub">
			<arglist>
                <arg name="toggle" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Set recording mode to overdub.
                In this setting, recording will add to existing sound in the buffer rather than
                erasing it. Overdub only affects the portion of the buffer in the current region.
                Any other buffer contents will remain untouched.
            </description>
		</method>
        
		<method name="punch">
			<arglist>
                <!--arg name="toggle" type="int" optional="0" id="1" /-->
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Set recording mode to punch. In this setting, recording will add to existing sound in the buffer, but with an enveloped
                fadein and fadeout. Punch only affects the portion of the buffer in the current region. Any other buffer contents will remain untouched.
            </description>
		</method>
        
		<method name="punchfade">
			<arglist>
                <arg name="fadetime" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Set the fadein/fadeout time for the punch envelope. It is 50 ms. by default.
            </description>
		</method>
        
		<method name="record">
			<arglist>
                <!--arg name="toggle" type="int" optional="0" id="1" /-->
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Set recording mode to record. In this setting,
                recording will add to write over any contents in the buffer.
                Record only affects the portion of the buffer in the current region.
                Any other buffer contents will remain untouched.
            </description>
		</method>
        
        <method name="region">
			<arglist>
                <arg name="start" type="float" optional="0" id="0" />
                <arg name="end" type="float" optional="0" id="0" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				A region is specified in terms of start point and end point in milliseconds.
                Once defined, recording will only take place within that region.
                Recording commences immediately at the region's start point.
                If both start and end are set to 0, the region is set to the entire buffer. By default
                the entire buffer is the region.
            </description>
		</method>
        
        <method name="regionsamps">
			<arglist>
                <arg name="start" type="int" optional="0" id="0" />
                <arg name="end" type="int" optional="0" id="0" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				A region is specified in terms of start point and end point in samples.
                Once defined, recording will only take place within that region.
                Recording operations commence immediately at the region's start point.
            </description>
		</method>
    </methodlist>
	
    
	<!--ATTRIBUTES-->
	<!--attributelist>
     <attribute name="Static Increment" get="1" set="1" type="int" size="1">
     <digest/>
     <description>
     When this attribute is on, the increment is set for each note at the outset (in the right inlet) and remains constant for the duration of the note. When the attribute is off, the increment can be continuously manipulated, but is the same for all active notes.
     </description>
     </attribute>
     </attributelist-->
	<!--SEEALSO-->
	<seealsolist>
        <seealso name="metro"/>
        <seealso name="record~"/>
        <seealso name="edge~"/>
        <seealso name="el.player~"/>
        <seealso name="el.dmach~"/>
        <seealso name="el.adsr~"/>
        <seealso name="el.mask~"/>
        <seealso name="el.counter~"/>
	</seealsolist>
    
</c74object>
