<?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="pgmout" module="max" category="MIDI">
	<digest>
		Send MIDI program changes
	</digest>
	<description>
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Max
		</metadata>
		<metadata name="tag">
			MIDI
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				Program Change
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="INLET_TYPE">
			<digest>
				MIDI Channel
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="port" optional="1" type="symbol">
			<digest>
				MIDI port ID
			</digest>
			<description>
				Specifies the port for transmitting MIDI program change messages. When a letter argument is present, channel numbers greater than 16 received in the right inlet will be wrapped around to stay within the 1-16 range. If there is no argument, <o>pgmout</o> initially transmits out port a, on MIDI channel 1.
			</description>
		</objarg>
		<objarg name="port-channel" optional="0" type="list">
			<digest>
				MIDI port and channel
			</digest>
			<description>
				A letter and number combination (separated by a space) indicates a port and a specific MIDI channel on which to transmit program change messages. Channel numbers greater than 16 will be wrapped around to stay within the 1-16 range.
			</description>
		</objarg>
		<objarg name="device" optional="1" type="symbol">
			<digest>
				MIDI output device
			</digest>
			<description>
				The name of a MIDI output device may be used as the first argument to specify the port. The name 'none' can be used to prevent the object from transmitting MIDI messages on any port.
			</description>
		</objarg>
		<objarg name="channel" optional="0" type="int">
			<digest>
				Extended MIDI channel
			</digest>
			<description>
				A number alone can be used in place of a letter and number combination. The exact meaning of the channel number argument depends on the channel offset specified for each port in the MIDI Setup dialog.
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="int">
			<arglist>
				<arg name="input" optional="0" type="int" />
			</arglist>
			<digest>
				Send MIDI program change
			</digest>
			<description>
				In left inlet: The number has 1 subtracted from it and then is transmitted as a program change value on the specified channel and port. Numbers are limited between 1 and 128, and are sent out as program changes 0 to 127.
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="input" optional="0" type="float" />
			</arglist>
			<digest>
				Send MIDI program change
			</digest>
			<description>
				Converted to <m>int</m>.
			</description>
		</method>
		<method name="anything">
			<arglist>
				<arg name="port" optional="0" type="list" />
			</arglist>
			<digest>
				Set the MIDI output device
			</digest>
			<description>
				Performs the same function as <m>port</m> but without need for the word, &quot;port&quot;.
			</description>
		</method>
		<method name="(mouse)">
			<digest>
				Select a MIDI output device
			</digest>
			<description>
				Double-clicking on a <o>pgmout</o> object shows a pop-up menu for choosing a MIDI port or device.
			</description>
		</method>
		<method name="in1">
			<arglist>
				<arg name="channel" optional="0" type="int" />
			</arglist>
			<digest>
				Set MIDI channel
			</digest>
			<description>
				In right inlet: The number is stored as the channel number on which to transmit the program change messages.
			</description>
		</method>
		<method name="port">
			<arglist>
				<arg name="port" optional="0" type="symbol" />
			</arglist>
			<digest>
				Set the MIDI output device
			</digest>
			<description>
				The word <m>port</m>, followed by a letter <m>a</m>- <m>z</m> or the name of a MIDI output port or device, specifies the port used to transmit the MIDI messages. The word <m>port</m> is optional and may be omitted. The name 'none' can be used to prevent the object from transmitting MIDI messages on any port.
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="input" optional="0" type="list" />
			</arglist>
			<digest>
				Send MIDI program change
			</digest>
			<description>
				In left inlet: The first number is the program number +1, and the second number is the channel of a MIDI program change message transmitted on the specified channel and port.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="matchport" get="1" set="1" type="int" size="1">
			<digest>
				Enable MIDI for exact port match only
			</digest>
			<description>
				If the <ar>port</ar> argument doesn't match an existing port or device name, set the object's MIDI port to 'none'.
			</description>
			<attributelist>
				<attribute name="category" get="1" set="1" type="symbol" size="1" value="Behavior" />
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Enable MIDI for exact port match only" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="name" get="1" set="1" type="symbol" size="1">
			<digest>
				Port Name
			</digest>
			<description>
				Set the object's MIDI port based on a device name. The attribute will attempt to do a case-sensitive partial string match based on the attribute's value.
			</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="Behavior" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Port Name" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="text_onesymbol" />
			</attributelist>
		</attribute>
		<attribute name="zerobased" get="1" set="1" type="int" size="1">
			<digest>
				Zero-Based
			</digest>
			<description>
				When enabled, output program change values from <m>0</m> to <m>127</m>. By default, <o>pgmout</o> outputs values from 1-128.
			</description>
			<attributelist>
				<attribute name="default" get="1" set="1" type="int" size="1" value="0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Zero-Based" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="pgmout.png" caption="Letter argument transmits to only one port. Otherwise, number specifies both port and channel" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="midiout" />
		<seealso name="pgmin" />
	</seealsolist>
	<misc name="Output">
		<entry name="(MIDI)">
			<description>
				There are no outlets. The output is a MIDI program change message transmitted directly to the object's MIDI output port.
			</description>
		</entry>
	</misc>
</c74object>
