FEED(OPCS)		Optical Printer Control System		FEED(OPCS)

        feed - feed motion control moves to motors every camera frame

        feed [chans] [file]       # start feeding motors from file
	feed off                  # disable feeding

	    [chans] declares specific channels to be used from the
	    file, and should consist of combined channel letters (ie. 'efgh'),
	    Asterisk (*) can be used to specify ALL channels.
	    [file] specifies the name of the file containing the positions 
	    for the channels. 
	    [off] tells FEED to cancel any FEEDs in progress.

        feed efgh zoomfile.pos    # Specify motion control file to
                                  # control the e,f,g,h channels.

        feed off                  # cancel any motion control files
                                  # that may currently be in progress.

        feed * zoomfile.pos       # all channels from file
	                          # (note: abc chans are ignored)

        FEED sets up per-frame motion control for situations such as zooms 
	and pans to be automatically controlled by an ASCII file containing
	columns of numbers that represent absolute positions.

	When FEED has been given a file, any command that shoots a frame on
	the camera (such as cam or rep) will first read the next positions
	from the file, send the motors to their new positions, and then shoot
	the frame. This will continue until the end of the FEED file is 
	reached, at which point the FEED file is automatically turned off.

	The file will be read one line at a time for each frame exposed.
	When the end of the file is reached, the feed command is disabled,
	and the file is closed.

	FEED files can be disabled prematurely by specifying feed off,
	cancelling any FEED that is in effect, closing the file.

	FEED is functionally similar to the FDI/FDO commands in that FEED
	does not actually shoot any frames, but sets things up so that when
	commands such as cam or rep are used, the motors move to the positions
	JUST BEFORE the camera shoots each frame.

    POSITION FILES (xxx.pos)
	Position files can be created in a text editor by typing in the values
	manually (see 'FEED FILE FORMAT' below), or by using external programs
	to generate the numbers (e.g. 'ease.exe' for generating ease-in/outs)

	The file contains white space delimited columns of numbers. 
	Each line in the file corresponds to a frame on the camera.
	Each white-space delimited column corresponds to a motor axis 
	or 'channel'; the first column being channel 'a', the second 'b',
	and so on.

	Lines that start with '#' are ignored, so that comments can be 
	included within the file for readability.


            # zoom.pos file
	    # a     b     c     d     e     f     g     h     i ..
	      0     0     0     0     0     0     505   100   0   <-- frame 1
	      0     0     0     0   112     0     505   201   0   <-- frame 2
	      0     0     0     0   340     0     505   302   0   <-- frame 3
	      0     0     0     0   652     0     505   403   0   <-- frame 4
	      0     0     0     0  1034     0     505   504   0   <-- frame 5
	      0     0     0     0  1480     0     505   605   0   <-- frame 6
	      0     0     0     0  1982     0     505   706   0   <-- frame 7

	In this case the 'e', 'g' and 'h' channels have moves programmed
	into them; 'e' has a ramp, 'g' has a holding position of '505',
	and 'h' has a linear ramp. The rest of the channels are zero.

	So to use just the 'e' channel from this file, the operator would use:

	    feed e zoom.pos rep 20

	..this will set up and shoot the motion control move; each time 
	the camera exposes a frame, the 'e' channel will move to the next
	position specified in the file under the 'e' column.

	For more info on the position file format, see 'POSITION FILE FORMAT'

	Currently, FEED ignores channels ABC, even if specified.
	These correspond to the Aerial, Main, and Camera respectively,
	and are only controlled by shooting commands (PRO2, PRO, CAM, etc)

	FEED is only for the positioning non-shutter motors.

	Like the GO(OPCS) command, if you have zoom and follow focus channels
	configured on your system, FEED will do auto-follow focus ONLY if the 
	focus channel is specified to FEED. The file need not contain any 
	relevant values for the focus channel, but the channel must be 
	specified in order to do a follow focus zoom.

	Typically channels are assigned this way:

	      a - aerial projector (if any)
	      b - main projector
	      c - camera
	      d - fader (if any)
	      e - zoom, usually the lens
	      f - focus, usually the camera body
	      g - filter wheel (if any)

	Only the a/b/c/d channels must be assigned as shown; if there's
	a fader, it must be on the 'd' channel, the camera must be on 'c'.

	The other channels (e/f/g/h..) can be assigned to any axis you
	like; the above are just recommendations.

        In order for follow focus to work, the follow focus channel (f)
	must be specified to FEED. The values in the file for that 
	channel will be ignored if INTERP is configured for followfocus,
	and can therefore be all zeroes.

	The INTERP command will control the motor movement for this
	channel, automatically slaving the position of the focus to
	the positions on the zoom (e), based on the interpolations.

	If the focus channel is not specified to FEED, zooms will move
	without moving the focus channel. In the following example,
	'e' is the zoom, and 'f' is focus, with the 'f' channel slaved
	to the zoom with an INTERP command (not shown):

		feed ef zoom.pos      # DO follow focus during zooms
		feed e zoom.pos       # DONT follow focus during zooms

	If you want to specify your OWN focus positions in the FEED file,
	simply disable the INTERP(OPCSDEFS) command for the focus channel:

		! echo interp f - 0 0 0 > foo.foo  ! ldefs foo.foo

	This disables interpolation slaving for the focus channel, so that
	it can be run like a normal channel, using the values from the file
	for the positions.

        Position files are simple ascii files. They can be created with
	text editors, custom programs, or with software that comes with
	OPCS to create position files (e.g. ease.exe, gr.exe, etc). 

	  o  Lines whose first character starts with '#' are ignored.
	     These are comment lines,  and are not parsed by FEED(OPCS).

	  o  Each line in the file is considered a 'frame'.
	  o  Each line should have no more than 256 characters.

	  o  Each number on the line represents an ABSOLUTE POSITION for
	     that channel's motor.  There is no way to represent RELATIVE 
	     positioning in a FEED file currently.
	  o  The channels are always (ABCDEFGH..) respectively from left to
	     right.  Even though the software always ignores values for the
	     'abc' channels, some value (usually zeroes) must be there.
	  o  Numbers are normally ASCII signed integers, although can 
	     be floating point values for channels such as the fader,
	     to specify floating point 'degrees'.
	Here is a sample file that has a 5 frame zoom programmed into
	the 'e' channel:

	    #  TEST.POS
	    # A  B  C  D  E   F  G  H
	      0  0  0  0  10  0  0  0
	      0  0  0  0  25  0  0  0
	      0  0  0  0  45  0  0  0
	      0  0  0  0  60  0  0  0
	      0  0  0  0  65  0  0  0

	Although values must be specified in the A,B and C columns, they are 
	automatically ignored by the OPCS software to avoid screwing up the 
	camera and projector positions which are better controlled by other
	commands such as CAM, PRO and REP.

	To use the above file:

	    feed ef test.pos  # Start 'feed'ing numbers from test.pos
	    cam 5             # Shoot all 5 frames in the file

	Note that you can use any shooting command, including RAT and REP
	to shoot the frames. The rule to remember is new positions are fed to
	the motors BEFORE the camera ever shoots a frame.

	GO(OPCS)         - Move motors some distance or to new positions
        INTERP(OPCSDEFS) - configure channel position interpolations

	Gregory Ercolano, Los Feliz California 01/10/91
© Copyright 1997 Greg Ercolano. All rights reserved.