Serial Remote Control

PDM II's serial control options permit custom interfaces for on-air or logging systems via a network connection. There is no hardware serial port.

Standard IP-based Connections

Commands and queries can be transmitted as TCP socket connections to the unit's network port 5443 when enabled in the Configuration screen's "Control" section.

Once enabled, port 5443 remains accessible to the entire network until it is specifically closed. There is no password checking. Therefore we recommend the use of a firewall or keeping your PDM II on a dedicated closed network.

Serial Language Structure

PDM II's serial remote control language is designed to be easily implemented from any terminal program, by macros in most automation systems, or by computer programming language.

Requests and responses are standard ASCII characters, based on plain English, using familiar PDM II “front panel” designations whenever possible.

  • Requests - messages from the controller to PDM II - consist of a number of words followed by a Line Feed character <LF> (ASCII 10).  Messages are case-sensitive.  Note that Carriage Return (ASCII 13) is ignored.

  • Responses - replies from PDM II back to the controller - consist of a single Result character, any appropriate message, and then <LF>. The Result character may be one of the following:

    • ! - Indicates a command has been received and acted upon

    • ?  - Indicates a command isn’t understood or can’t be acted upon

    • @ - Indicates an event message that wasn't an immediate response to a command

Output Events can be sent by PDM whenever there’s a change in status, such as memory being filled or buttons being pressed, and are provided to design custom serial interfaces to other equipment. Use the enable command to specify which events generate a message.

Request Syntax

Requests consist of a command  (something for PDM II to do), usually followed by arguments (what it should act upon), and then a Line Feed <LF>. Commands include:

  • down - Start the event described by <argument>. Used for level-sensitive inputs

  • up - End the event described by <argument>. Used for level-sensitive inputs.

  • trigger - Momentary activation of <argument>, the same as tapping a button. Used for triggered inputs.

  • get - Returns the status of <variable>

  • help - Returns hints about PDM II's serial language

  • enable - Turns on Output Event reporting for a specific PDM II condition

  • disable - Turns off reporting for a specific condition

Arguments act the same as the identically-named GPIO inputs as described in the GPIO section. You may enable or disable  Output Event reporting for just about every PDM II function. Arguments are also case-sensitive. They use internal capital letters and must be sent exactly as shown. Arguments include:

  • Build

  • Exit

  • Cough

  • Dump

  • Bypass

  • Cue 1 - Cue 8

  • Flag 1- Flag 8

Variables include:

  • Depth - Current audio delay length in seconds and tenths

  • PeakInput - Peak input level, both channels, in dBFS

  • PeakOutput - Peak output level, both channels, in dBFS

  • TemperatureC or TemperatureF - Current internal temperature in whole degrees Celcius or Fahrenheit depending upon the request

Output Event messages sent by PDM II are @nameOfEvent.[=1 or =0]  followed by <LF>. NameOfEvent can be any event reported by the GPIO. If an event is momentary (such as a button press) the Boolean does not appear.

=1 or =0 appear only if the event is an ongoing state, such as whether the system is currently in Bypass Mode. These numbers do not appear for triggered events such as Cues.

A typical Output Event might look like: @DelaySafe=1<LF>, which translates to "Delay Safe is now on" and PDM II's memory has enough audio buffered to cover at least one complete dump.

Examples

Remote Request

PDM Response

Notes

down Build<LF>

!<LF>

PDM starts building the delay

up Cough<LF>

!<LF>

PDM releases the COUGH button

trigger Dump<LF>

!<LF>

PDM starts a DUMP event

help<LF>

!down up(etc)<LF>

See Note 1 below

help down<LF>

! (text) <LF>

See Note 1 below

get Depth<LF>

!Depth-7.5

Current delay is 7.5 seconds

get PeakInput<LF>

!PeakInput= -19

Current audio input peak level is -19dBFS

@DelayFull=1

Delay has been fully built; see Note 2 below

@EmptyTrig=1

Exit completed, Empty trigger asserted; see Note 2 below

@DelaySafe=1

Dump increment achieved, delay is now safe; See Note 2 below

@Bypass=0

PDM II removed from Bypass mode; see Note 2 below

DUMP GUEST!!!<LF>

?unknown command DUMP<LF>

PDM II doesn't understand this instruction; no action is taken

Note 1: Help does not require an <argument>. If you send help<LF> by itself, it returns a list of valid commands. If you specify any command as the argument, it returns a brief explanation along with a list of the command's arguments.

For example, if you send help down<LF>, PDM II replies with !down: send Press signal for one or more space-separated events (None Build Exit Cough Dump Bypass Cue 1... etc. through Flag 8).

Note 2: Output Event Messages (preceded by @) only appear after they have been specifically enabled for a type of event.  

Output Event Messages

PDM II's Output Event messages can be used to build elaborate custom remote controls. Any event that can trigger a GPIO output can also be sent serially.

Each type of output event must be specifically enabled before PDM II will report it. This way, you can tell PDM II to report only those events that are important to your installation.

When a socket connection is made to port 5443, a System Active message is sent: @Welcome to PDM. This can be used as a handshake or as a signal to start your own routine for enabling those Output Events you want reported.

Events are enabled or disabled on a per-connection basis. You must send enable messages each time you establish a new connection. Otherwise, each connection to the PDM II defaults to having all of its event messages disabled.

enable Command

This command turns on PDM II's ability to report specific events.

  • Use the form enable EventName<LF>, where EventName is a change in PDM II's current status. For example, enable DumpTrig<LF> tells PDM II to send a message whenever DUMP has been activated.

  • Two or more EventNames can be combined in the same command by separating them with a space. For example, enable DumpTrig Muted<LF> tells PDM II to report any time either DUMP or MUTE has been activated.

  • Use All for EventName as a shortcut when you want to enable messaging for every PDM II event.

  • When PDM II receives any valid enable command, it responds !<LF>.

  • If a function is active when you enable its message, PDM II reports its state immediately and then sends an updated report when the state changes. For example, if you send enable Muted<LF> and the unit is already muted, it will immediately respond with @Muted=1. When Muting is turned off, PDM II will send @Muted=0.

EventNames used in enable commanded include:

  • Building - PDM II is building up a delay

  • BuildTrig - The BUILD button has been pressed

  • Bypass - PDM II is in a bypass state

  • Cue1 ... Cue8 - Cue point n has been reached

  • DelayEmpty - The memory is empty

  • DelayFull - The delay is now full

  • DelaySafe - A Dump increment has been reached in memory

  • DelayUnsafe - The memory contains some audio but not enough to cover a full Dump event

  • DumpTrig - The DUMP button has been pressed

  • EmptyTrig - The memory has just been completely emptied

  • Exiting - PDM II is exiting a delay

  • Flag1 ... Flag8 - Flag point n  has been reached

  • FullTrig - The memory has just been completely filled

  • Muted - PDM II's output is muted

  • BuildLamp - The BUILD button is flashing

  • ExitLamp - The EXIT button is flashing

  • DumpLamp - The DUMP button is flashing

  • CoughLamp - The COUGH lamp is flashing

  • All - Enables events for all of the above events

Note - "Lamp" functions mimic the lamp state and report =1 or =0 every time a front panel button flashes on or off.

disable Command

The disable command turns off reporting of one or more output events and follows a similar syntax.

  • disable DumpTrig<LF> tells PDM II to stop reporting that DUMP has been activated.

  • disable DumptTrig Muted<LF> turns off reporting for both functions.

  • disable ALL<LF> turns off any message reporting.

  • PDM II responds to valid disable commands with !<LF>.

Note - The disable command affects only serial messages. Parallel GPIO functions on the DB-15 are not affected and remain as set on the front panel or via the web interface.