<?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.samm~">
    
	<digest>
		Random click generator
	</digest>
	<description>
		<o>el.samm~</o> stands for "sample accurate multiple metronomes." A single sample value of 1. is output on each downbeat; at all other times the output value is zero. While edge~ may be used to round to the nearest sample vector to control objects such as groove~, optimal timing will be had from objects designed to respond to click triggers.
    </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="tempo" type="float" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Basic tempo in BPM.
			</description>
		</objarg>
		<objarg name="beat subdivisions" type="list" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Basic subdivisions. A value of 4 will divide the beat into four parts. A value of 0.25 will trigger once for every four beats (a whole note). All subdivisions remain synced to the basic tempo, even if the tempo varies continuously.
			</description>
		</objarg>
    </objarglist>
	<!--MESSAGES-->
	<methodlist>
        
		<method name="arm">
			<arglist>
                <!--arg name="density" type="float" optional="0" id="1" /-->
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Set all metronomes to zero phase, and pause the object. It can now be started with the message "resume" or with a click sent to the inlet.
            </description>
		</method>
        
		<method name="beatinfo">
			<arglist>
                <!--arg name="maximum value" type="float" optional="0" id="1" /-->
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Prints beat diagnostics to the Max window.
            </description>
		</method>
        <method name="beats">
			<arglist>
                <arg name="beat durations" type="list" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Specify tempi in terms of beat durations. For example, 4 specifies a trigger every four beats (whole note). There must be the same number of durations as there are metronome outlets.
            </description>
		</method>
        
		<method name="divbeats">
			<arglist>
                <arg name="beat divisions" type="list" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Specify tempi in terms of beat subdivisions. For example, 4 means subdivide the beat by four (sixteenth note). There must be the same number of divisions as there are metronome outlets.
            </description>
		</method>
        
        
        <method name="msbeats">
            <arglist>
                <arg name="durations" type="list" optional="0" id="1" />
            </arglist>
            <digest>
            </digest>
            <description>
                Specify tempi as durations in milliseconds. For example, 250 specifies four beats per second. There must be the same number of durations as there are metronome outlets.
            </description>
        </method>
        
        <method name="pause">
            <arglist>
                <!--arg name="durations" type="list" optional="0" id="1" /-->
            </arglist>
            <digest>
            </digest>
            <description>
                Pauses all metronomes but does not reset their phases.
            </description>
        </method>
        
        
        <method name="ratiobeats">
            <arglist>
                <arg name="durations" type="list" optional="0" id="1" />
            </arglist>
            <digest>
            </digest>
            <description>
                Specify tempi as ratios relative to a whole note at the underlying tempo. Ratios are specified in pairs. For example, at a tempo of 60 BPM, a ratio of 1 4 yields a quarter note. A ratio of 1 12 yields an eighth-note triplet. There must be the same number of ratios as there are metronome outlets.
                
            </description>
        </method>
        
        <method name="resume">
            <arglist>
                <!--arg name="durations" type="list" optional="0" id="1" /-->
            </arglist>
            <digest>
            </digest>
            <description>
                Restarts paused metronomes.
            </description>
        </method>
        
        <method name="sampbeats">
            <arglist>
                <arg name="durations" type="list" optional="0" id="1" />
            </arglist>
            <digest>
            </digest>
            <description>
                Specify durations in samples. For example, at a tempo of 60 BPM and sampling rate of 44100, a duration of 22050 yields an eighth note beat. There must be the same number of durations as there are metronome outlets.
            </description>
        </method>
        <method name="tap_end">
            <arglist>
                <!--arg name="durations" type="list" optional="0" id="1" /-->
            </arglist>
            <digest>
            </digest>
            <description>
                Defines the completion of a duration measurement started with "tap_tempo".
            </description>
        </method>
        
        
        <method name="tap_tempo">
            <arglist>
                <!--arg name="durations" type="list" optional="0" id="1" /-->
            </arglist>
            <digest>
            </digest>
            <description>
                Initiates setting a tempo by tapping two successive beats. The new tempo is rounded to the nearest MSP vector size, since this process is message-driven. The time measured between the two beats becomes the new quarter note. The second beat is entered with the "tap_end" message. Once the new tempo has been captured all predefined metronome subdivisions are relative to the new tempo.
            </description>
        </method>
        
        <method name="tempo">
            <arglist>
                <arg name="tempo" type="float" optional="0" id="1" />
            </arglist>
            <digest>
            </digest>
            <description>
                Specify a tempo in BPM. All metronomes in the object adjust immediately to the new tempo change, and maintain their internal sync.
            </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="edge~"/>
        <seealso name="el.player~"/>
        <seealso name="el.dmach~"/>
        <seealso name="el.adsr~"/>
        <seealso name="el.mask~"/>
        <seealso name="el.counter~"/>
	</seealsolist>
    
</c74object>
