<?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="vdp" module="max" category="Devices">
	<digest>
		Control a videodisk player through a serial port
	</digest>
	<description>
		The <o>vdp</o> object works with serially-controlled videodisk players (remember them?) that are compatible with the Pioneer 4200 or 8000 standard. Each command received by the <o>vdp</o> object sends a stream of numbers out the object's left outlet, intended to be connected to the <o>serial</o> object. The description of each command discusses what effect the command has on the player, not the exact character stream sent by <o>vdp</o>.		<br />
		<br />
		Because videodisc players have relatively buffer-less serial interfaces, <o>vdp</o> places each command it receives in a queue, and sends it out only when the player has finished executing its most recent command. This &quot;feature&quot; may cause a delay between the time a command is sent to the <o>vdp</o> object and the time it is actually sent out the serial port.
		<br />
		<br />
		Any message received in the right inlet will behave exactly as if it had been received in the left inlet, except that it will be put at the front of the queue, to be the very next command sent out to the player.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Max
		</metadata>
		<metadata name="tag">
			Devices
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				Regular Priority Commands
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="INLET_TYPE">
			<digest>
				Handshaking from Serial Port
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="2" type="INLET_TYPE">
			<digest>
				High Priority Commands
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="OUTLET_TYPE">
			<digest>
				Command Output
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="OUTLET_TYPE">
			<digest>
				Polling Output
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="2" type="OUTLET_TYPE">
			<digest>
				Frame Number
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="3" type="OUTLET_TYPE">
			<digest>
				Time
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg id="0" name="OBJARG_NAME" type="OBJARG_TYPE" optional="0">
			<digest>
				TEXT_HERE
			</digest>
			<description>
				TEXT_HERE
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="int">
			<arglist>
				<arg name="frame-number" optional="0" type="int" />
			</arglist>
			<digest>
				In left inlet: Same as <m>play</m> from a specified frame number to the end of the disc.
			</digest>
			<description>
				In left inlet: Same as <m>play</m> from a specified frame number to the end of the disc.
				<br />
				<br />
				In middle inlet: <o>vdp</o> expects responses from the player to be fed from the <o>serial</o> object into its middle inlet. When <o>vdp</o> sees &quot;received&quot; (the letter <m>R</m> followed by the return character) from the player, it sends the next command from its queue of pending commands. The example shows how to connect the <o>vdp</o> and <o>serial</o> objects together.
			</description>
		</method>
		<method name="chapter">
			<arglist />
			<digest>
				In left inlet: Asks the player what its current chapter number is and sends the response (received in the middle inlet) out the middle-right outlet.
			</digest>
			<description>
				In left inlet: Asks the player what its current chapter number is and sends the response (received in the middle inlet) out the middle-right outlet.
			</description>
		</method>
		<method name="clear">
			<arglist />
			<digest>
				The <o>vdp</o> object works with serially-controlled videodisk players (remember them?) that are compatible with the Pioneer 4200 or 8000 standard.
			</digest>
			<description>
				In left inlet: Removes any pending commands from the queue and resets the object.
			</description>
		</method>
		<method name="cmd">
			<arglist>
				<arg name="ASCII-primitive-command-code" optional="0" type="list" />
			</arglist>
			<digest>
				In left inlet: The <m>cmd</m> message can be used to send &quot;primitive&quot; commands consisting of ASCII codes to the video disk player.
			</digest>
			<description>
				In left inlet: The <m>cmd</m> message can be used to send &quot;primitive&quot; commands consisting of ASCII codes to the video disk player. Commands usually consist of two-letter codes preceded by numeric arguments. For example, searching to frame 5000 could be accomplished with the message cmd 5000 SE. Refer to the owner's manual of your player for details. The <m>cmd</m> message is particularly useful with the Pioneer 8000 player, since it has a number of special features not supported by the regular messages of the <o>vdp</o> object.
			</description>
		</method>
		<method name="control">
			<arglist>
				<arg name="action-ID" optional="0" type="int" />
			</arglist>
			<digest>
				In left inlet: The word <m>control</m>, followed by a number, tells the videodisc player to perform one of the following operations:
				<br />
			</digest>
			<description>
				In left inlet: The word <m>control</m>, followed by a number, tells the videodisc player to perform one of the following operations:
				<br />
				<br />
				Number Operation
				<br />
				0 --------- Initialize and reset player
				<br />
				1 --------- Eject disk
				<br />
				2 --------- Audio off
				<br />
				3 --------- Audio 1 on
				<br />
				4 --------- Audio 2 on
				<br />
				5 --------- Stereo on
				<br />
				6 --------- Picture on
				<br />
				7 --------- Picture off
				<br />
				8 --------- Display frame numbers on
				<br />
				9 --------- Display frame numbers off
				<br />
				11 ------- Frame access mode
				<br />
				12 ------- Time access mode
				<br />
				13 ------- Chapter access mode
				<br />
			</description>
		</method>
		<method name="fps">
			<arglist>
				<arg name="playback-speed (frames-per-second)" optional="0" type="list" />
			</arglist>
			<digest>
				In left inlet: Sets the playing speed.
			</digest>
			<description>
				In left inlet: Sets the playing speed. The <m>fps</m> message is followed by a number (frames per second) or an adjective. The following adjectives and numbers are equivalent (at least for the Pioneer 4200):
				<br />
				<br />
				slowest 1
				<br />
				slower 10
				<br />
				slow 15
				<br />
				normal 30
				<br />
				fast 60
				<br />
				faster 90
				<br />
				fastest 120
			</description>
		</method>
		<method name="frame">
			<arglist />
			<digest>
				In left inlet: Asks the player what its current frame number is and sends the response (received in the middle inlet) out the middle-right outlet.
			</digest>
			<description>
				In left inlet: Asks the player what its current frame number is and sends the response (received in the middle inlet) out the middle-right outlet.
			</description>
		</method>
		<method name="name">
			<arglist />
			<digest>
				In left inlet: Asks the player what the current name is and sends the response (received in the middle inlet) out the middle-right outlet.
			</digest>
			<description>
				In left inlet: Asks the player what the current name is and sends the response (received in the middle inlet) out the middle-right outlet.
			</description>
		</method>
		<method name="play">
			<arglist>
				<arg name="first-frame" optional="0" type="int" />
				<arg name="last-frame" optional="0" type="int" />
				<arg name="speed" optional="0" type="int" />
			</arglist>
			<digest>
				In left inlet: With no arguments, <m>play</m> starts playing at the current speed from the current location to the end of the disk (or until the player receives another command).
			</digest>
			<description>
				In left inlet: With no arguments, <m>play</m> starts playing at the current speed from the current location to the end of the disk (or until the player receives another command). With one argument (a frame number), <m>play</m> searches to the specified frame number and begins playing to the end of the disk. With two arguments, <m>play</m> searches to the location specified by the first number and plays until the disc reaches the second frame number.
			</description>
		</method>
		<method name="scan">
			<arglist>
				<arg name="forward/backward" optional="0" type="list" />
			</arglist>
			<digest>
				In left inlet: Initiates a &quot;fast forward&quot; or &quot;rewind&quot; operation.
			</digest>
			<description>
				In left inlet: Initiates a &quot;fast forward&quot; or &quot;rewind&quot; operation. <m>scan forward</m> moves forward, <m>scan backward</m> moves backward.
			</description>
		</method>
		<method name="search">
			<arglist>
				<arg name="start-frame-number" optional="0" type="int" />
				<arg name="display-flag (0 or non-zero)" optional="0" type="int" />
			</arglist>
			<digest>
				In left inlet: The first argument indicates a frame number to search to.
			</digest>
			<description>
				In left inlet: The first argument indicates a frame number to search to. The second, optional argument, if non-zero, instructs the player to keep the picture on while searching. If searching a great distance from the current location, the player may not be able to keep from blanking the screen. Once the player arrives at the desired frame, it will display the (still) image from that frame.
			</description>
		</method>
		<method name="step">
			<arglist>
				<arg name="previous/next-step (-1 or 1)" optional="0" type="int" />
			</arglist>
			<digest>
				In left inlet: Followed by <m>-1</m>, <m>step</m> pauses the player (if playing) and displays the previous frame.
			</digest>
			<description>
				In left inlet: Followed by <m>-1</m>, <m>step</m> pauses the player (if playing) and displays the previous frame. Followed by <m>1</m>, <m>step</m> pauses the player (if playing) and displays the next frame.
			</description>
		</method>
		<method name="stop">
			<arglist />
			<digest>
				In left inlet: Pauses the player.
			</digest>
			<description>
				In left inlet: Pauses the player.
			</description>
		</method>
		<method name="restrict">
			<arglist>
				<arg name="start-frame-number" optional="0" type="int" />
				<arg name="end-frame-number" optional="0" type="int" />
			</arglist>
			<digest>
				The word <m>restrict</m> followed by a starting frame-number and an ending frame-number will restrict all future messages to perform their actions restricted between the two frames.
			</digest>
			<description>
				The word <m>restrict</m> followed by a starting frame-number and an ending frame-number will restrict all future messages to perform their actions restricted between the two frames.
			</description>
		</method>
		<method name="setskip">
			<arglist>
				<arg name="number-of-skipped-frames" optional="0" type="int" />
			</arglist>
			<digest>
				In left inlet: Followed by a number, sets the number of frames to jump (forward or backward) from the current frame location when using the <m>skip</m> message.
			</digest>
			<description>
				In left inlet: Followed by a number, sets the number of frames to jump (forward or backward) from the current frame location when using the <m>skip</m> message.
			</description>
		</method>
		<method name="skip">
			<arglist>
				<arg name="backward/forward-flag (-1 or 1)" optional="0" type="int" />
			</arglist>
			<digest>
				In left inlet: Followed by <m>-1</m>, skips backward by a number of frames specified in the <m>setskip</m> message.
			</digest>
			<description>
				In left inlet: Followed by <m>-1</m>, skips backward by a number of frames specified in the <m>setskip</m> message. Followed by <m>1</m>, skips forward by a number of frames specified in the <m>setskip</m> message.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<!--EXAMPLE-->
	<examplelist>
		<example img="vdp.png" caption="Basic configuration of vdp and serial objects... 'Scrubbing' with a slider or MIDI controller" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="serial" />
		<!-- <seealso name="">Pioneer 4200 operation manual</seealso> -->
		<!-- <seealso name="">HyperCard Interactive Video Toolkit documentation</seealso> -->
	</seealsolist>
	<misc name="Output">
		<entry name="int">
			<description>
				Out left outlet: A stream of characters, coded instructions to the videodisc player, for each command. These numbers are intended to be sent to the left inlet of a <o>serial</o> object.
			</description>
		</entry>
		<entry name="bang">
			<description>
				Out middle-left outlet: After sending a command out its left outlet, <o>vdp</o> begins &quot;polling&quot; the <o>serial</o> object for a response from the player by sending <m>bang</m> messages out this outlet approximately every 20 milliseconds, until <o>vdp</o> receives a &quot;received&quot; signal from the player in its right inlet. (A <m>bang</m> sent to a <o>serial</o> object causes any characters received in that serial port to be sent out the <o>serial</o> object's outlet.)
			</description>
		</entry>
		<entry name="int">
			<description>
				Out middle-right outlet: Current frame number, received from the player in response to a <m>frame</m> message.
			</description>
		</entry>
		<entry name="int">
			<description>
				Out right outlet: Not implemented.
			</description>
		</entry>
	</misc>
</c74object>
