Copyright 1996-2006 by Loren Wilton

Obtain ShowMan for Windows NT by clicking on this URL:  ShowManSetup.exe.
                       ShowMan v2.0.88 Release Notes

This is the 84th or so commercial release.

Several fixes to the Alcorn Binloop device editor, and a fix to an 
annoying bug in the device configurator that would build incorrect MTS-232
device entries.

See below for complete release note comments on each of the changes.



	1)	Fixed many problems in the Alcorn Binloop device editor.

	2)	The scrollbar in the sequence list display in the MIDI editor would
		not always scroll far enough to disply the entire message text.

	3)	The device editor was broken for MTS-232, Kodak, and Simda projector
		devices.  It was putting the device id in the wrong location.  The
		device editors did not recognize these messages, and the MTS-232
		E-Show device didn't recognize them correctly either.

		The device configurator has been fixed.  It is necessary to bring
		up the device configurator, select each MTS-232, Kodak, or Simda
		device in a show with broken devices, and select "Change",  This
		should fix all of the cues to have the data in the right locations.



	1)	Fixed window updates so the little pacman that shows cue position
		should now update in all cases.

	2)	When testing a cue in the editor the highlight wasn't stepping off
		of the last message after it had been played.  This is now fixed.



	1)	Problems introduced in version 85 in fix #7 resulted in failing to
		load the default show.  This has been cleaned up without breaking
		the fix for old Amiga shows.

	2)	The formatting for some messages complaining about incorrect port
		numbers for MIDI deivices has been improved slightly.



	1)	When loading an old show the ShowMan device was coming up as a
		"missing device" in cues for ShowMan.  This could have also happened
		with some other devices.  This is now fixed.

	2)	Some valid device types could erroneously produce an "unlicenced
		device" warning message in the device editor.  This has been fixed.

	3)	If a show was opened that had MIDIShowCD commands in it, but there
		was no MIDIShowCD device defined, the commands were erroneously
		attached to the main ShowMan device.  This made it impossible to
		correctly edit the CD player commands.  The CD player device is now
		correctly created.

	4)	If a device was created for a missing MSC type device, it would be
		erronously labeled a MIDI device rather than MSC device.

	5)	Eliminiated some ugly redundancy in formatting channel note message

	6)	Stepping forward or backward in the cue editor in an imported show 
		could end up crashing if the cue stepped to was not a MIDI cue.

	7)	When importing an old Amiga show it is possible to end up with a cue
		with no description.  These will now be named "Unnamed Cue".

	8)	Corrected the manufacturer id display for invalid 1-byte manufacturer
		id values in system exclusive messages.

	9)	Fixed several problems where the wrong device could get associated
		with a message when importing an older show.

	10)	Fixed a problem where a device could fail to be created when it was
		required for a message in the show without an associated device.

	11)	Fixed a problem where adding device could screw up the relationship
		between existing messages and existing devices.

	12)	Generated MSC device names now include the command format.

	13)	If new devices are added to a show because there are messages in the
		show without devices, there will now be a popup message explaining
		to check the new devices and correct the name and MIDI ports as needed.

	14)	The MSC command format is no longer included in the message 
		description, since the device the message is associated with is now
		included in the description.  The device will hopefully be named in
		a way that makes it obvious what the command format should be.

	15)	The editors for system common and system realtime messages now have
		a device selection field.  Previously these messages used whatever
		device was specified in the previous message.  Now a device can be
		specified, allowing the common or realtime message to be sent to
		a specific MIDI port.

	16)	Changing the device for a message but not otherwise changing the
		message will now be recognized as a change to the message, and it
		will be updated correctly when the "Replace Msg" button is clicked
		in the editor.

	17)	If a message has an incorrect device linkage, an attempt will be
		made to find a more correct device when editing the message. A popup
		warning will ask you to verify that the device selected is the one
		you really want to use.

	18)	The device configurator could get confused and refuse to let you 
		change the command format on a generic MSC device.

	19)	You can no longer delete a device if it is in use by cues in the 
		show.  A message will pop up showing the cues that are using the
		device you tried to delete.  You will have to delete the messages
		that reference the device before it can be deleted.

	20)	Fixed a serious problem in interpeting the SmPaths.n file when
		importing old Concurrent shows.  It turns out that the smpaths.n
		files made by Stage Manager and the SmPaths.n files made by 
		Concurrent had two different formats, and both could be mixed in the
		same show!  The two different file format should now be handled 
		correctly in all cases, even if the case of the name was lost when
		importing the files to the PC.

	21)	I think I finally fixed a long-standing problem where the current
		path would get duplicated, possibly multiple times, for one or more
		cue lists.  It turned out this could happen if there were several
		similarly-named directories in the show path.

	22)	When loading some old Amiga shows in-place (rather than importing
		them) the show directory structure could get changed strangely,
		resulting in multiple paths for the cuelists.  As well as being ugly
		and redundant, this could cause confusion in deciding which path to
		load the cues from.

	23)	If there were multiple similarly named cue directories in a show,
		ShowMan could have picked the wrong path to load cues from.

	24)	The Song Select system common message was being generated with the
		wrong size, resulting in an extra null byte after the message.

	25)	Fixed a memory leak in the midi editor when stepping off of the end
		of the cuelist backwards.

	26)	When changing to another cuelist in the editor the first cue in the
		new list will be loaded automatically.  The current cue will be 
		checked for unsaved edits first.

	27)	When importing an SMF file that has messages for devices that do not
		currently exist in the show, the devices will be added when you 
		create the cue.  A list of the added device names will be displayed.

	28)	When capturing MIDI messages and adding them to a cue, if a device
		does not exist for each message added, new devices will be created.
		A list will be displayed of the devices added to the show.
		Devices will only be created for the messages actually added to the
		cue, not necessarily all devices that may have been required by all
		of the messages captured.

	29)	The generated descriptions of MIDI program change and control change
		messages will now take into account the base program number and the
		base control number of the device the message is for.

	30)	When generating new devices from messages for a show that either 
		doesn't have devices defined, or has missing devices, the various
		Richmond devices will be recognized in most cases and set up
		correctly.  No more "Richmond Sysex Id:0" instead of an MTS-232.

	31)	All of the various device editors should now put the actual device
		name at the front of the description of each message they create.
		Of course this will only show up when a message is edited.  Existing
		messages will not be changed when the show is loaded.

	32)	When entering hex characters in the MTS-232 editor, the hex pairs
		will now always be displayed in upper case, regardless of how they
		were typed.

	33)	When entering alpha characters in the sysex editor they will no 
		longer erroneously be forced to uppercase.  Hex character pairs will
		be forced to uppercase, as they were previously.

	34)	A message concordance function has been added to the device editor
		and the MIDI message editor.  This will let you find all messages
		for a device, or all messages that match the current message.  You
		can then edit the located messages.

		From the device editor double click on a device in the righthand
		list.  This will bring up the concordance showing all messages for
		the selected device.  You can click on a single message and then
		uncheck the 'All Messages" checkbox to display only the instances
		of a single message.  You can check the "All Devices" checkbox to
		see how this message is used by all devices in the show.

		From the MIDI editor, doubleclick on a message in the list on the
		left.  This will bring up the concordance showing only the instances
		of this message for this device.  You can again play with the "All
		Messages" and "All Devices" checkboxes to widen out the message

		In the concordance, you can double-click on any message to bring up
		the MIDI message editor for that message, regardless of the cuelist,
		cue path, or cue that it is in.

		In the concordance, you can hide or show any level of the tree above
		the message level by double-clicking on one of the boldface names of
		a device, cuelist, cuepath, or cue.

		When you select all messages for all devices, the device trees will
		be collapsed, so all you will see is a listing of all devices in the
		show which have at least one message somewhere.  Double-clicking on
		the individual devices will show where the messages are for that 

	35)	The Device Configurator dialog is now modeless, so you can leave it
		open while continuing to work on the show.  This was required to
		make the concordance window work correctly, but it is generally
		useful in its own right.

	36)	The scrolling highlight on the current message when testing a cue in
		the MIDI editor was accidentally lost a few releases back.  It has
		now been restored, and will keep the current message in the center
		of the sequence list window.

	37)	When opening a new show when a show is already open, the file
		requestor will now show the directory containing the current show
		rather than the default shows directory.

	38)	Adjusted the column widths on the Show control window to not truncate
		cuelist names that are all uppercase letters.

	39)	The device configurator no longer shows a device id selection field
		for an MTS-232 device, since an MTS-232 doesn't have a selectable
		device id field.

	40)	If you brought up the midi editor and clicked on "MSC" in the list
		on the right, the MSC editor would appear, usually with All Sound
		Devices displayed as the selected device.  However, the command 
		format was not correctly set to the format of the selected device.

	41)	Changing the 'clock running at open' state in the list configurator
		was inadvertantly affecting the current clock state in the list if
		the list was open.  The list is now correctly unaffected by changes
		in the list configurator if it is open, with the exception that
		changing the list name or the path names or ordering will close and
		reopen the cuelist to get the new list and path state from disk.

	42)	In previous versions there was a large queue for messages between
		each cuelist and the MIDI output ports.  If the queue filled up due
		to a MIDI loop (or other reason) the sender would be blocked until
		there was space to send the next message in the queue.  This could
		result in locking up the system if you coded a queue loop that 
		flooded the output ports.

		In this release, the large queue is still there.  But now, if you
		manage to overflow the queue, the extra messages will be discarded.
		This will prevent the user interface from locking up, and should
		allow you to stop clocks or otherwise deal with the problem without
		the pain of a reboot.

		When a MIDI transmit error occurs, the cuelist getting the error
		will turn bright red, and a status line message will show the name
		of the cuelist and cue that got the error.  The red background will
		be cleared the next time a message is sent successfully from that
		cuelist, or when the clocks are stopped, or a Reset or All-Off is
		done for the cuelist (or show).

	43)	There is now a small slider control at the top of the screen that
		can be used to control the overall brightness of the backgrounds of
		the windows.  If you are using ShowMan in a darkened theater it can
		help overall visibility (and audience annoyance) if you can easily
		dim the display to match the lighting at the control position.

	44)	Fixed the menus that erroneously indicated that an Alt+L shortcut
		would bring up List Configuration.  Alt+L and Ctrl+L control Global
		MTC lock and unlock.

	45)	Fixed the About box to update the copyright date to 2004.  :-(
		You'ld think that I would have noticed this a few months sooner...

	46)	Added a debugging command to force use of a specific configuration
		file.  Much easier debugging customer shows!

	47)	Added an item in the Help menu that will show up only before a show
		is opened.  This will display the current configuration settings in
		the licence file.  This may be helpful in cases where it seems that
		something isn't enabled that it is believed should be enabled.

	48)	Fixed a problem introduced in the last version where the device
		configuration editor was not letting you set the device id for an
		MTS-232 device, or any device based on the MTS-232.

	49)	Improved the messages when you click on a device that does not have
		the correct matching MIDI ports on the current machine.  Previously
		the message complained about both the input and output ports, even
		if one of them was correct.  The message is now more exact in what
		it complains about.

	50)	When converting a GM device to an MSC generic device, the id2 offset
		and value would be set wrong.  These indicate the format of the MSC 
		commands for the device.  The result was that invalid MSC messages
		could have been generated.

	51)	Updated the copyright in the version and About displays to 2005.

	52)	There is a "Display Configuration" menu item under Help that will
		display the currently licenced ShowMan options.

	53)	A debug-only option has been added to the main window (before a show
		is opened) to force the use of a specific licence file.



	1)	If you deleted a device and then tried to edit a message for it 
		ShowMan would crash.  Now the message will indicate "MissingDevice!"
		and you will not be able to edit the message until you add back a
		matching device.

	2)	The "read" commands have been removed from the PLC editor window as
		they were not useful for anything, and caused confusion.  Reading
		from the PLC is done using the PLC Configuration dialog.

	3)	Fixed the long-standing problem with having two identical devices 
		with the same device id on two different ports.  Previously the
		correct device index would get lost on all of the messages, and they
		would all end up pointing to the first device.

		Since the problem here is that there isn't enough data stored in 
		current shows to find the right device, it will be necessary to load
		any current shows with this problem, manually correct the messages
		that should be for devices other than the first, and re-save the show.

		The drawback of this change is that shows saved with this version
		are NOT COMPLETELY COMPATABLE with earlier versions of ShowMan!
		Loading a newly saved show into an earlier version will result in
		it not being able to resolve the devices correctly for the messages.
		This may cause the show to malfunction on an earlier version!

	4)	The PLC monitor configuration was not being saved when the show was
		exported or saved under another name.  It now is.

	5)	Added a button to the PLC Configuration dialog to update the PLC
		configuration without having to exit the dialog and come back in.



	1)	If a message had a system-generated description and the message was
		changed, the description would not always be changed to the new
		description.  This is now fixed.

	2)	Message descriptions now contain the actual device name, rather than
		a generic description of the device id.

	3)	User message descriptions will no longer erroneously get a period on
		the front of the message when the show is reloaded.  User message
		descriptions are supposed to be indented by one space, not a period.

	4)	Adding a message with a user description as a new message at the
		end of a sequence could in some cases lose the user description.
		This has been fixed.

	5)	Fixed a crash if you clicked the new "use hex bytes" checkbox in the
		MTS-232 editor before you clicked the "Data" checkbox to enable a
		data-type message format.

	6)	Unable to delete a "General MIDI" device.  This is fixed.

	7)	Changed All-Off/Restore handling back to the way it was prior to 
		version 2.0.80.  This makes an F4 send ANOs and the like, but a 
		Reset received from MIDI will not generate ANOs.  Also, ANOs will
		only be sent to the main output port, not to all ports.

	8)	Changing the list count on a show from 1 to more than 1 will now
		cause the show window to be displayed along with the list windows.
		Changing a show from more than one list to one list will now hide
		the show window.  Previously the window change only happened after
		the show was reloaded.

	9)	When changing the number of lists in the show, the windows will be
		re-tiled automatically.  This keeps the show window and possibly
		other windows from not becoming visible because they are hidden
		behind other windows.

	10)	Updated the copyright dates in the splash screens from 2002 to 2004.



	1)	Fixed problem with change 17 in 2.0.80 that could result in a loop
		and crash.

	2)	You can now use the sysex editor on devices other than manufacturer
		sysex devices.

	3)	If you change the device in the manufacturer sysex editor, all of
		the message information now is set for the new device.  Previously
		the device class wasn't set, resulting in the wrong editor coming up
		when you tried to edit the message again.  This would also result in
		the message getting parsed wrong when the show was reloaded, 
		resulting in complaints about invalid message formats.

	4)	Editing a hex-only sysex is now easier.  You can type hex number 
		pairs without intervening spaces and the editor will add the spaces
		for you.

	5)	Entering a non-hex character in the sysex editor in hex-only mode
		no longer complains multiple times before you correct the error.

	6)	The MTS-232 editor now allows hex-only data entry, and is set to
		hex-only by default.  Also like the change to the syex editor,
		entering a long string of hex characters will be interpreted as hex
		character pairs automatically, without needing the intervening spaces.

	7)	Fixed decoding problems for MMC Move and Locate commands in the MMC

	8)	Changing the id of an MMC device could screw up badly and clobber
		the F0 on all sysex messages for the device with the new device
		number.  This has been fixed, and code added to the rechannelize
		process to detect broken messages and try to recover them.

	9)	If bad messages have been stored in a show because the F0 for a 
		sysex was lost, the message loading code will attempt to recover
		this case.  The recovery attempt may or may not be successful,
		depending on how badly the data in the cue was mangled.
	10)	The DEL key can now be used to delete selected messages from a cue.

	11)	When selecting multiple messages and then right-clikcing on one of
		the selected messages, the other messages are no longer unselected.
		This makes it much easier to delete a group of messages using the
		right mouse button popup.  (And is how it was supposed to work in
		the first place.)

	12)	It is now easier to see the current selection in the ShowMan
		message editor.

	13)	ShowMan will now remember the position and size of the main window
		on the screen when a show is saved, and will reset to thast size
		when the show is reloaded, unless the show is loaded onto a system
		with a smaller screen size.  If the attempt to restore the original
		position and size results in much or all of the window being off the
		screen, ShowMan will come up in full screen mode as usual.



	1)	The fix to the crash on entering Show Configuration made in version
		80 was incomplete and the crash could still occur.  This time is is
		really fixed.



	1)	Implemented Alt+L for Global MTC Lock and Ctrl+L for Global MTC
		Unlock.  This matches ABEdit usage.

	2)	Fixed a bug in the PLC monitor dialog that caused GX and GY items
		to monitor the wrong address in the PLC.

	3)	Fixed a bug in show loading that would correct the MIDI port numbers
		when a show was loaded on a different system, but then not update 
		the new MIDI port names, so the next time the show was loaded the 
		port numbers would be reset to the wrong ports again.

	4)	Fixed a bug in show config introduced in version 78 that would
		result in a crash under some circumstances.

	5)	Eliminated a breakpoint that could occur if the show window had a
		really unreasonable height, far exceeding the screen size.

	6)	Updated PLC-205 editor to handle the new AD 260 CPU, which has twice
		as many inputs, outputs, control relays, and counters as the 250 CPU

	7)	Increased the number of tests possible in the PLC monitor dialog to
		100 per PLC from the previous limit of 10. Also redesigned the code
		that attempts to optimize the number of requests that have to be 
		sent to the PLC for each polling interval.  In general it is a good
		idea to keep the variables that you are monitoring relatively closely
		related to each other by address, so that more than one monitored
		variable can be read from the PLC in a single request.

	8)	You can name or rename PLC monitor conditions by retyping the name
		in the droplist display window showing the current condition name.

	9)	You can now use bit variables accessed as words (16 bit groups) in
		the PLC monitor panel.  For instance, VX0 is a word group of X0 to
		X17 (octal addressing).  The next word group would start at VX20.
		This makes it easier to test inputs when used in groups for specific
		combinations or values.

	10)	The "Set To" value to set a PLC variable to a value can now be the
		name of another PLC variable.  If you set a word variable to a bit
		value, the word will only set to 0 or 1.  If you set a bit variable
		to a word value, the bit will set to the low-order (even/odd) bit
		value of the word.

	11)	You can also use PLC variables in the Cue, List, and Path fields of
		an MSC command.  While you can use bit values here, it generally
		would make more sense to use word values.  Remember that by default
		word values in the PLC are in BCD, so the possible values are 0 to 
		9999.  This feature has been there since the start, but is not
		common knowledge.

	12)	There is now a small indicator next to the condition description in
		the PLC monitor panel.  This indicator will flash on for a half
		second any time the current condition happens.  This can make it
		somewhat easier to debug communications between the PLC and ShowMan.

	13)	Fixed a serious data corruption problem in the PLC monitor code.
		Previously monitoring a PLC input would have been unreliable.

	14)	Freezing and unfreezing the clocks could leave a "clocks frozen"
		message in the status bar erroneously.  Fixed.

	15)	Freezing the clocks to make show editing easier did not prevent
		external MSC commands from running and firing cues.  Freezing clocks
		will now ignore LOAD, GO, TIMED_GO, GO_OFF, and GO_JAM_CLOCK
		commands from external MIDI inputs.

	16)	Some menu items didn't have status line descriptions or baloon
		descriptions.  These have been added.

	17)	When ShowMan receives an external MSC RESET, ALL-OFF, or RESTORE,
		it will now propigate the message to all output MIDI ports, not just
		the main show output port.  ALL-OFF and RESET will also send an ANO
		per MIDI channel and Note Off messages as necessary.  This will make
		operation with an external MIDI controller more compatable with the
		operations from the keyboard function keys.



	1)	Fixed a bug that caused the show window to be of infinite height,
		making it very hard to manage.



	1)	Added settings to the Show Config dialog to change the font size in
		the show and list windows.  All windows are currently set to the 
		same size font.  Font sizes can be between 6 and 30 points.  The
		default font size is 9 points.  Larger font sizes can be usefule on
		high resolution screens where the text can become hard to read from
		a distance.  Font sizes over 15 points or so probably aren't useful
		in shows with more than one or two lists, as the test will be too

	2)	Added settings to the Show Config dialog to lock out keyboard and 
		mouse input to the show or list windows.  You can select all 
		windows to be enabled for user input, which is the default.  Or you 
		can select just the show window, or just one specific list window.  
		This is useful when you have a show that is being controlled from a 
		"master cuelist" that fires the cues in the other lists, and you 
		don't want the operator to inadvertantly enter GO commands for the 
		wrong list.

		It is still possible to have some control over individual lists 
		using the List Control dialog.  However, to edit cues in a list
		that is locked out, you will have to unlock list access in the
		Show Config dialog first.

	3)	There is now a small icon to the left of the cue number in the cue
		lists.  This is currently a yellow circle for the standby cue, and
		a green "pacman" circle for running cues.  The circle will disappear
		a segment at a time as the cue is running.  For fast cues you 
		probably won't even see the circle.

		The shape of these icons are likely to change in a future release.

	4)	The standby cue will now work its way down to the center of the list
		window, and then stay at that point, until there are no more cues to
		scroll into the window.  Then it will continue to the bottom of the
		window.  Previously only one line was kept above the standby cue.
		Now that running cues are flagged while running, it is more useful
		to have a larger number of cues showing above the standby cue.



	1)	ShowMan now has a proper installer.  This probably won't make
		installation any easier, but it provides room for some checking when
		installing the program.

	2)	The new Installer will check if ShowMan will run successfully on the
		target system.  ShowMan will not run on very old versions of Windows
		NT 4.0 if none of the service packs have been installed, or Internet
		Explorer has not been updated.  ShowMan may also fail to run on very
		early versions of Windows 95, for similar reasons.

	3)	When installing on Windows 95, 98, or Windows ME, the Installer will
		put up a message telling you that, while you can test ShowMan on
		this system, you cannot (or at least should not) attempt to actually
		run shows on the system.  ShowMan is only supported on NT 4.0, W2K,
		and XP.



	Version 2.0.76 was an interim test version, only released to two test

	1)	If you select "Freeze All Clocks" from the Clock menu, the cuelists
		will now retain their positions as they gain and lose focus.
		Previously the standby (or edit) cue would always be scrolled into
		the window when the window lost focus.  This behaviour is by design
		during normal operations, and will still occur when clocks are not

	2)	The hotkeys for Global MTC Lock and Global MTC Unlock (Shift+L and
		Ctrl+L) conflicted with entering an upper case L into cue description
		fields.  These hotkeys have been eliminated, as they seem to cause 
		more problems than they were supposed to solve.

	3)	The MSC editor was forgetting what command formats existed and
		greying out the cue/list/path windows on a GO.  This is fixed.

	4)	Fixed a problem in Show Configuration that failed when trying to add
		cue lists to the show.

	5)	Changing a list to or from a calander list would lose the window
		position and mark the window hidden, even though the flags in list
		config said it should be displayed.  This is fixed.

	6)	If you just typed a file name into the SMF import dialog rather than
		browsing for the file name, it refused to believe that you had 
		entered a file name.  This is corrected. The list of filenames to
		choose from is now sorted too.

	7)	All-Off and Reset commands erroneously would not stop playing 
		sequences in a calander list.  This is now fixed.

	8)	Changed "Richmond Modbus" to "Richmond PLC-205" as the editor name
		to be less confusing.

	9)	Fixed several problems with correctly adding PLC-205 messages to a
		cue, and then being able to edit them afterward.  This actually
		affects any of the message editors that created specific descriptions
		of the messages they create, rather than using the default description
		of the MIDI message string.

	10)	It is no longer possible to delete from the cuelist the cue currently
		being edited in the cuelist.  You must either close the editro or
		edit another cue first.

	11)	Switching the editor from one list to another and hitting Next Cue
		would put a phantom empty cue into the cuelist.  This is fixed.

	12)	ShowMan now has an official installer.  It will warn if you are
		installing on Win95/98/ME, and it will abort the install if ShowMan
		can't run on the system because the OS hasn't been updated in the
		last few years.  (Mostly a problem with ancient NT 4 systems.)

	13)	Changed ShowMan back to using system DLLs rather than statically
		linking the libraries.  This fixes some problems with various E-Show
		device on various versions of the OS.  It also means that there are
		probably some systems where ShowMan will no longer run unless the
		recent OS service packs are installed.

	14)	You can no longer fiddle with the TC Gen list number if the TC Gen
		isn't licenced.  Likewise for the output Smpte Port.



	1)	The description of the message time entry fields now correctly
		changes to "Time From Start of Cue" when in this mode.

	2)	When editing a MIDI message, if you hit the DEL key while in a text
		field, ShowMan erroneously asked you if you wanted to delete the
		current message rather than deleting a character.  This is fixed.

	3)	The wrong function key mappings were being loaded in ShowMan II when
		the MIDI Editor or an AudioBox live control window was open, so the
		normal things that should happen on function keys wouldn't happen
		in those windows.  This is fixed.

	4)	When moving from one message to another in the MIDI editor the 
		message highlighted in the list was not properly changing.

	5)	When pasting messages into the MIDI editor window, they will now be
		pasted in BEFORE the selected target line, rather than AFTER it.
		This makes it possible to insert the copied messages at any place
		in the message list, including as the first message.  Previously
		the pasted messages could only be inserted as the second or
		subsequent message.

	6)	If you click on a message with a user description and modify the 
		message, the modified message will correctly keep the old user
		description.  The assumption is that you are changing the physical
		message needed to perform the previously described function.  This
		has not changed from the last version.

		However, previously if you clicked on a mesage with a user 
		description, modified the message, and then inserted that as a new
		message, the inserted message would erroneously keep the user 
		description for the message at the point of insertion.  Now when
		you do this, the message difference will be detected, and the user
		description will be replaced with the correct machine-generated

	7)	If you deleted a cuelist that had multiple paths containing the
		identical cues, ShowMan would crash.  This is fixed.



	1)	Fixed a nasty memory corruption problem in the device configurator
		when changing parameters on a device.



	1)	Updated the Pulsar Masterpiece device editor to handle the "Shows"
		key selections available on the Masterpiece 216.

	2)	Fixed a minor bug in masked time handling.

	3)	Updated the contact info in the About Box.

	4)	Resized many of the setup dialogs a little wider to make them look 

	5)	Improved the text alignment and general layout in all dialogs.

	6)	Band-aided a bug in Windows that returns the wrong number of
		channels on a sound card.

	7)	Verified that all dialogs will fit on an 800x600 screen, except for
		the AB live monitor window.

	8)	The show now gets saved after the List Configurator modifies a
		cuelist.  It is no longer necessary to do a Save Show to save the
		changed settings.

	9)	ShowMan can now respond to MIDI "note on" and "program change" 
		messages to trigger cues.

		In Cuelist Configuration, each cue list has a setting for a MIDI
		channel number and an action to take.  The action can be to ignore
		all MIDI messages (which is the default action), or to check for
		Program Change messages or Note On messages.  Only one MIDI channel
		and action can be specified for each cue list, but each cue list can
		have a different MIDI channel and action.  All MIDI input must 
		appear on the show default MIDI input port to be detected.

		When a cuelist is set to monitor Note On messages, each Note On
		seen will be checked for the correct channel number and the Velocity 
		greater than zero.  If these tests pass, a GO will be sent to the
		cuelist, using the note number as the cue number.

		A note number of 0 is a simple "GO next cue".  Any other note number
		is a GO for a specific cue in that cuelist only.  Note that it is
		only possible to fire cue numbers 1 to 127.  If no cue exists with
		the correct cue number, the Note On will be ignored.

		When a cuelist is set to monitor Program Change messages, things
		work almost the same.  There is no Velocity field to check, and the
		Program number is used as the cue number.  Again, Program 0 is "GO
		next cue", and programs 1 to 127 are specific cue numbers.

		If you want multiple cue lists to respond to the same note on or
		program change commands, you must set up each list specifically
		with the same parameters.

		Note: program changes and note on messages generated by cues will
		NOT result in cues being fired.  Only messages arriving from the
		external MIDI port will fire cues.  To fire one cue from another
		cue, use an MSC GO command as usual.

	10)	Updated the About box to the latest RSD contact info.

	11)	The device configurator now displays manufacturer's names and ids
		in both numeric and alphabetic order.  This should make it much 
		easier to create a manufacturer sysex message when you know the name
		of the manufacturer but don't know the manufacturer's id number.

	12)	If you make a manufacturer sysex device with a 3 character id value,
		you no longer get a whine about the id offset being less than 4.

	13)	The first device editor, which is always available, is now "ShowMan
		Control".  This contains the MSC messages that are specific to
		ShowMan, such as Standby, Go, Open Cue List, Start Clock, and others.
		This should make it considerrably quicker for new users to figure 
		out how to control ShowMan.

		It is still possible to use the standard MSC editor to create and
		modify ShowMan control commands.  However, the layout changes and
		slight wording changes should make the use of the ShowMan-specific
		editor easier.

	14)	If a cue only had the description filled in, after telling you to
		fix the errors, the editor would simply vanish rather than letting 
		you fix the errors.  You now get to fix the problems if you want.

	15)	A loop that could occur when hitting Next or Prev in the editor with
		a partially-completed cue has been fixed.

	16)	You can now select multiple messages in the History window and copy
		them to the clipboard, then paste them into the sequence list
		window on the left of the editor.  In this way you can add multiple
		existing messages to a cue quickly.

	17)	When the editor is showing messages in "time from start of cue" mode,
		the time shown for each message now represents the time from the 
		front of the cue, not the offset from the previous message.

		If you change the time on the message such that it really belongs in
		a different place in the message sequence and then click "Replace Msg"
		the message will be moved to the correct place in the message sequence
		for the new message time.  If the message doesn't need to me moved,
		the time will be corrected without moving it.  
		Since messages are still stored with offset times from the previous 
		message, changing the time on one message may result in changing the 
		time offset on the following message also, to keep it at the same 
		offset from the start of the cue.  Also, when inserting a message 
		into the message sequence, the time of the following message may 
		need to be adjusted.

		If a message is inserted with the same time as an existing message,
		the new message will be inserted after the existing message.

		Note that if you copy and paste a sequence of messages into an 
		existing cue in this mode, it is still possible to shift the times
		of the messages following the paste point if the times of the
		inserted messages won't all fit in the space betweeen the insert
		point and the next message.  This will be fixed in a future version.

	18)	Fixed some minor potential memory leaks that probably could never
		have happened in actual use.

	19)	MIDI Capture can now select any device to capture data from the
		assigned input port, not just from the show default input port.



	1)	Changed the time display to display hundredths of a frame rather 
		than 0/1/2/3 for quarter frame values.  This should make time a 
		little less confusing.

	2)	Cue descriptions can now be up to 80 bytes rather than 30 bytes.

	3)	Fixed a bug that prevented the AudioBox editors (and several others)
		from showing up in the edit window.

	4)	Renamed the menu selections for some of the editors to make them
		more obvious in the new device editor list format.

	5)	Made it so that user-entered message descriptions will not get lost
		when the message is edited.  Previously user-entered descriptions
		would get clobbered by the automatically generated descriptions in
		many cases.

	6)	Fixed a problem with MIDI capture creating invalid message and cue

	7)	You can use Ctrl+A (Select All) in the MIDI Capture window to 
		select all of the captured messages for inclusion in the generated 

	8)	You can use Ctrl+C (Copy) in MIDI Capture to copy the seleced
		messages to the clipboard.  They can then be pasted into a cue in
		the cue editor.

	9)	You can use Ctrl+X (Cut) to copy the selected messages to the
		clipboard and delete all messages in the capture window.
		The messages can then be pasted into an editor window.

	10)	You can now use cut/copy/paste/select all in the sequence list in
		the MIDI editor.  This allows multiple messages to be quickly
		deleted or moved around.  It also allows quick copying from a MIDI
		capture and pasting all or part of the captured messages into an
		existing cue.  Or copying messages from one cue to another.

	11)	The sequence list in the editor now allows extended selections of
		multiple messages using click/drag plus the shift/control keys,
		rather than the single message selection previously possible.
		A side effect of this is that the drag resequencing to move messages
		around is no longer possible.  Copy/paste can be used instead.

	12)	When pasting messages into the sequence list in the MIDI editor,
		the new messages will be added at the end of the existing messages
		if no message is currently selected.  If a single message is 
		selected, the new messages will be inserted in the sequence just
		after the selected message.

		If multiple messages are selected (possibly an extended selection)
		when a paste is done, all of the selected messages will first be
		deleted.  Then the new messages will be inserted in the remaining
		sequence just after where the first selected (and now deleted)
		message had been.

	13)	Previously if you edited a message and then clicked on another 
		message in the sequence list, the edits to the first message would
		be lost.  ShowMan now correctly asks if you want to save the edits
		to the first message.

	14)	The list of device editors available was not being rebuilt in a cue
		editor after a device was added or removed, until the cuelist was
		closed and reopened.  Now the list of available editors is rebuilt 
		any time the list of device changes.

	15)	The DEL key can be used in the sequence list in the editor to delete
		the currently selected messages.

	16)	Deleting the only message in a cue could result in the editor saying
		the message had changed, and putting the deleted message right back.
		This has been fixed.

	17)	Rearranged the Show menu a little, and eliminated the Ctrl+N and
		Ctrl+O shortcuts to create or open a show, since these aren't likely
		to be useful and the shortcut keys can be used for other more useful

	18)	Added a "New Cuelist" item to the Show menu to easily add a cuelist
		to the current show.  This should eliminate a little confusion on
		how to go about adding a cuelist to an existing show, although the
		current methods still work.

	19)	If you don't select any messages in a MIDI capture before clicking
		on the "Create Cue" button, all messages captured will now be 
		selected and added to the cue.  Previously a complaint message
		would have occurred, forcing you to select some messages before
		creating a cue.

	20)	The New Show wizard cuelist setup now includes settings for Clock
		Speed (frames per second) and for Initial Window State.  This 
		matches the settings available in the list configurator.

	21)	Fixed a couple of problems that resulted in list windows not being
		displayed in the correct positions or sizes after a new show is
		created and saved.

	22)	Renaming a cuelist now properly renames the cuelist directories so
		that the cues continue to exist in the list.  Previously the cuelist
		was saved under the new name, leaving the old directories around
		cluttering up the show.  Also, sometimes the save didn't happen,
		resulting in empty cuelists without any cues after a rename.

	23)	Fixed a problem where entering and exiting the list configurator
		without selecting a cuelist to configure could result in deleting
		the paths from the last cuelist in the show, if there were no cues
		in the paths.

	24)	The device description field is now limited to 80 characters so that
		it will fit in reasonable display fields.  Previously the description
		length was unlimited.

	25)	The device configurator has been changed slightly.  The tree list of
		existing devices on the right side has been changed to a simple list
		of devices.  This should make it much easier to find devices, since
		it won't be necessary to expand the tree nodes to see what is there.

		Since all devices are now listed in a single list rather than by
		type, it is no longer possible to have two devices in a show that
		have the same name.

	26)	Fixed a bug with masked calander time fields that could produce an
		invalid time if the days field was completely masked and we had to
		increment the time to the next higher month or year.  This seems to
		have only showed up on Windows XP.

	27)	Editing lists with multiple paths.  If you are editing a cuelist with
		more than one path, rightclick in the cue window and select "Cuelist
		Settings" from the popup menu, then doubleclick on the path you want
		to edit.  Alternately, you can use Alt+L to bring up the List Settings.

		If you have multiple paths in a calendar list and have masked 
		calendar cues that switch paths on you, editing can be awkward.  
		To get around this, select "Freeze All Clocks" in the Clock Control 
		menu.  This will freeze the show and let you edit the calander list 
		without it switching the path out from under you.  Of course this 
		stops the show, so you probably don't want to do it while the show
		is currently running.

	28)	The system setup panel in the New Show wizard now has setup stuff
		for the joystick port and the Smpte audio output port.  This now
		matches the System Configuration dialog.

	29)	The Show Setup panel in the New Show wizard now allows a selection
		of the timecode generator list number, rather than arbitrarily
		picking a list number.  This now matches the Show Configuration



	1)	The timestamp on a sysex message, when importing from an SMF file
		was incorrect.

	2)	MSC SET command was not checking the number ranges and allowing
		values above 16383.

	3)	Fixed several places where a crash could occur when ShowMan reached
		the demo timeout limit while performing some long action.

	4)	Fixed an uninitialized variable that caused the cuelist windows to
		not show the current cue.

	5)	Fixed a problem with the midi note editor dialog complaining about
		an invalid program number when switching from a device that has
		program numbers 0-127 to one that is 1-128.

	6)	Fixed a similar problem with the control change editor.

	7)	Fixed some annoyances in the midi note and control change editors
		to make it easier to rechannelize messages.

	8)	When entering the value for a double-byte high controller, the 
		value is now entered as 0 to 127 (or 1 to 128) instead of the value
		multipled by 128.  This seems to be more in keeping with how people
		use controller values.

	9)	A problem where the function keys weren't working correctly if you
		had clicked on one of the editor pages has been fixed.  The 
		function keys worked correctly if you were in other places in the 
		editor window.

	10)	Fixed a problem in SMF import where control change messages weren't
		being tagged as control changes, so the wrong midi editor page would
		come up if you tried to edit them.

	11)	Added code to correct the device id or channel number in all 
		messages in the show when changing a device id.  This only works if
		you are changing a device, not if you delete a device and add a 
		similar device.

	12)	Added code to correct all necessary messages and devices if you 
		change the primary ShowMan id in the System Configuration.

	13)	Allow the type of a device to be changed as long as it won't change
		the basic message size.  This means you can change manufacturer's
		sysex messages as long as the ids remain 1 byte or 3 byte, or can
		change other sysex forms with single byte ids.  But you can't change
		from a sysex type to a MIDI channel type, which has a completely
		different message format.

	14)	Added code to SMF import and MIDI Capture to do a much better job of
		determining the message type and attempting to associate it with the
		correct device.

	15)	Device editor pages will no longer appear until a device has been
		configured that the editor would support.  This might eliminate a
		bit of confusion using ShowMan.

	16)	Added a Simda Slide Projector editor.
		This editor makes messages in MTS-232 format, since the projector
		is controlled serially.  The MTS-232 should be set for 8N2 at 9600.

	17)	Added a Kodak Ektapro slide projector editor.
		This editor makes messages in MTS-232 format, since the projector
		is controlled serially.  The MTS-232 should be set for 8N2 at 9600.

	18)	Changed the list of available editors to be sorted alphabetically to
		make them easier to find.

	19)	Changed the name of the PLC editor tab from "AutomationDirect Modbus"
		to "Richmond Modbus", and changed the menu that brings up this
		editor from "Richmond PLC-205" to "Richmond Modbus".  Having the
		name in the menu item the same as in the editor should make life a
		little less confusing.

	20)	When accidentally trying to create a duplicate device entry in the
		device configurator, the complaint message will now tell the name
		of the duplicate device, and the configurator will not be changed
		to this entry.  This makes it easier to correct the original entry
		without retyping a bunch of stuff.



	1)	Updated Midi Manufacturer's Id table to show correct manufacturer
		names as per the January 2003 list on the MMA site.

	2)	Fixed so that the show window will display correctly if the top or
		left starts outside the main window by a few pixels.  Previously
		it would disappear completely.

	3)	Fixed a crash when tiling or cascading windows.

	4)	When creating a new show the cuelist windows will be tiled.
		Previosuly they were too small to be useful.

	5)	Fixed a crash that could happen when creating a new show after
		previously opening another show.

	6)	You can now actually open all of the windows in a show with 128
		lists.  Previously the system ran out of resources around 70 lists.

	7)	Fixed a crash trying to read a standard midi file with a bad format.

	8)	Changed shape of SMF Import Dialog box so that it doesn't look like
		something is missing.

	9)	Calander cues will now only fire once within each time period that
		the masked time allows them to fire.  For instance, if the only
		non-masked digit in the time was the seconds units digit set to 0,
		previously the cue would have fired every tenth of a second while
		the seconds digit was 0, so it would have fired 10 times.  Now it
		will only fire once, and wait until the next time it can fire,
		which in the example would be 10 seconds later.



	1)	Redesigned internal system time of day handling to use NT native
		functions rather than the portable Unix functions.  This increases
		timer resolution and eliminates some long-standing potential bugs
		with using the Unix functions.  It also reduces overhead in a
		critical path by a considerable amount.



	1)	Added an enhancement to the LOAD and GO commands to help support
		laserdisk players.  If the cue number ends in a "+" sign, the
		cue selected will be the specified number, or, if the specified
		number doesn't exist, the next higher number.  Normally only the
		specified cue would be loaded or fired, and if an exact match
		didn't exist, nothing would happen.

	2)	Added a new E-Show device to handle Pioneer laserdisk and DVD
		players.  This is based on an MTS-232 and uses  the MTS-232 cue
		editor.  However, this E-Show device can return feedback to the
		show to determine the success and completion times of the commands
		sent to the LD player.

		Using the Pioneer E-Show device:

		Load the E-Show driver.  Select the serial ports that the players
		are connected to.  Be sure to pick the correct baud rate, which will 
		be 4800 or 9600, with 4800 the default.  Make appropriate device 
		entries.  Since each device requires a unique MSC id, it can be 
		simplest to use an MSC id corresponding to the COM port number.

		In ShowMan make corresponding MTS-232 device entries for the players.  
		Be sure the MSC ids match to those declared in the Pioneer E-Show 

		Feedback from the player is in the form of GO commands directed to a 
		particular list.  Thus it will usually be easiest to use a separate 
		list to control each player, so that feedback responses from one 
		player don't confuse the sequence of events on another player.

		Feedback is optional.  You can ask for feedback on errors and/or 
		when commands complete normally.  You can also set up a timout time, 
		which results in an error number of 90 being reported if a command 
		doesn't complete in the specified number of seconds.

		To request feedback from the player, you send a command string to 
		PORT 2 on the player MTS-232 device.  Note that all normal commands 
		to the player go to PORT 1.  The setup commands are remembered, so 
		only need to be changed if conditions change.

		As mentioned previously, feedback is in the form of GO commands sent
		from the player device to ShowMan.  These commands are sent to a
		specific list and cue number.  The setup command you send to the
		device tells it the appropriate list and cue numbers to send back.
		Each field can be set individually, so it is only necessary to 
		change the values that change.  Typically this would be the cue
		number fields.

		The setup command is a string containing some combination of the
		following values:

			EL <error list number>
			EO <error cue number base>
			GL <good complete list number>
			GO <good complete cue number>
			TO <timeout value in seconds, 0 = no timeout detection>

			LIST <list number>			(combination of EL and GL)
			QBASE <cue base number>		(combination of EO and GO)

		All fields default to zero, which results in no feedback being sent.

		The player can send errors in the range of 00 to 99.  When the
		driver receives an error response, it adds the error value to the
		<error cue base number>.  Then, if the <error list number> is non-
		zero, it sends a "GO qnum+ listnum" command to ShowMan.  If there
		are cues in the range of <error cue base> to <error cue base>+99,
		one of these cues will be fired.  The cue selected will depend on
		the error that occurred.

		Since the driver sends a "+" at the end of the cue number, it isn't
		necessary to have 100 cues, one for each possible error.  All that
		is really needed is a single cue at <cue base>+99, which will catch
		any error.  More cues can be used if you want to take specific 
		actions on various errors.

		If the <good complete list number> is non-zero and the command sent
		to the player is successful, a "GO goodnum+ goodlist" will be sent
		to ShowMan.  As some commands can take many minutes to complete,
		this can be used to synchronize the show to the disk playback.

		Since the error list number and good list number are separate, it
		is possible to ignore either errors or good completes by leaving
		the appropriate list number field zero.  Also, it is possible to
		handle good completes in-line in the list sending commands to the
		player, and handle error responses with a common routine in another
		list entirely.

		Often the action to be taken on an error will depend on the 
		particular that was just sent to the player.  For this, it is most
		convenient to put the error handling cues in-line immediately 
		following the cue that sends a command to the player.  The next
		"good cue" would follow the error handling cues.  To make this a
		little simpler, you can use the LIST and QBASE setup commands.  This
		will set both lists to the same list number, which only needs to be
		done once in an initialization cue.  After that, in each cue that
		sends a command to the player, there should also be a setup message
		that sets QBASE to a number above the current cue.

		As an example, consider the following:

		100		Initialize player
			send "LIST 1 QBASE 200 TO 30" to port 2
			send "SA 0d" to port 1 -- spin up disk

		299		Catch startup errors
			this cue will fire if any error 00 to 99 is detected in q 100.

		300		Start playing chapters 1 to 5
			send "QBASE 400" to port 2
			send "CH 5 SM 1 SL 0d" to port 1 -- stop ch 5, start ch 1

		499		Catch any play errors
			this cue will fire for any errors in cue 300

		500		Next "good" cue
			this cue will be fired if the player returned good complete.

		In the above example, cue 100 sets the qbase to 200 and the list
		to 1.  (We presume these cues are in list 1.)  It also sets the
		response timeout to 30 seconds.  At this point, any command sent
		to the player will result in a cue between 200 and 300 being fired
		within 30 seconds maximum.  If an error occurs, the cue number sent
		will be between 200 and 299 (since the maximum error number from
		the player is 99)  If no error occurs, the next cue will be qbase
		plus 100; or in this case 200+100 = cue 300 will be the next good 
		cue to fire.

		At cue 300 we are going to send another command to the player.
		If we don't change qbase, we will end up at cue 300 again, which 
		isn't a real good idea.  So first we change qbase to 400, so that
		the next cue will be in the range of 400 to 500.

		When creating a show this way, the "target cues" (eg: 200 to 300)
		should be manual-go cues, since the driver will be sending a GO
		command to fire one of them.  The other cues in the list might well
		be timed cues, or cues fired form another list, or manually by the

	3)	When loading a show on a system with different midi port order, if
		all of the devices can successfully be updated to new midi port 
		numbers, the device configuraiton will be saved.

	4)	Fixed several problems in validating masked time fields in calendar
		cues.  Cases such as masking the tens of seconds while leaving the
		units of seconds unmasked were being erroneously considered to be
		errors.  You can now mask single digits of any field validly, as
		should have been the case all along.

	5)	When editing a calendar time field in a cue, if the time had no
		masking at all, the time fields would be set correctly, but the
		dsecoded time value was not set correctly.  This resulted in cues
		failing to fire at the correct time.  This is now fixed.

	6)	After changing a cue in a calendar list the standby cue is 
		recomputed in case the time field was changed on the edited cue.

	7)	ShowMan now checks for any difference between the internal high-
		resolution time of day counter and the lower resolution system time
		value.  If a major change is noticed (typically due to a daylight
		saving time change or manual time change) ShowMan's internal time
		will be changed to match.  If a slow drift is noticed due to a
		difference in the counter frequency, then a slow correction will
		be made to adjust the time without disturbing the show.



	1)	Some buffers were too small, possibly resulting in crashes or cues
		coming up missing with very long path strings to get to the show.

	2)	The joystick buttons are now debounced better.  Previously they were
		sampled every 30ms, and the values simply used.  Now they are
		sampled every 20ms, and the button state must be constant for two
		sample periods before the new button state will be used.

	3)	Eliminated key repeat for the function keys.  This should end
		problems with firing a cue multiple times.

	4)	Added separate settings to the List Configurator for initial list
		open/closed state and initial window displayed state.  This will
		eliminate problems with windows that are initially closed opening
		Note: You will have to run list configuration on all of the closed
		windows and set them to 'Displayed' instead of 'Minimized'.

	5)	On new show setups, eliminated the default Group 112 response for
		ShowMan as this is almost never used and confuses the device
		manager listing with unneeded data.

	6)	Cuelist windows are no longer made active when the cuelists go open.
		This solves a problem where the operator entered an F12 to the show
		window (or a master list window) and the cue fired opened another
		cue list and changed the focus for the next F12.  Now the focus will
		remain where it was, so there shouldn't be any misdirected cues.



	1)	Fixed a possible crash if the device table file somehow becomes

	2)	Fixed a value conversion error that caused cues with 32KB of MIDI
		data to fail to load.



	1)	It was possible to enter 'impossible' time values into the calander
		list cue start times.  This is now caught and an error message
		given, rather than having a cue that will never fire.
	2)	The Cuelist Settings dialog could erroneously stop the clock on a
		calander cue list.  This error has been removed.

	3)	The cuelist window now shows the name of the current active path
		in the title bar.

	4)	The cue editor shows both the list and path name in the title bar.

	5)	After editing a cuelist that had been opened with the Open Cue List
		menu item, the list would be minimized.  Now it will remain shown.

	6)	Cuelist windows and the AB live control windows were often opening
		behind other windows instead of in front.  This has been fixed.

	7)	"Open Cue List" and "Close Cue List" message descriptions no longer
		have a redundant "List List".

	8)	Similar fix for open cue path and close cue path.

	9)	The Play buttons 1-8 in the AB live fader control now track the
		actual track play state of the box.  Previously only channels 9-16
		tracked the box state.

	10)	Modified the AB live status window to be kinder to midi mergers by
		reducing the amount of data returned from the AB.  The somewhat 
		slows the update response, but results in far fewer trashed input

	11)	The AB live monitor window no longer locks up the user interface
		for short periods of time.  This caused problems with displaying
		calendar lists.

	12)	Playing channel 1 with the AB live faders would play all tracks, 
		and stopping channel 1 would stop all tracks.  This is now fixed.

	13)	The track select dialog used to select a live track to play now
		defaults the track number to 1 (as previously) and the stop track 
		number to 2 rather than 0.

	14)	Adding a list to the show by changing the number of lists in 
		Show Config now correctly adds the next available list number,
		rather than skipping one list number as it has been doing.
	15)	Attempting to add a device when another device was using the same
		MIDI ports and device id would sometimes fail silently rather than
		complaining about a duplicate device.  The device configurator now
		properly complains in this case so you know there is a problem.
	16)	A cuelist created with the default list name showed the path name
		in the cuelist window instead of the list name.  This worked for
		shows imported from Stage Manager, but was confusing for new shows.
		ShowMan will now show the list name in the title bar, unless the
		list name is the default and the path name is not the default, which
		will typically only occur in an imported show.  If the list name is
		shown and the current path is not path 0, the path name will also
		be shown in the title bar.

	17)	You can open a show by dropping the show directory or a file in the
		show directory on the main window.

	18)	The main toolbar is now floatable and resizable.

	19)	If the current cue in the cue editor is completely blank (because
		you started to create a new cue and didn't, or stepped off the end
		of the cue list with the "Next Cue" button), hitting the Done button
		will no longer complain that the cue number is invalid, it will just
		quietly exit the editor.

	20)	A calander cue with no masking in the time field didn't fire at the
		right time.  This is now fixed.
	21)	Fixed a problem in the AB live monitor panel code that could cause a 
		crash on exit from ShowMan on a fast machine.

	22)	A trailing null line in the registration file could make it invalid.
		The trailing line will now be ignored.

	23)	There is now a "freeze all clocks" check option in the Clock Control
		menu.  Checking this option will freeze all clocks in the show.  
		This is not a good thing to do while the show is running.  But it 
		can be useful when editing calander lists, or show lists that will 
		close themselves or do other bad things while the clock is running.  
		When the clocks are frozen there will be a blinking red message in 
		the bottom status bar.

	24)	Fixed a minor bug that caused the current time display in a calander
		list to update more often than it needed to.

	25)	Under some circumstances a cuelist could be closed and still have
		some queued commands to fire, and not get those commands purged as
		they should have been.  This could cause strange results when the
		cuelist was reopened.  The remaining messages will now be purged as
		they should be.

	26)	It should now be impossible to drag the title bar on a list window
		up to the point where it is not accessible.

	27)	When the clocks are frozen, a cuelist window will not "snap back" to
		the current standby cue when closing the cue editor.  Instead, it
		will remain scrolled where it was.  It will snap back to the current
		standby cue when the cue editor is closed and the clocks are unfrozen.


	1)	Calendar lists are now referred to consistantly by this name.
		Previously the New Show wizard referred to them as "Date/Time" 

	2)	If an attempt is made to display a Calendar time of 0 (which is 
		invalid) the display will now be "Dawn of time!" rather than 
		garbage.  This would still represent a bug, but at least it won't
		be garbage.

	3)	Under some circumstances a Calendar list could be instantiated for
		the first time (when creating a new show) with the clock stopped,
		which should be impossible.  This led to the garbage time display
		described above.  This is now fixed.

	4)	Added SMF import to ShowMan I.

	5)	The function keys such as F4 now work when in the MIDI Editor.

	6)	In ShowMan I, the AudioBox monitor window now handles function keys
		correctly.  The AudioBox Levels window in ShowMan I, and both
		AudioBox windows in ShowMan II already handled function keys.

	7)	Deleted the original (and no longer accessible) AudioBox editor
		from the source base.

	8)	Removed the remains of "Preset" setup stuff from the current AB
		editor windows.

	9)	Removed the commented-out remains of Preset logic from the internal
		AB command processing classes.  Also deleted several other ancient
		commands no longer supported by modern AudioBoxen.

	10)	Updated the AB command table in the internal control classes to the
		latest spec.  

	11)	Updated the Delay editor to latest spec, including delay in samples.

	12)	Updated the EQ editor to latest spec, including params on end of
		the Set EQ Coefficients message.  Fixed bug in Set Bandcount.

	13)	Updated the IO gain editor to latest spec.  Added Set Xpoint Phase.

	14)	Minor updates to the Set Matrix Row editor.

	15)	Minor updates to the Set Submaster/Controller editor.

	16)	Joystick All-Off (and Restore and Reset) were not properly sending
		messages with the device-id and command-format fields of 7F, but
		instead just sending to the ShowMan id and command format 10.
		This resulted in the joystick all-off not stopping an AudioBox.

	17)	Major redesign of the AB Setup editor.

	18)	Eliminated BeOS compatability code since BeOS is dead now.

	19)	Changed Reset (shift-F4) from the keyboard to send a Reset out the
		show default MIDI port.  This should make it easier to control
		external devices in sync with Showman.

	20)	Changed the standard MIDI note/controller editors to not arbitrarily
		replace a message description entered by the user with the default
		description of the message.

	21)	The AB Monitor "play" command now does a Play Track Group to start
		all of the channels at once.

	22)	The AB Monitor "stop" command now sends the STOP command with the
		right parameters (ie: none) to stop all tracks at once.


	1)	Fixed a problem in the 'new show' setup pages where if you went back
		from the midi port selection screen and then forward again, the list
		of input and output midi ports in the droplists would be duplicated.

	2)	Fixed an annoyance in the MSC editor where the first time you set
		the command the correct cue/list/path windows would not be enabled.

	3)	Added the missing "separated by spaces" verbage back into the MTS232
		editor panel.

	4)	Fixed a similar problem in the generic sysex editor.

	5)	Added the ability to import Standard MIDI Files.  This works very
		much like capturing MIDI data.  Under the Edit menu, select
		"Capture SMF File".  This will bring up a dialog where you can enter
		the name of the file to import, and select the list to create the
		resulting cue.  Just like capturing MIDI data.

	6)	Fixed a large number of places in the new show wizard and the show
		configuration page where the sequence clock source options of
		"cuelist clock" and "MTC" were reversed.

	7)	When creating a new show, the cue windows would initially come up
		annoyingly small.  This has been imprroved.

	8)	Fixed a crash when importing a show from a different system with
		different MIDI ports declared.

	9)	Now handle cuelist windows correctly that are positioned somewhat 
		to the left or above the main window area when reloading the show.
		Previously these had a nasty habit of disappearing.

	10)	Now validate that windows are contained at least partially within
		the main window area when loading a show.  If not, they are moved
		into the main window area.



	1)	Fixed an oversight in device configurator that would crash when
		setting up a device that used the default show input or output
		MIDI port.



	1)	The joystick settings were not getting loaded correctly when a show
		was loaded.  So the joystick had the default configuration until you
		went into joystick config and clicked the OK button.

	2)	Fixed a potential crash when shutting down or reconfiguring devices
		when using the joystick.

	3)	The names of the MIDI ports on the system are now saved when you
		add or modify a device in the device configurator.

	4)	When you load a show, the names of the midi ports in use by each
		device are checked against the current midi port names on the 
		system.  If the port numbering has changed so that the original
		midi port with a given name now has a new port number, the port
		numbers for the devices are updated automatically.  This should 
		now make adding and removing midi ports (not used by a show) 
		transparent; you won't have to update the port numbers for the 

		If you load a show and a device which was inuse cannot be found by 
		name, you will get a popup message when loading the show, telling
		you to check in device configurator.  When you select the device in
		the device configurator you will see an error message showing the
		original midi port names.  You can now select new port names that
		will perform the same function.  This would normally happen when
		moving a show to a new system or after changing to a new sound card.

	5)	Updated the copyright dates in the splash screens and about box.

	6)	When starting ShowMan with an expired licence, a really obnoxious
		multicolor splash screen comes up for 30 seconds, reminding you to
		renew the show licence.  This screen cannot be dismissed until the
		end of the 30 seconds.

	7)	Updated all copyrights to 2002.



	1)	Fixed a problem where the SMPTE audio input and output ports were
		not getting initialized when a show was created, which could lead
		to complaints about not being able to open the output port.

	2)	Added a Global MTC Chase flag to the Clock Control menu.
		When checked, this sets Chase Mode rather than Follow Mode for all
		lists that are locked to MTC.  In Chase Mode, if the timecode jumps
		by more than 20 frames in either direction, ShowMan will search for
		a new standby cue that better matches the new timecode value.

		The search is done starting with the current standby cue and 
		searching forward or backward, depending on the direction of the
		timecode skip.  This should normally find the correct new standby 
		cue even if the cuelist is not in strict time sequence.

		The MTC Chase flag is NOT saved with the show, since the intent is 
		that it will normally be used during rehearsals, and disabled for a
		normal performance.



	1)	Somehow a line of code got lost in version 57, resulting in the 
		device list file not containing any devices.  This has been fixed 
		so device declarations will be properly saved.  However, device 
		declarations will have to be regenerated by hand (replacing the 
		automatically generated 'default device declarations') in any case 
		where they have been lost.

	2)	In the MTS-232 device editor, set the default port number to 1
		rather than 'no port selected'.  Since the Eshow MTS-232 device
		only has a single port, this speeds setup a little.

	3)	When you create a cue in the cue editor and click Done without a
		Save first, the cuelist window could get screwed up.  This is fixed.

	4)	Clicking Done on a partially constructed cue with no messages would
		insert the bad cue into the show, although it would be discarded
		when the show was reloaded.  Now you will be given a chance to fix
		the cue or discard it from the editor.

	5)	The standard MSC device editor no longer lets you select the command
		format, as this is set by the device you select to create a command
		for.  The command format will be set automatically when the device
		and command are selected.

	6)	Problems with the 'existing messages' editor getting out of 
		sequence between the descriptions and the actual messages it 
		creates have been eliminated.  Also, the message list is now sorted 
		alphabetically,  Also, previously messages with no description text
		were not included in the list.  Now they will be included with a
		generated description of the command.  A side effect of this change
		is that shows with a very large number of unique messages will load
		slightly faster.



	1)	Modified the formatting code for the calander lists so that when a
		cue fires it should now always show the next time to fire, not the
		last time it fired.

	2)	Removed some erroneous rounding that could have caused calander cues
		to not always fire when they should have.  This should improve the
		reliability of capander cues firing.



	1)	No longer initialize Winsock at startup.  This was causing the
		AutomationDirect drivers to fail initialization.

	2)	Fixed a bug in the device configurator where it would stop showing
		devices if it encountered an invalid device.

	3)	Fixed the devicelist storing code to discard any invalid devices so
		that they will not continue to confuse things.

	4)	Cuelist windows that get resized now stay the right size when 
		editing cues in the list.

	5)	The show window now displays correctly when creating a new show
		with multiple lists.  Previously it would sometimes hide.

	6)	Problems with the PLC monitor setup panel failing to save condition
		changes occasionally have been fixed.

	7)	The PLC monitor panel has been renamed to make it a bit more
		obvious what it is supposed to do.



	1)	Fixed a memory corruption problem that could happen when editing a
		cue, or possibly when capturing a cue.  This should eliminate
		problems with occasional crashes on W2K when saving edited cues.



	1)	The MSC editor now displays the macro number correctly when editing
		a FIRE command.

	2)	In SM II, if you had a licence for less than 128 lists, the timecode
		generator would not get opened properly.

	3)	Added a selection to the Show Config to set the timecode generator
		list number in all versions.  In SM I the timecode generator 
		defaults to list 0 for compatability with old shows.  In SM II it
		defaults to list 128.  Once the show is saved in either version,
		the saved list number will be the same in both versions.  The code
		to select a default list number is only used when no list number
		has been set.

	4)	ShowMan II now displays the same show configuration window for any
		number of lists, rather than a separate window for single list 
		licences.  This is because it displays the list config window in
		all cases.  ShowMan I did not display List Config for a single list
		licence file.

	5)	Fixed a long-standing memory leak in MIDI shutdown.

	6)	MidiShowCD emulation works in ShowMan II.

	7)	The AudioBox live fader control and monitor panel are now present
		in ShowMan II.



	1)	Changed the code that purges the remaining sequences when a list is
		closed to wait until all sequences that will fire "now" have been
		executed, then purge any delayed sequences.  This allows a cue to
		close its own cue list, and then open another cue list, all in the
		same cue.  The only requirement is that there must be a zero frame
		delay between all of the messages after the Close Cue List that
		closes the current list.  The previous code purged the remaining
		messages when the list close message was processed, so any following
		messages in the same cue would have been lost.

	2)	The MIDI editor now checks after testing a cue to see if the cuelist
		is still open.  If not, a popup message tells you that the list went

	3)	The MIDI editor checks when you press Test Cue to make sure the
		cuelist is still open.   If it itsn't, it tells you you can't fire
		the cue rather than attempting to fire it with no results.



	1)	Fixed a case where opening a cuelist tried to remove messages from
		the list of things to be fired.  Also properly locked around this
		remove (which is only supposed to happen on a list close) and a
		couple of other places locks were missing.  This should resolve one
		crash/hang situation at Sam's Town.

	2)	Fixed a problem that could occur when a list closed itself by 
		sending itself a Close_Cue_List MSC command.  This could potentially
		result in memory corruption that would usually be detected at a
		much later time (as a crash).



	1)	Changed the calander time entry fields to drop down and show all 
		possible time selections when you are editing the time field in a
		calander cue.  They hide again and only show the selected time 
		after editing is complete.

	2)	Added a button to the calander time entry to mask all of the time
		fields.  At least one digit will have to be unmasked after this to 
		create a valid time entry.

	3)	The MSC Stop command will stop all currently playing cues, either in
		the specified cue or in all cues in a list or in all lists, 
		depending on the parameters.  Note that the STOP command does NOT
		stop the clock for the cuelist or close the cuelist, so more cues
		can still fire in the future.  It merely stops those cues that are
		currently playing.

		(This was actually implemented a few versions back, but I neglected
		to update the documentation.)



	1)	Rewrote the MIDI message handling class to check for possible
		buffer overruns since this could be related to the crashes in the
		Sam's Town show.  So far haven't been able to duplicate the crash
		or track it to the original cause.

	2)	Fixed a problem in Cuelist Config where it treated open/visible
		lists as open/minimized when loading the control settings.
		You need to adjust the cuelist settings for any lists coming up
		minimized that should be opening to normal size.

	3)	Fixed a problem where 'standby top of show' wasn't restoring list
		windows to the correct visibility state for the top of the show.

	4)	Put locking into the midiport write path to make sure that multiple
		writers can't stomp on each other.  This may fix the Sam's Town

	5)	Fixed an occasional hang that could occur during a reset or when
		exiting ShowMan.  This was most common in the debug version of 
		ShowMan II, but could occasionally happen in the release version too.

	6)	Fixed a problem with Show Config not showing the number of lists
		when the MTC Generator (list 128) is enabled.

	7)	Creating a new show now displays the show windows correctly without
		having to reload the show before they will display.

	8)	Calander cues now update to the next fire time and move to the right
		place in the list in time order after firing.  (Note this will only
		happen if the cue fires normally.  If you fire the cue early with
		F8 or F12, the cue will retain the original fire time, and will in
		fact fire again at the time it should have fired.)



	1)	Patched around a W2K bug with not preparing MIDI headers correctly
		that would result in processing an input message multiple times.



	1)	Bumped build number to match that of ShowMan 1 to make life easier.

	2)	Moved the timecode generator to list number 128.  It remains at
		list 0 in ShowMan I.

	3)	Fixed a lockup that could happen when you created too many lists
		on a slow processor.

	4)	Made sure you can't try to edit cues in the timecode generator list.

	5)	Fixed several problems with generating a display of a masked time
		field.  This makes calander lists display correctly now.

	6)	Speeded up the calculation of the display value for masked times,
		and speeded up the compare for equal time.  This increases the
		number of calander lists that can be running at once on a puny

	7)	Eliminated a check for MTC lock in calander list display, and 
		also fixed a bad flickering problem displaying calander lists.

	8)	Fixed a problem where cues containing standard MIDI messages always
		showed as modified in the editor if the cue had been created by
		importing a show.

	9)	Fixed the problem with the MIDI octave numbering starting at A
		instead of at C.

	10)	A path name in an smpath.n file that is the same as the name of the
		show directory will no longer complain that it can't find the path.

	11)	If a show path cannot be found for a cuelist, the cuelist number
		and name are now displayed along with the path name.

	12)	Fixed another case where messing with the show layout before 
		importing the show could end up duplicating the show paths.

	13)	Importing a show now opens the show windows correctly.  You no
		longer have to reload the show after importing it.

	14)	The show windows are now displayed correctly when loading the
		default show.

	15)	The timecode generator now displays in the status line like it does
		in ShowMan I.

	16)	Calander cue time entry would erroneously complain about a bad time
		value if you had a day of month like "=1".  This is fixed.



	1)	Fixed it so windows open correctly when importing or loading a show
		from other than the "recent shows" list.  (It worked form the list.)

	2)	The show window position and size is now saved and restored.

	3)	Reopening a show now reopens all of the windows that should be open
		even if they were closed at the time the command is given.

	4)	The timecode generator will no longer erroneously display a cuelist
		window instead of a timecode generator window.



	1)	The source files have been normalized between ShowMan I and 
		ShowMan II.

	2)	Fixed a problem with the joystick handler not terminating correctly.

	3)	Fixed a problem with the midi port not terminating threads correctly 
		if they do not end themselves cleanly.

	4)	The version checking was changed to allow major version numbers of
		the program that are higher than the config file version.  This 
		lets current shows and licences run.  We may want to change this 
		back later.

	5)	Added the showman icon to the project.

	6)	Added OnUpdate handlers to grey out menu items in mainframe that
		aren't valid without a show present.

	7)	Changed all the concurrent->show->HaveShow refereces to use the
		concurrent->HaveShow function added long ago.

	8)	Temporarily eliminated the toolbar buttons to get to the AB live
		panels since they don't work yet.

	9)	The window tiling and cascading code now arranges the windows in
		list number order.

	10)	Fixed a formatting error in the MSC editor on formatting macro

	11)	Changed cuelistview to format the current path rather than "LIST n"
		for the cuelist name in the title bar.  This is more like what
		Stage Manager did.



	1)	Fixed erroneous "Press F10" that should have been "Press F12" in
		the new show setup wizard.

	2)	Restructured the internal development environment to make the
		directory structure common between ShowMan I and ShowMan II.  This
		makes it possible to maintain common source files for virtually all
		of both projects.

	3)	Normalized the files between SM I and SM II.  This propagates all
		of the changes in the last couple of years into the SM II source,
		and back-fixes some SM II changes into SM I.  There is a small 
		chance that this may have resulted in loosing a fix or two somewhere
		or other in SM I, but this is unlikely.

	4)	Fixed a problem with the joystick handler not terminating correctly.

	5)	Fixed a problem with the midi port not terminating threads correctly 
		if they do not end themselves cleanly.

	6)	The maximum number of cuelists that can be selected is properly
		limited to 32, even if the key file allows a larger number.  This
		showed up in new show creation and in list configuration.

	7)	Broken debug code in the midi port handler has been fixed.

	8)	Repaired broken termination code in the midi port routines.

	9)	Fixed a problem with long message capture that caused capture to 
		fail on messages over about 256 bytes.


	1)	Fixed a number of possible crashes in the PLC Configuration panel
		if you didn't have a PLC configured in the show.

	2)	Added hourglass cursors to a number of places where internal
		operations could take quite a while.  The most notable places are
		when exiting the system config dialog, when modifying a device in
		the device configurator, and when exiting the program or loading
		another show.  In most cases these delays are occasioned by closing
		all of the midi ports, which can take a while.

	3)	The PLC editor sometimes would fail to construct a valid message
		unless you fiddled around a bit.  This is now fixed.

	4)	Updated all copyright notices to include 2001, what with it being
		a new year.



	1)	FINALLY (I think!) have all of the assorted possible crashes 
		cleaned up that could happen when closing a MIDI port or when
		shutting down.  This also fixes a possible tiny memory leak that
		could occur if you didn't get a crash instead.



	1)	Finished the PLC Monitor Configuration dialog.  This dialog now
		allows you to set up monitor conditions on a PLC so that you can
		detect and act on various input condition changes in the PLC.

	2)	Added a Save Show As command to the main file menu.  This is really
		the same as Export Show, but more people will likely be able to 
		figure out what this command does.

	3)	Changed some of the messages associated with Export Show to make it
		more obvious that you are really just saving the show under another

	4)	Changed some code to hopefully eliminate crashes when exiting when
		many midi devices are in use.  This might make closing a show or
		exiting ShowMan take considerably longer than previously in some

	5)	Changed back to static libraries rather than DLLs.  Yay!



	1)	Changed the AB EQ editor to not pop up an annoying message when the
		eq parameter ranges are exceeded.  Instead the offending field is
		corrected to the nearest valid value and colored red to indicate
		that it was modified.



	1)	Recompiled using the system MFC DLLs rather than statically linking
		to the various support routines.  This fixes problems with running
		some of the miditoys on Win 2000.  It might also cause problems
		with running ShowMan on NT 4 or Win95/98 systems with very old
		copies of the system DLLs.

	2)	The list name tab now includes the current path number as well as
		the list number and name.  Multi-path shows will make more sense.

	3)	Fixed a problem limiting the count field in the AutomationDirect
		editor to 7 rather than 16 as it should have been.

	4)	Joystick input works again.  It was accidentally broken in the last

	5)	Removed "Presets" from AudioBox editors since they have been removed
		from the AudioBox itself.

	6)	Removed preset handling from internal AudionBox driver class.

	7)	Fixed problem with MTC Cueing editor not correctly handling the
		hours field of existing timecode messages.

	8)	Fixed problem with creating useless "dummy devices" in many cases
		where the actual device has non-default midi ports.

	9)	Changed midi message formatter to decode sysex messages a little
		more obviously in some cases.  This only affects newly created
		messages, such as from MIDI captures.

	10)	If the last message in a cue is an MMC command, going to the next
		cue no longer complains about an unsaved change on the current
		message, and end up duplicating a message if you select OK.

	11)	General problems with complaining about unsaved messages when the
		cursor is on the blank line at the end of a cue seem to be generally
		solved, at least in most cases.

	12)	The AudioBox Set EQ Band Count message was generated incorrectly.
		It is now correct.

	13)	The midi sequences history editor no longer repaints unnecessarily.

                       ShowMan v1.2.41 Release Notes

This is the 37th or so commercial release.

This version fixes a number of minor bugs and inconsistancies in several of
the various device editors and some of the AudioBox control panels.

It adds the ability to specify an input MIDI port for any device (as well as 
the previously available output port specification).  This is a preliminary 
to providing input monitoring on PLC-205 hardware in the next version.

Finally, a Smpte LTC generator has been added to the MTC Generator function.
When MTC timecode is being generated by the MTC generator, Smpte LTC
timecode will simultaneously be generated out both channels of a stereo
sound card output.  Typically there is only one stereo output on a cheap
sound card, but more advanced cards can have multiple output pairs.  There
are show configuration options that allow you to chose whether or not to 
have LTC output, and to chose the sound card outputs to use.



	1)	Fixed a problem with AudioBox live panels not working correctly
		with non-default midi ports for the boxes.

	2)	The ab live control panel now shows play state for an AB1616 

	3)	The AB delay setting on the live control panel is now correctly
		in milliseconds rather than seconds.  Much more useful!

	4)	A problem in the PLC-205 editor with creating the wrong address
		in the message occasionally has been fixed.

	5)	Fixed a problem in the PLC-205 editor with the corrupting data 
		value sometimes when switching from hex to decimal.

	6)	Fixed a problem with switching show input or output ports if the
		new output port was the same as an output port used by a device.
		In this case the input port didn't get opened.

	7)	The AutomationDirect panel now formats addresses in Octal, counts
		in Decimal, and data in Octal, Decimal, or Hex.  This makes it MUCH
		easier to interface to the PLC, which uses the same conventions.

	8)	There is now a Smpte timecode generator in the MTC generator.  The
		Smpte code will be generated to a standard sound card output on
		both output channels.  You can pick which sound card outputs to use
		in the System Configuration panel, and also select whether to
		generate Smpte at all.

		By default with older shows Smpte timecode will be generated to the
		first (and probably only) sound card.  If this is undesirable the
		System Config will have to be changed to turn the Smpte generator

	9)	The Device Configurator lets you select input MIDI ports for the
		various devices.  Currently all MIDI input ports are merged into a
		single input stream.  The only place currently where it is important
		to select a correct MIDI port is with a PLC-205 ECOM or EBC where
		you want to monitor input changes.

	10)	ShowMan finally has a real icon of its own, rather than "MFC".

	11)	The various config dialogs have been reshaped slightly for better
		visual consistency and ease of use.

	12)	The disk maint functions previously in the System Configuration
		dialog have been moved to their own Disk Configuration dialog to
		make room for more things in the sys config dialog.

	13)	Existing MTC Cueing commands are now properly recognized by the 
		MTC Cueing editor.

	14)	The MTC Cueing event number field is no longer enabled on commands
		that don't have an event number.

	15)	Fixed a problem with importing single-list Concurrent shows.

	16)	Fixed a problem with saving imported shows that have old hardware
		cues in the show.

                       ShowMan v1.2.40 Release Notes

This is the 36th or so commercial release.

This release fixes a major problem inadvertantly introduced in version 39
which resulted in show files that were not backward compatable with earlier
versions of ShowMan.  Version 40 will repair any such shows damaged by
version 39 so that they will again be backward compatable.

In addition, a number of minor bugs have been fixed in various device
editors that resulted in the messages created by the editors not necessarily
being flagged correctly with the device info for the message.  This, along
with another problem (also fixed) could cause problems when there were two
identical devices declared (identical device type and id fields) on separate
MIDI output ports.  The problem was that all of the messages would end up
being sent out the first-declared MIDI port, regardless of which port they
should have gone out.  This problem should affect very few shows, as the
ability to have duplicate device declarations has only been available for
a few releases.

Any show which may have this problem will require manual examination, as 
ShowMan will not know which device the messages for the duplicate devices
were originally intended for.

Simply edit any cues which may have a problem, and if necessary reselect
the correct device for any messages routing to the wrong device.  Remember
to Replace the message being edited in the MIDI Editor, then Save the cue.  
After this the information will be remembered correctly in the future.

Any show that did NOT have two or more identical devices on separate MIDI 
output ports does not have a problem.

Additionally, some enhancements were added to the AudioBox editor and
control panels to take advantage of the 16 playback channels on an AB1616
device.  This means that it is now possible to select Playback on channels
1 to 8, even if the device you are controlling is a 1616HD which does not
support playback on these channels.  It is the show programmer's 
responsibility to not select functions that are not available on the 
target AudioBox.



	1)	Fixed a problem in the cue editor where it didn't think a cue 
		changed if you just changed the device on a message in the cue.

	2)	Backed out the cue format changes in the last version, since this
		broke backward compatability with earlier versions.  Any shows
		saved on version 39 should be re-saved on this version to
		restore the older cue data format.

	3)	Changed the way devices are stored to insure that two seemingly
		identical devices on separate midi output ports are treated
		correctly as separate devices.  This again fixes a problem where
		all messages for almost-identical devices ended up being routed to
		to the first-declared device.

		As a result of this change, any show that has two identical devices
		(including the device ids) on separate midi ports will need all
		messages for the duplicate devices re-saved in the cues with the
		device selection set correctly.

	4)	Reorganized the buttons in the midi editor to make them easier to
		use, hopefully.

	5)	Fixed the following device editors to correctly set the device id
		in the message:

			Flying Pig Hog2
			ETC standard MSC
			Alcorn Binloop
			Alcorn Show Control
			MMC commands
			Richmond AudioBox editors
			Status Cue Cuelist Mode
			Status Cue Song Mode

	6)	The High End Systems editors now show "HES " in the title tab.

	7)	The AudioBox Set Stop Notification message now parses the 
		notification device id correctly again.

	8)	The "existing messages" editor now shows the actual description for
		each message, and shows them in alphabetical order.  This makes it
		a good deal easier to find an existing message to use in a new cue.

	9)	An old problem where an existing description would not be changed
		to the correct message description when you replaced an AB command
		with a channel note message has been fixed.

	10)	Modified the AB Playback editor to allow all 16 playback channels
		to handle the AB1616.  It is up to the user to not request playback
		channels that don't exist on an AB 1616HD system.

	11)	Selecting a midi message from the Existing Messages editor should
		now be selecting the correct message in all cases.

	12)	The AB Live volume controls now allow playback of all 16 channels
		if you have an AB1616.

	13)	Changed the AB monitor panel to allow all 16 playback channels.

	14)	Fixed the AB monitor to correctly monitor track playback status on
		and AB1616 as well as a 1616HD.

	15)	Checked the AB "Set Device Id" command, which was reported to fail.
		Doesn't appear to have any problems.  Perhaps the user forgot to
		send the first Set Id command to address 7F rather than to the 
		desired new id for the box itself.
	16)	The Device Configurator for standard midi notes/controllers
		devices now allows you to specify a program change range of 0-127
		or 1-128, and a controller number base of 0 or 1.  This should make
		it easier to deal with Japanese equipment.


This is the 35th or so commercial release.

This version contains new editors for DOS Commands and for controlling the
Artistic Licence "DMX Dongle".  In addition the Automation Direct PLC-205
editor has been considerably enhanced for ease of use.

In conjunction with this release are four Midi Toys, two of which were
previously released:

The PLC 205 and PLC 205 SafeIO devices both control the same Automation
Direct PLC 205 and PLC 405 family processors, using either an ECOM module 
to talk to an actual PLC processor, or an EBC to drive the IO devices 
directly from ShowMan.  The same PLC-205 editor is used in either case.

The difference is that the SafeIO driver locks out direct access from ShowMan
to any of the digital and analog output pins on the PLC.  Thus, the PLC 
program can be used to create a safety network, where the show controller
(ShowMan) can only request functions, for instance by setting control relays
or writing values to PLC memory.  It is up to the PLC program to determine
if it is safe to act on these requests and actually change output state.
Since direct access to the PLC outputs is locked out from the show 
controller, no accidental or malicious cue can cause an output to fire in
an unsafe manner.

The normal PLC 205 driver does NOT lock out direct access to outputs.  This
would be used in almost all cases with an EBC module, since there is no
actual PLC processor to activate the output pins.  It could also be used
with an ECOM module if the safety lockout features were not required.

The two drivers have separate licence keys to insure that the wrong driver
cannot be accidentally loaded for a show system.

The DosCue driver is used to fire command lines and command scripts on the
system.  This lets external programs be controlled simply from ShowMan cues.
Because a Midi Toy driver is used instead of directly firing cues and
scripts in ShowMan, it is possible to fire DOS commands and scripts on any
machine in the network when using NetMIDI.

The "DMX Simple" driver is a little more complex than its name might imply.
Essentially instead of dealing with "Looks" where you specify the final
levels for all channels, you specify "fades", where you specify levels for
only the channels that you want to move, and optionally give a fade time
(up to 24 hours) if you don't want an instant change.  You can have any
number of fades running at the same time, all possibly with different 
completion times.  Any channels you don't specify in a fade will remain 
unchanged, or will continue to move as a result of other running fades.

While you specify the channels and optional time for a fade, you don't
give a fade start time, or have any autofollow capability with a fade.
But this is OK, because that is what ShowMan itself is for!  You fire 
each fade from a ShowMan cue when you want the fade to start, and you
can likewise fire any follow-on fades when they should fire.

While you don't have to, you can specify a "fade number" of 1 to 127 on
any fade.  (By default fades have a fade number of 0, which is "no fade
number".)  If you give a fade a fade number, you can pause and resume
the fade before it completes, or alternately cancel the fade completely
before it ends.  If there is more than one fade with the same fade number,
all of the fades with the same number will start, stop, or cancel at the
same time when requested.  Fade numbers can be reused as often as you
want in a show, you don't have to give every fade a separate number.
Just remember that all fades currently running and having the same fade
number will pause, restart, or cancel at the same time!

Another part of the "simple" is the way you specify a lighting fade.
You simply type in the channels and levels in a compact form, very 
similar to how most LDs do it on almost any lighting console around.
A typical fade might be entered as "1-12@53" to set channels 1 to 12
to 53%.  A more complex fade could be "47-56/50,81,82@20,40@50 T1.2".
This fade will fade channels 47 to 56 (except channel 50), plus
channels 81 and 82 to 20, and will fade channel 40 to 50, all in 1.2

The parts of a fade description are:

    Fade number:        F number or nothing  (number = 1 to 127)

    Channel number:     number, 1 to 512
    Channel range:      number-number  (second number >= the first)
    Channel list:       number, number, number...
    Except channels:    /number   or   /number-number

    Level:              @number     (number is 1 to 100, in percent)
    Binary level:       @&number    (number is 0 to 255)
    Relative level:     @+number or @-number   (percentage + or -)

    Preset spec:        P number            (number = 1 to 127)

    Fade time:          T seconds[.tenths]
            or:         T hh:mm:ss.tenths

Any of the above items can be separated by commas or spaces, which will
otherwise be ignored.  So for instance you could enter "F12 25@40" or
"F12,25@40" for the same result.  You only need a comma or space where
the numbers would otherwise be ambiguous or incorrect.  "F1225@40" is
incorrect, because there is no way to determine which part of "1225"
is supposed to be the fade number, and what part is the channel number!

A fade can be entered very quickly using the numeric keyboard.  To make
numeric keyboard use easier, the "*" key can be used for "@" when giving
the level.

By now someone should be asking "what happens when I do two fades at the
same time and give the same channel number?"  I'm glad you asked!  The
Simple DMX protocol handles this a little differently than most current
light boards.  It is neither HTP nor LTP.  Instead, the fades ADD.  To
see how this works, you need to understand how a fade actually works.

A fade specifies a set of terminal levels which should be reached at the
end of the specifies fade time.  Depending on the current levels of the
channels being faded at the start of the fade, each channel may fade up,
down, or possibly remain the same.  The distance the channel will fade
depends on how far the current level is from the target level for that
channel.  For instance if you are fading all channels to 50%, a channel
at 0% must move 50 points higher, and a channel at 90 must move 40 points
lower.  A channel at 50 would not move at all, and one at 51 would only
have to move by a single point.

Once we know how far each channel must move (and what direction) the
next question is, how quickly must we get to the final value?  When a
fade is running the MDX outputs are being updated with new levels
continuously, 25 times per second.  If a fade takes one second and a
channel has to move 25 points higher, it will move one point higher in
each "frame" of DMX data.  If a channel only has to move 1 point higher
in one second, it will move 1/25th of a point in each frame.

So when you start a fade, what happens is the following:
    1.  Determine how many points each channel has to move from current.
    2.  Determine how many frames the fade will take.
    3.  Divide each distance to move by the number of frames to get the
        number of points to move each frame.
    4.  Add these values to the "master increments" that are added to
        all channel values on every frame.
    5.  On each frame of the fade, increment the current values of all
        channels by the master increments, and send the result to the
        DMX outputs.  Also decrement the number of frames remaining in
        each running fade.
    6.  When a fade completes (the number of remaining frames counts 
        down to zero) subtract the fade increments for that fade from
        the Master Increments.

Most of the time the "master increments" for all channels are zero,
since the channels aren't fading.  Any channel that is fading will have
a non-zero master increment value.  If it is positive the channel will
fade up, and if it is negative the channel will fade down.

If you do two fades on the same channel, each fade when it starts
calculates an increment that will get the channel to the desired level
at the end of the fade, based on the current level. Both of these
increments will be added into the master increment for the channel.
The end result is that channel will fade at a rate that is the sum of
the two simultaneous fade rates.  This lets you build some very 
complex fade profiles by simply layering multiple fades on top of
each other.


	1)	Fixed an assortment of bugs (sigh) in the AudioBox editor panels.

	2)	Testing a cue in the midi editor wouldn't work if the sequence
		timing for the cuelist being edited was set to cuelist clock, and
		the cuelist clock was stopped.  (Or if the sequence clock was MTC
		and no MTC was present.)  Now the sequence clock for the cuelist 
		will be forced to system timing for the length of the cue test.

	3)	The hotkeys and hotkey descriptions for Global MTC On and Global
		MTC Off were screwed up.  Global MTC On (Lock) is Ctrl+L and
		Global MTC Off (Unlock) is Alt+L.

	4)	Fixed problem in AB Live crosspoint control panel.

	5)	Fixed a problem with the New Show wizard setting the sequence clock
		source to the wrong value.

	6)	Fixed a problem with not correctly differentiating between identical
		device declarations on different midi output ports.  This would
		cause all messages for any of the devices to go to the first-
		declared device, and the wrong output port.

	7)	Changed the default sequence timing to internal clock from cuelist
		clock.  This should solve a whole lot of problems that people have
		with "why won't the cue fire?"

	8)	Fixed a problem with storing cues where the midi port number would
		get lost if there were two identical devices on different ports.

	9)	Enhanced the PLC-205 editor to make it specific to the 205/405 PLCs
		rather than generic ModBus commands.  This will eliminate a lot of
		possible errors in programming the PLC.

	10)	A problem where if you made an MSC "ETC Express" device, and then
		clicked on the device under "MSC Devices" in the device 
		configurator, the device displayed as MIDI instead of MSC, has 
		been fixed.

	11)	The "Old AudioBox editor has been removed as there should no longer
		be any old audioboxes around.

	12)	There is a new editor for DOS commands.  It will allow entry of
		either a single command or a script.  The command or script is
		packaged into a sysex and sent to a Dos Command MIDI Toy.  This
		allows command scripts to be run on any machine in the network.

	13)	There is a new "Simple DMX" editor that allows the creation of
		simple, and even fairly complex, lighting control.  Currently the
		output device for this message type is the Artistic Licence DMX
		Dongle.  In the future other DMX output devices will probably also
		use this message type.

		See the separate writeup on how to use this editor.  The basic 
		concept is to create "fades" that specify how channels will move
		over time.  The device is in essence a tracking console; only the
		channels specified in a fade will move as a result of the fade.
		All other channels will hold their current levels (or will continue
		to fade from other fades).

		NOTE!  The DMX Dongle is VERY processor-hungry!  If at all possible, 
		limit the maximum number of channels to 64 or less!  If more than 
		128 channels are used on anything other than a blazingly fast P6 
		system it is likely that overall show timing will suffer badly!



	1)	Fixed some problems caused by Windows 98 forcing all file names to
		uppercase.  This caused various compares to fail, resulting in
		complaints about missing configuration files and show directories.

	2)	Worked around a compiler bug that could cause midi cues to be loaded
		at about 16MB larger than they should have been.  Curiously this
		only showed up in Windows 98, although it could have trashed memory
		under Windows NT also.

	3)	Fixed a problem from the last version with mispositioning the
		window scrolling on calander list displays.  This didn't affect the
		order the cues were played, but did make it hard to find the 
		current cue.

	4)	Added more information to the popups that complain about 
		misformatted midi cues.  This should make it easier to find the
		cue in error.

	5)	Fixed a problem initializing realtime lists that erroneously zeroed
		the clock value.  This caused the times to be misdisplayed on a
		calander list after opening the show.



	1)	Fixed a problem with the WholeHog editor not recognizing valid hog
		messages when attempting to edit them.

	2)	Tightened up the syntax parsing in the hog editor to prevent bogus
		cue and list numbers.

	3)	The cue number in the midi editor is now not validated until you 
		finish typing the number and move to some other field.  This 
		eliminates complaints about invalid cue number syntax while you are 
		editing the cue number.

	4)	The cuelist windows will now keep one line previous to the standby
		line displayed in each window, given that there is a line before
		the current standby line, and there is room for at least two lines
		in the list window.

	5)	The Expression 2x editor will now allow MIDI macro numbers from
		1 to 999, and MSC macro numbers from 1 to 127.  The old Expression
		editor still limits macros to a maximum of 125.

	6)	The timecode generator time is displayed in the status bar.

	7)	Problems with sometimes having a path in the show duplicated when
		it shouldn't be have been fixed.

	8)	Some problems with not being able to find all the paths in the 
		show after importing a Stage Manager show have been fixed.

	9)	There is a PLC-205 editor to generate messages for the new plc205
		MidiToy that connects to AutomationDirect PLC-205 and PLC-405
		Ethernet Base Controllers (EBCs).

	10)	The device configurator now takes midi channel into account when
		checking for duplicate devices.  This lets you have device with
		the same id strings, as long as they are on different midi output
		channels.  Note that all devices still require unique names.



	1)	Changed the last hasty kludge to check for cuelist timing on the
		sequence clock before checking to see if the clock is running.
		Now the sequence clock will only stop if the list clock is stopped.
		However, if the list is locked to MTC and MTC has been seen, the
		sequence clock will run when MTC is running.

	2)	Changed the sequence clock stopped logic a little so that time
		doesn't accumulate while the list clock is stopped.  This will
		prevent the entire rest of a stopped sequence all playing at once
		when the clock starts again.



	1)	Converted from C++ 4.2 to C++ 6.0 compiler.

	2)	Fixed a number of random errors, mostly in the editors, that were
		found by the 6.0 compiler error detection.

	3)	Fixed a problem in show registration file reading that could cause
		a valid registration file to be ignored, or an invalid registration
		file to be processed in place of the correct file.

	4)	Changed the sequence timing logic to NOT fire sequences if the
		clock is stopped.  This could quite possibly break existing shows,
		and may cause other problems.  It really needs further testing, but
		someone wants it in a hurry.



	1)	Fixed problem with calendar lists always having a list time of zero.
		This showed up as 1969, and also resulted in the list never firing 
		a cue.

	2)	The wording for date/time calendar clock is now the same in the
		new show setup list creation and in the list configuration dialog.

	3)	The List State dialog now shows you the list clock type (but doesn't
		let you change it).

	4)	If you send ShowMan a "Close Cue List 999999" ShowMan will close 
		the show and exit.  This has been around for a long time, but 
		probably not documented anywhere.  This is a hack so that an 
		external scheduling program can start ShowMan for a single scheduled
		show, and the last cue can cause ShowMan to shut down.  The system
		will then wait until the next show time to start the next copy of
		ShowMan and the next show.

	5)	Assorted internal cleanup to make ShowMan easier to work on.

	6)	There were many possible crashes if no midi output port was defined.
		These have now been covered over, and in many cases warning messages
		will be generated if the user attempts to do things that require a
		midi output port.  (Such as setting the Loopback flag.)

	7)	If you create a calendar cue with an impossible time (for instance,
		January 0 or 29:00:00) you will now get an error message and be
		forced to fix the time before the cue can be saved.

	8)	If you created a new show with a single list and that was a calendar 
		list, the list type wouldn't be set correctly.  Also, the calendar
		list wasn't properly added to the current show display, which could
		cause assorted crashes.

	9)	If you used the cuelist configurator on the calendar list in a new
		show, it would trash the list so that it would no longer seem to be
		part of the show.  It could also crash.

	10)	ShowMan no longer complains about replacing the current show if you
		don't have a current show loaded, like when you first start with no
		default show and select Load Show.

	11)	When creating a new show, you can select from any midi output port
		for the main show output port, and not just from actual hardware
		MIDI ports.  This matches the selection available from the System
		Configuration dialog.

	12)	The show window now greys out the list name when the list is closed.
		It also unchecks the "marked to go" checkbox when the list is 
		closed, since the cue can't go when the list is closed.

	13)	We again do a Reset rather than just an All-Off froma keyboard or
		menu activated Reset request.

	14)	The timecode generator will no longer get accidentally locked to
		timecode occasionally.  This resulted in the timecode generator



	1)	The MTS-232 editor no longer separates pairs of alphabetic 
		characters by an unnecessary space.

	2)	A little logic cleanup in midi port close.

	3)	Fixed a problem with a cue getting saved into both the original list
		and the new list when the cuelist was changed in the cue editor.
	4)	Made shutdown considerably faster.



	1)	Problem with cues not firing correctly after switching from internal
		clock to mtc clock is fixed.

	2)	Made "new show" create the mtc generator when the show is created
		so that you don't have to reload the show before the mtc generator
		will work.

	3)	Made the same fix for importing a show.

	4)	Fixed problem with removing an old show with a space in the show
		name when replacing the old show with a new show.



	1)	Used wrong file for the midi editor. It is now fixed.


	1)	MTS232 editor was not saving the device id into cues. It does now.

	2)	The NewMidiEditor was not checking for a changed device id when
		testing for changed cues. It does now.


	1)	Changed Richmond Sound Design Ltd address to reflect current

	2)	Restored the splash screen missing in version 1.2.28.