<?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.dmach~">
	<digest>
		A click based drum pattern generator.
	</digest>
	<description>
		<o>el.dmach~</o>
        sends clicks representing attack triggers and increments according to user-specified patterns.
        
    </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>
				Tempo in Beats per Minute.
			</description>
		</objarg>
		<objarg name="voices" type="int" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				
                The number of voices for this object.
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="arm">
			<arglist>
                <arg name="pattern slot" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Mutes object and prepares to play the specified pattern when mute is next turned off.
            </description>
		</method>
		<method name="clickincr">
			<arglist>
                <arg name="toggle" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				If turned on, the increment is sent as a click. Otherwise it is sampled-and-held.
            </description>
		</method>
		<method name="copy pattern">
			<arglist>
                <arg name="pattern slot 1" type="int" optional="0" id="1" />
                <arg name="pattern slot 2" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Copies the contents of pattern slot 1 to pattern slot 2.
            </description>
		</method>
		<method name="gain">
			<arglist>
                <arg name="slot number" type="int" optional="0" id="1" />
                <arg name="gain factor" type="float" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Set a gain factor for a drum slot. Slots are counted starting at zero. Default gain factor is 1.
            </description>
		</method>
		<method name="listraw">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Prints a full specification of the given pattern to the list outlet (rightmost outlet), that can be used as the message "readraw". This can be useful when patterns are assembled piecemeal.
            </description>
		</method>
		<method name="loopsequence">
			<arglist>
                <arg name="pattern sequence" type="list" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Initiates looping of the specified sequence of patterns.
            </description>
		</method>
		<method name="mute">
			<arglist>
                <arg name="toggle" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Turn off DSP for this object.
            </description>
		</method>
		<method name="muteslot">
			<arglist>
                <arg name="toggle" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Turns the output stream on or off for the specified drum slot. Slots are counted starting at zero. All streams are on by default.
            </description>
		</method>
		<method name="nosequence">
			<arglist>
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Stops a playing sequence, whether it is looped or not.
            </description>
		</method>
		<method name="playsequence">
			<arglist>
                <arg name="pattern sequence" type="list" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Plays the specified sequence of patterns once, then stops.
            </description>
		</method>
		<method name="printraw">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Prints a full specification of the given pattern to the Max window, that can be used with the message "readraw". This can be useful when patterns are assembled piecemeal.
            </description>
		</method>
		<method name="readraw">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Reads a full specification of the pattern into a given pattern slot.
            </description>
		</method>
		<method name="recall">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Loads the specified pattern.
            </description>
		</method>
		<method name="recall">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Shows the speficied pattern at the Max window.
            </description>
		</method>
		<method name="slotamps">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                <arg name="amplitude data" type="int" optional="0" id="1" />
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
                Sets the pattern for a given drum slot within a given pattern. The specification format is: pattern number, slot number, bar subdivision, [amplitude attack values]. There will be "subdivision" number of attack values in the bar. A 0 specifies a rest. All increments for the attacks will be set to 1. As an example, we create a pattern for slot 0 in pattern 1. Assume that pattern 1 has a duration of 4 beats. We create a "four on the floor" pattern with an attack on each beat.
                <p>
                    slotamps 1 0 4 1 1 1 1
                </p>
            </description>
		</method>
		<method name="slotampsfull">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                <arg name="amplitude data" type="int" optional="0" id="1" />
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
                Sets the pattern for a given drum slot within a given pattern. The specification format is: pattern number, [slot number, beat segment, beat subdivision, [amplitude attack values]]*. There will be "subdivision" number of attack values for each segment. A 0 specifies a rest. All increments for the attacks will be set to 1. As an example, we create a pattern for slot 0 in pattern 1. Assume that pattern 1 has a duration of 4 beats. We will divide the first 3 beats into 7 and the last beat into 5. <p>slotampsfull 1 0 3 7 1 0 1 0 1 1 0 1 5 1 1 1 0 1</p>
                
                
            </description>
		</method>
		<method name="slotincrs">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                <arg name="increment data" type="int" optional="0" id="1" />
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
                After creating an attack pattern with slotamps or slotamps full, the increments may be set with this message. Data specification is: pattern, slot, increment list. One increment is given for each actual attack. No increment is given for rests. Using the slotampsfull example above, we observe that it contains eight attacks. We can provide an increment pattern as follows.
                <p>slotincrs 1 0 0.7 1 1.2 1.25 1.2 2. 1.5 1.33</p>
                
                Be careful, as incorrect specifications with this message could crash Max.
            </description>
		</method>
		<method name="store">
			<arglist>
                <arg name="pattern number" type="int" optional="0" id="1" />
                <arg name="beat duration" type="float" optional="0" id="1" />
                <arg name="pattern data" type="list" optional="1" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Stores a pattern to a given pattern slot. The pattern can either be completely specified or simply a stub giving the duration, such that the pattern can later be filled in piecemeal with messages like "slotamps". Data format is as follows: pattern number, number of beats, [ [slot number, [segment duration, subdivision, [atks], [increments ]]* ]* ]*
                <p>
                    The following example is for a 3/4 bar with one slot, stored in pattern slot 7. </p>
                <p>
                    store 7 3 0 3 3 1 0.5 0.5 1 1.25 1.5
                </p>
                As should be clear, this is potentially the most complicated, and most error prone way to enter a pattern. However its use could be eased with a programming interface built in JavaScript or other such language.
                
            </description>
		</method>
		<method name="tempo">
			<arglist>
                <arg name="tempo" type="float" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Set the tempo. Specified in beats per minute (BPM). All slots will maintain sync under continuous tempo change.
            </description>
		</method>
		<method name="transpose">
			<arglist>
                <arg name="slot number" type="int" optional="0" id="1" />
                <arg name="transposition factor" type="float" optional="0" id="1" />
                
			</arglist>
			<digest>
				TEXT_HERE
			</digest>
			<description>
				Set transposition factor for a given drum slot. All transpositions in sequences for this slot will be multiplied by this "master" transpose factor. This factor is 1.0 by default.
            </description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
	</attributelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="clip~"/>
        <seealso name="kink~"/>
	</seealsolist>
    
</c74object>
