Richmond Sound Design Ltd. Theatre Sound Design, Show Control & Virtual Sound System Software SoundMan-Assistant Release Notes *********************************************************************** Version 1.0.123.0 1) Added a tray icon that shows up in place of the normal taskbar icon when SMA is minimized. The taskbar icon will also show important warning messages in the baloon help area. 2) Updated copyright date in the about box. That seems to have been missed on the prior copyright updates. 3) Removed a number of old unused string resources from the program. 4) If the server fails to connect (because the interface is powered off, for instance) we were telling SMD that the server didn't start. SMD didn't like this and would eventually fail to connect on startup. Now we just say it is demo mode and SMD is happy. 5) Problems with getting "drive not ready" when deleting, replacing, or renumbering an audio file should now be fixed. They had been half fixed some time back, but one important case was mised. 6) The AudioBox has a "Set MTC Source" command that can be used to select whether MTC present on the MIDI input, or the output of the internal MTC generator, will be used as the MTC clock. This can be different for each cuelist in the AudioBox. This command is not implemented in SMA, and will not be. There should only be one "live" source of MTC for all of SMA, and this can be either an external MTC source on the MIDI input or it can be the output of the internal MTC generator looped back (internally or externally to the MIDI input). There can only be a single MTC source, and it must be the same for all cuelists. This command has never been present in SMA, but was previously scheduled for eventual implementation. This is notice that the command will never be implemented. *********************************************************************** Version 1.0.122.0 1) Added timestamps to the log entries. 2) Increased the timeout when opening the interface. Some ASIO drivers can take a fairly long time to get the interface open. If we don't wait long enough then we end up getting the number of input and output channels wrong. 3) Log more of the configuration info when starting up. *********************************************************************** Version 1.0.121.0 1) Corrected internal copyright date to 2008. 2) Removed the legacy options conversion that happened when upgrading from an older version to this one. *********************************************************************** Version 1.0.120.0 1) Added MSC SET commands 0034 and 0035 to set the MotorMix input and MotorMix output ports, respectively. These have exactly the same format as commands 0031 and 0032 that set the MIDI input and output port numbers. 2) Changed the code that reads temporary dongle files to be more reliable. *********************************************************************** Version 1.0.119.0 1) Fixed a crash that could happen on shutdown due to a timing window. 2) Building the masking for calender cues wasn't working completely correctly. 3) Fixed several minor bugs in calander cue logic. Most of these didn't affect how things worked, they just used extra processor time they didn't need to use. 4) Fixed a missing line terminator when parsing MSC messages to the playback system. This could result in getting incorrect channel numbers on LOAD commands, often resulting in a track not playing. 5) The source and destination id fields were reversed in sysex messages that we sent out as responses. SMD ignored these fields, but this caused problems for ShowMan. 6) QUERY_SELECTION responses were not built correctly. This caused ShowMan to not see the responses to a Get Tracks request. 7) RESPONSE_PLAYBACK was missing the channel number field, resulting in garbage for ShowMan track status. 8) RESPONSE_PLAYBACK messages were trashed when getting responses for all playback channels at once. 9) Stop notify messages work again. *********************************************************************** Version 1.0.118.0 1) The logic to build Go Channel Set from multiple individual GO commands had a couple of bugs that could result in tracks not playing. 2) A show with many lists set to open at show open could open 9 lists rather than the correct number of 8. This is now fixed. 3) It could have been impossible to erase or rename some audio selections if they had been played or were currently playing. Any tracks playing the file to be erased will now be stopped and they will close the file so that it can be erased (or renamed). 4) SMA will now read the dongle even if SMS is not running. The title bar and splash screen will report the current allowed configuration however, the number if channels will not be limited by the license limitations. 5) Found there was old code around that would make SMA die after 30 days. Disabled this, as we now have real licensing info. 6) Removed the configuration variables from the main dialog and moved them to a configuration dialog. There is now a "Configuration" button in the main dialog to access the settings. 7) Configuration variables have been removed from the win.ini file and moved to the appropriate section in the registry. There is code that will move the existing variables to the new locations. 8) There can now be a second pair of MIDI ports that are dedicated to the MotorMix interface. It is also possible still to use the main MIDI ports to talk to the MotorMix. And you can now have main MIDI ports without attempting to check for a MotorMix on the ports or send MotorMix data out the ports. In the Configuration dialog, you can set the main MIDI input and output ports to None or to some selected port. Under these selections are selections for the MotorMix. You can set the MM to None, Same as Main MIDI Ports, or to individually selected MIDI ports. While it is possible to have only an input port or only an output port for the main MIDI ports, the MotorMix requires both an input and an output port. If you only set one of the ports to some valid port and don't set the other port to a valid port too, the one that you set will be cleared back to None. 9) SMA has a registered window message named "SMAConfigRequest". If another program sends this message to SMA, it will bring up the configuration dialog. There are no parameters required for this message. You should be able to send it by some technique such as UINT msg = RegisterWindowMessage ("SMAConfigRequest"); if (msg != 0) { BroadcastSystemMessage ( BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE, BSM_APPLICATIONS, msg, 0, 0); } 10) Changed the logic so that any MSC or Sysex message received after an All-Off (except for another all-off or a Restore) will unmute the outputs if they were muted by the preceeding all-off. The AB spec gives no hint that this happens or should be done, but apparently it does. 11) Playback all-off was erroneously muting the outputs. It no longer does this. Also, playback all-off was checking the main all-off actions to decide if it would stop tracks, etc. Now it does all of its actions unconditionally. This should fix reports of problems with the F6 key in SMD not always stopping all tracks. (But note that playback all-off does NOT stop list clocks, nor stop cues from firing. Those cues can start new playback immediately after you have used F6 to stop the current playback.) 12) The all-off option flags were not being propagated into the show engine, so an all-off that should have stopped clocks was not doing so. 13) Changed all-off to NOT remove the messages in the "running list" from cues that are currently in progress at the time of the all-off. This means that all-off is no longer ALL off, just MOSTLY off. This might cause trouble in the future, but at the moment it allows you to make a cue that has an all-off followed by a start clock and actually have the start clock message executed. If the running list was cleared (as it should be) the stop-clock message would just disappear into the night and never be executed. 14) Documentation: Apparenntly on a real AudioBox the Playback Resume command would let you pick a resume point in another sound file, and when the current stop point was hit it would jump seamlessly to the middle of the other file specified in the resume point. That doesn't happen on SMA, because neither SMA nor SMS have a concept of a jump from the current file to some other file; especially a jump which is set up dynamically after the first track is loaded and playing, as you can do in a real AB. In SMA, when a track first starts, any start, stop, or resume point that is in a different track is automatically cleared. Start/stop/resume points that match the current track are retained. After the track has started you can them set start/stop/resume points for other tracks. However, they will be ignored until such time as a matching track is loaded with a LOAD or GO command. (SMD sets the stop and resume points for a track just before it loads the track.) 15) Changed the sequencing of the startup tests to see if SMA is running and connected to eliminate a possible timing problem. There should be less chance of getting into a condition where SMD says that SMA isn't running, while SMA is saying that SMD is already running and needs to be restarted before it will connect. 16) Setting the submaster zero position on the MotorMix was not working correctly. The faders did not track the new zero position as they should have. 17) Fixed a timing window that could cause crashes on shutdown, at least in the debug build. 18) Fixed a day-one problem that caused incoming MSC messages from the MIDI port to be ignored. *********************************************************************** Version 1.0.117.0 1) Set mute on was sending a blank command to the server and not setting the mute in all cases. 2) Various mute, solo, and similar commands could have been wrongly filtered out before being sent to the server. 3) When SMA is faking playback because the playback channel is above the number of licensed playback channels in SMS, the input and output delay settings are ignored as far as the VU display is concerned. The VU will show no delay regardless of the delay setting. Delay will work correctly for licensed channels. 4) When playing back from fake playback channels, crossmutes from other soloed input channels will now be taken into account. 5) When generating VU for fake output channels, crossmutes from other soloed output channels will now be taken into account. 6) Crossmute status for input and output solos is now maintained. 7) SCSI GET SUBMASTER was reporting incorrect masks for the submaster channel assignments, making it look like all channels were assigned to all submasters. 8) Submaster gain per step was computed incorrectly. 9) Checking for valid channels in submaster gain settings wasn't always happening correctly. 10) Submasters assigned to output channels will now work correctly. There may be residual assignments to incorrect input channels that were stored in the persistant data for SMA. The simplest way to fix this (after loading the new version) is to delete the ConfigData file stored in the SMA root directory for shows. After doing this and starting SMD, SMD will complain that the default show for SMA does not match the default show set in SMD. Let SMD set the default show back to what it should be. 11) RESET was not properly clearing the submaster levels and assignments in all cases. 12) Changed things so that the submaster gain and zero set by the setup cue are remembered and used on any subsequent RESET command to set the submasters to their 'default level", rather than setting them to the real default level of 64. While the spec doesn't say that this should happen, it seems to come closer to what users might maybe expect; although it is still lacking in a number of ways. 13) The MotorMix ALL-OFF, RESET, and RESTORE functions should now work correctly. 14) GET DISK STATE should now correctly return the MotorMix Active flag set to 1 if the motormix is active. 15) Problems with output VU meters flashing to the top inexpliciably should be fixed. 16) Input and output VU will only be computed from 'fake' values if there are any playback channels playing that don't actually exist on the Server. This generally means that it will only be done for a demo version, since the licensed versions all have 16 playback channels. 17) More problems with channels not always starting when requested have maybe been fixed. 18) Once you have gone into crosspoint mode and exited it, you can hit the crosspoint mode button from input or output mode with no input or output channel selected, and the MM will go back to the last crosspoint that was displayed. 19) When SMD requested a shutdown, it was possibel to occasionally get a message stating that we can't shut down now because we were still connected to SMD. This should no longer happen. 20) If a track has a Stop Notify message set, it is usually for the purpose of notifying that a loop has occurred, since there is generally a resume point set also. The AB spec is not clear on all of the cases that can cause a Stop Notify message to be sent. One possible case is if a track is stopped because it is playing when a LOAD of a new file is issued to the track. Since a new file is being loaded to the track, the old stop notify message probably makes little sense. SMA does not send a Stop Notify message if the track is stopped with a LOAD command for a new file to play. In all other cases it probably behaves as a real AB does; although it is difficult to be sure in all cases due to the lack of rigor in the AB spec. 21) Added a hack to prevent more than 8 lists open at once. If you try to open a cue list with 8 lists already open, the new open request will simply be ignored. 22) A Restore after an all-off now correctly restores playing tracks. 23) Fixed a small bug in the last few test versions that would keep channels from playing if they were higher numbered than the max number of live input channels. 24) Banked mode is now enabled by default on the MM since this makes more sense than having it off. Of course you can still turn it off if you want to. *********************************************************************** Version 1.0.116.0 1) The MM will only be polled every few seconds instead of several times per second. This reduces MIDI traffic. 2) If the MM goes away and comes back, it will now be reset to the state it had when it disappeared, modulo any changes that may have taken place due to running fades and cues. 3) The MM will now always display 16 input and output channels no matter how many channels there are in the physical interface, or if SMA is running in demo mode. 4) Channel numbers between 1 and 9 on the MM are now displayed without a leading zero. This makes them easier to read. 5) Channel and submaster gains on the MM are now displayed in dB. 6) When you press the Shift key, the other keys that can respond with shifted functions will blink. 7) The MM 2 has some differences from the original MM. The most noticible difference is that the display formatting is off by one character. Hopefully I'll find a way to tell which version I'm talking to rather than requiring the user to enter the MM type. This is with MM 2 firmware version 1.05. 8) Crosspoint gain can now be set using the MM. Setting a crosspoint is a three step process. First you display the input or output channels. Find the channel that you want to set crosspoints for. If you are displaying input channels, you will be able to set all crosspoints between that single input and all of the outputs. If you are displaying an output channel you will be able to set crosspoints between that output and all of its input channels. Having located the correct input or output channel, press the Select button so that it lights. Now press the Crosspoint button (third from top in the left column). The display will switch from the input or output display to a display of the crosspoints. So that you know you are displaying crosspoints, the "I" or "O" channel designator will be in lower case. The input or output channel you are setting crosspoints for will show up in the 7-segment LED display. If you are setting crosspoints for an output channel, the decimal point between the digits will be illuminated and the LCD will display input channels. If you are setting crosspoints for an input channel the decimal point will not be illuminated and you will be setting output channels. If you select multiple input or output channels and enter crosspoint mode, the lowest numbered channel will be used, and the selects for the higher numbered channels will be cleared. When in crosspoint mode you can select a new base channel with the main rotary knob rather than going back into input or output mode and selecting a new base channel with the select buttons. *********************************************************************** Version 1.0.115.0 1) There is a new SCSI command GET CROSSPOINT DELAYS to get the current values of the crosspoint delays and crosspoint delay enables. This is SCSI command number D8H, and has the format: // byte // num data description // 0 D8H AudioBox-specific GET EQ operation code // 1 00H LUN = 0 // 2 00H unused // 3 00H unused // 4 00H unused // 5 00H flag and link fields = 0 // // The Get Crosspoint Delays command returns a structure showing the // current crosspoint delay values and crosspoint delay enables. // // The returned data structure has 256 crosspoint delay values in // samples. and 256 bits that will be on if the delay is enabled at // each crosspoint. The returned structure has the form: struct abxpdelay { ushort inchan; // first input channel ushort outchan; // first output channel ushort enables[16]; // 16 bits of output enables for each input ulong delay[16][16]; // 16 output delays for each input [in][out] }; This command returns exactly 1060 bytes of data. The two channel numbers in the return will always be zero. The 'enables' flags are 16 short words, one word for each of 16 input channels. The 16 bits in each word represent the delay enable for each of the 16 possible output channels for that input. The delay for an output channel is enabled if 1<midi filter function. As implemented this simply stops all messages from the matrix to the midi out port. This should only be stop-notify messages, as far as I can remember. 7) If the new midi-to-scsi echo bit is set, the MIDI In data will be passed to the SCSI port where it can be received with GET RESPONSE SCSI messages. NOTE that there is no limit on the size of a MIDI message that can be received! The limit of 120 characters in a real AB does not apply here. If the receive buffer is not large enough, some of a large message may be lost. ALSO NOTE that if messages are being received on the MIDI port and GET RESPONSE messages are not issued in a timely manner, messages waiting for a GET RESPONSE command will be discarded. These may be messages from the MIDI In port, or may be messages from the show engine or other places. 8) There are several AB commands that are not implemented, and won't be as there is no need for them. This serves to document these commands: SET GPI SET GPO PUSH FRONT PANEL BUTTON SET COBRANET SELECT DRIVE COPY DRIVE DISABLE PANNING SET CROSSPOINT ROW EXCL PAN SET PAN SET SOURCE MIX ALLOCATE DELAY DEFRAGMENT DRIVE If any of these commands are received they will be ignored. 9) The ClockBox is not recognized, and won't be. However, the capabilities for recognizing sunrise/sunset will be incorporated using the PC system clock in a future release. 10) If an assortment of GO commands to start tracks appear in a single cue near each other, they will be internally converted to LOAD commands and a GO CHANNEL SET command generated after the last such GO command. This should result in synchronous GO action. It seems the AB had strange code to cause this to happen so this is an attempt to get the same results.