![]() | ![]() | |
| Make/Model | Device Version | Connection Type |
| a/d/s / SC4 | N/A | Serial |
The a/d/s/ SC4 is a sophisticated multizone audio/video controller with an incredibly rich serial protocol. The unit supports 8 sources, 4 standard zones (rooms), and 2 zones with no volume controls (record loops). The 4 room zones can connect to dual gang LCD keypads (model CP8) allowing control from each room.
The unit has been out of production for several years, but I understand it was quite popular during its heyday. It was introduced in the mid to late 1990's, but shares heritage with much older a/d/s/ products from the late 1980's and early 1990s (SC6 product - similar, older, 6 zones). The family of products was produced under an umbrella name for the technology called, "DomiNET."
This driver was developed and contributed by Steve Richardson (prefect@tangentaudio.com).
This driver focuses on providing all of the functionality needed to control the unit without the keypads. However, this does not mean you can't use it with the original CP8 keypads. The driver will properly query the SC4, and receive unsolicited messages from it, thus ensuring that the system state is properly tracked in the driver even when changes are made using keypads.
In fact, if you do use the keypads, the driver is tailored to provide some nice functionality when paired with CQC. The CP8 keypads offer "commands" for each source, which are usually intended to send IR commands to CD players, tuners, etc. It also offers "presets," which allow you to set source, volume, and a number of other parameters with a single click. Both the commands and presets can be relabeled and are displayed on the keypads using "ATM style" function buttons.
While these functions in their implementation out-of-the-box are of limited use in a modern setup (especially due to the ancient IR code database), the driver provides "virtual" commands and presets. When you press a command button for a given source, a variable is changed which can be used to kick off a CQC event which could skip tracks on your MP3 player, for example. When you pick a preset, you can have CQC perform any number of functions, again using the event system. You could have it use the text-to-speech to speak the weather report in your current zone, or you could have it tune an MP3 player to a streaming audio source and dim the lights in the room you're in. This breathes
some new life into the keypads, and gives them a purpose in a system with CQC.Most of the infrared functionality of the SC4 is outdated. It uses a custom IR engine with fixed codes, and does not offer a learning system. Thus, it is largely ignored in this driver. The only feature which may be of some use is the IR repeater function (IR receivers in the keypads, common and source IR outputs on the controller unit).
When controlling the SC4 from the serial port, it is possible to independently control the audio and video switch matrices. This means the SC4 could theoretically be used to switch composite video sources (e.g. security cameras) independently of the audio selections. Unfortunately if you choose a source using a keypad, it will switch both audio and video simultaneously, and there is no way to avoid this. It could be a useful
trick if you were running an SC4 with no keypads, though.The SC4 has a nice feature where all sources, zones, commands, and presets can be labeled. These labels are stored in the SC4 itself, are displayed on the keypads, and are read and written by this driver. There are some restrictions to the labels, however:
ASCII 32 to ASCII 90, ASCII 94 and ASCII 95(space, uppercase letters, numerals, most punctuation, caret, underscore) When writing these labels, you MUST conform to this limitation or the driver will reject your label and it won't get saved in the unit.
.
The SC4 has a male 9 pin D connector. You will need a gender changer and a null modem to connect it to a PC serial port. The port runs at 2400 baud, N-8-1. These settings are fixed. It's a bit slow for the amount of data potentially sent, especially during configuration, but in practice it works well enough.
THIS DRIVER IS PROVIDED FREE OF CHARGE, BUT THE AUTHOR MAY NOT BE HELD RESPONSIBLE FOR ERRORS OR OMISSIONS. NO WARRANTY IS PROVIDED EXPRESSLY OR IMPLICITLY. THE DRIVER MAY BE MODIFIED FOR ANY PURPOSE, BUT THE AUTHOR MUST BE CREDITED IN THE SOURCE AND ACCOMPANYING DOCUMENTATION.
This section lists the fields that the driver makes available, their types, minimum and maximum values, etc... In the per-zone fields below, an x represents the zone number, so there will be 8 fields with values 1 through 8 for the x value.
Name Type R/W Description/Limits AVInputsJoined Boolean R/W Set true if you want audio and video sources to track together (normal operation, like the keypads do). If false, you can independently route audio and video sources. FirmwareVersion String R Contains a string with a bunch of system information, including firmware version. Example: a/d/s/ SC4-A IRrev 16.18 HARDrev 03.0 SOFTrev 01.7 system time-019D9F36 11:03
SxLabel String R/W Read or set the label. See the Quirks and Limitations section above. SxCfgRepeatedIR Boolean R/W Boolean value that controls whether the "commands" menu is shown on the keypad immediately after selecting that source. SXCfgVirtualSource Boolean R/W Boolean value that controls whether switching to this source actually switches the audio or just changes the IR command template to allow IR commands to be issued. SxCommandExecuted String R This field is written whenever a source command is executed, either by pressing a keypad or an IR button. This is intended to be used by the CQC event system to trigger events when commands are executed. See below for the format of this field. Power Boolean R/W Get or set the power state. True when system is powered up, and false when in standby (keypads are blank and display "a/d/s/" in lower corner). PxLabel String R/W Contains the text label for each preset. See label limits in "Quirks and Limitations." PxCfgVirtualPreset Boolean R/W If true, executing the preset from a keypad/IR remote will only cause the preset executed field to be updated. Otherwise, the normal SC4 preset mechanism will be used in addition, allowing default sources, volumes, etc., to be configured. Generally you'll want these to be true in a CQC system for maximum flexibility. P1Executed String R This field is written by the driver whenever a preset is executed. It is intended to be used by the CQC event system much like the source command execution fields. See below for the format of this field. UpdateKeypads Boolean W Write this when you need to force the keypads to update their displays, e.g. after changing labels. The protocol document recommends against doing this very often, so it's probably not wise to try to use labels to dynamically display information (e.g. song titles, etc.). I'm not sure there's any danger in doing it, but it does seem to slow the system down a bit during the update. ZxRoomLabel String R/W Contains the text label for each zone (aka "room"). See label limits in "Quirks and Limitations." ZxAudioInput Card R/W The numeric value of the currently selected audio source for a given zone (1-8). Writing this field will cause the audio source to change, and if the AVInputsJoined field is true, the video source will also change. ZxVideoInput Card R/W Contains the numeric value of the currently selected video source for a given zone (1-8). Writing this field will cause the video source to change, and if the AVInputsJoined field is true, the audio source will also change. ZxVideoInputName String R Contains the text label for the currently selected source for a given zone. ZxVolume Int R/W Read or set the zone's volume (-86dB to 0dB). Note that while volume fields are present for Z1 and Z2, the SC4 contains no hardware to actually set these volumes. They are fixed outputs intended to be record loops. ZxMute Boolean R/W Get or set the mute state of the indicated zone. ZxCfgMuteOnDoorbell Boolean R/W True when a particular zone is configured to mute when the doorbell input is active. Write to it to configure the zone mute on doorbell. ZxCfgComplexMenu Boolean R/W True when the full "complex" keypad menu is enabled for a given zone. This menu mode allows some additional features. Write to it to configure the zone for complex menus. ZxCfgLocalControlOnly Boolean R/W True when only local control is allowed for a given zone's keypads. If false, a keypad in a zone can control audio in other zones. Write to it to configure local control. SxCommandExecuted
[controller#] - SC4 controller, typically 0 (higher if you link SC4's together)
[zone#] - Which zone, 1-6
[stimulus] - usually "Keypad" or "IR" - can also be "IREngine" "Nowhere" or "RS232" (no quotes) "SourceCommand" - string appears to indicate source command has been executed (no quotes)
[src#] - which source this command was for (1-8)
[src label] - text label of the source
[cmd#] - which command was executed
[cmd label] - text label of the command that was executed
[serial#] - increments each time a command is executed so multiple presses can be detectedPxExecuted Field Format
[controller#] - SC4 controller, typically 0 (higher if you link SC4's together)
[zone#] - Which zone, 1-6
[stimulus] - usually "Keypad" or "IR" - can also be "IREngine" "Nowhere" or "RS232" (no quotes) "PresetExec" - string appears to indicate preset has been executed (no quotes)
[preset#] - Which preset was executed (1-8)
[preset label] - Text label of the preset that was executed
[serial#] - increments each time a command is executed so multiple presses can be detected