Jul 152013


We were contracted by an A/V Integrator who was taking over a large installation, originally designed and programmed by a different company.  The installed system was quite complicated, consisting of multiple Crestron touch pads, video projectors, light fixtures, etc.  The group who owned the facility wanted to upgrade the (now old) video projectors, but appreciated that everything had been programmed to work as part of a larger automated system.

Unfortunately, the company who did the original installation was either (a) long since out of business, (b) uninterested in changing the control system, or (c) interested, but requesting an extortionate amount of money to make the changes.

Since most installers closely guard the source code / interface configuration / custom modules they’ve created for these projects, it’s difficult for third parties to make any changes.

“Could you perhaps,” the new integrator asked, “design a box which receives RS232 commands (generated by the existing automation controller) and then retransmits our new commands?  This way we can install a bigger/faster/stronger/brighter/different brand of video projector and have it work seamlessly within the larger system.”

“Of course!”‘

Because realistically, we’re only worried about watching for a handful – at most a few dozen – of serial commands for each device.  Receive ‘power on’ in Sanyo syntax and retransmit à la Barco.  Or perhaps switch projector inputs.  And so forth.

Enter the Serial Port Interceptor

It’s an RS232 learning remote.  The networking crowd would describe it as a beneficial man-in-the-middle attack.

Showing Upstream and Downstream RS232 Ports

Showing Upstream and Downstream RS232 Ports

Rear Panel Includes VGA and PS/2 Keyboard Connections

Rear Panel Includes VGA and PS/2 Keyboard Connections

These two photos show a rev1 prototype.  The panels are simple laser cut plastic, rather than our traditional anodized and brushed aluminum.

This nifty yet nondescript black chassis contains:

  • 1 x female DB-9 connector, for listening to upstream requests
  • 1 x male DB-9 connector, for driving downstream equipment
  • 1 x PS/2 keyboard connector, used for initial setup and programming
  • 1 x VGA monitor jack, for programming and testing.

Here’s a very rough-cut demo video of the system in operation:

Interest piqued?  Contact us for more details.


 Posted by at 5:30 pm
Mar 062013

This has been an unpublished firmware build for quite a while now, and we’ve finally had a moment to cut together a short video demonstration.

In summary, this firmware personality allows the DecaBox to

  • capture static DMX scenes (single frame snapshots)
  • … or dynamic looks (44 frames per second, with virtually no time limit),
  • … then replay this data using a simple RS232 command syntax
  • Also ‘build’ DMX scenes channel-by-channel using RS232 commands.

It’s been very popular with systems integrators who need more functionality than is provided by our RS232 to DMX engine.  Though the smaller DMX engine is fairly powerful, designers often have other DMX authoring tools they prefer to use, especially in situations involving complex cues and hundreds of channels.

The DecaBox allows DMX data to be captured from any system.  The data is stored internally on an SD memory card, and can easily be recalled.

The easiest way to demonstrate the different functions is with this quick video clip.  This clip covers capturing scenes using the front panel.  The serial syntax for capturing scenes is discussed below.



Command syntax is very straightforward.  RS232 connection is 9600 8N1.  If the DecaBox is connected directly to a PC, a crossover / null modem cable is required.

Here’s a screenshot from a terminal program, captured as the system boots up:

(Note that in this and all following screenshots, the image may be enlarged by clicking on it.  Also, yellow text is generated by the DecaBox and green text is sent to the DecaBox through the terminal program / Crestron system / etc.)  The text [cr] represents a carriage return character, decimal 13 or 0xod.

Splash Screen / RS232 Connection

Splash Screen / RS232 Connection

The system has two basic modes: DMX passthrough and DMX engine.  In DMX passthrough mode, data connected to the DecaBox’s DMX Input jack is copied to the DMX Output jack.  This feature is included because often an upstream DMX source, such as a lighting console, is used for primary control of the attached fixtures.  In this mode, the DecaBox is basically transparent to incoming data.  There is a latency of ~ 1 DMX packet, or 1/44 second, in passthrough mode.

In DMX engine mode, incoming DMX data is ignored.  The DecaBox generates all output data internally.

These two modes may be toggled between by sending P[cr] or E[cr].  At power up, the system defaults to E mode.

Engine / Passthrough mode

Engine / Passthrough mode

The DecaBox can grab static (one-shot) DMX scenes or record continuous sequences at 44 frames per second.

To grab a scene, send the serial command



  • G is a capital G and mnemonic for grab
  • N is a decimal number, range is [1 999]
  • [cr] is the carriage return

Here’s a screenshot of the process.  Again, green commands are generated by the user, and yellow is feedback from the system.

Grab a single static frame.

Grab a single static frame.

To record a dynamic scene, with a time ranging from seconds to several hours, use this syntax:



  • Ris a capital R and mnemonic for record
  • N is a decimal number, range is [1 999]
  • [cr] is a carriage return

The system creates the file for recording, and then prompts for a ‘start’ trigger.  B[cr] begins the capture and Q[cr] ends it, as shown below.

Record a dynamic DMX scene.

Record a dynamic DMX scene.

Once DMX data has been recorded, it’s useful to replay it.  To that end, both static scenes and dynamic recordings may be called through the serial port.

To play a static scene, the syntax is



  • S is a capital S, and mnemonic for static.
  • NNN is a three digit decimal number, which matches a pre-captured scene
  • : is a colon
  • TTT is a crossfade time, in tenths of a second, between the current DMX output and what’s stored in the file
  • [cr] is a carriage return, decimal 13 or hex Ox0d

Here’s an example screen capture:

Replay a static scene.

Replay a static scene.

To recall a dynamic scene, use this syntax:



  • D is a capital D and mnemonic for dynamic.
  • NNN is a pre-recorded scene number. three digits, with leading zeroes if needed.
  • : is a colon
  • RRR is the number of times a file repeats.  Use 000 for infinite loop.
  • [cr] is a carriage return.  Decimal 13 or 0x0D



Attempting to recall a scene which wasn’t previously stored in memory will return an error:



The command C[cr] can be used to instantly clear the DMX output.

Clear output.

Clear output.

If you need one of these, or something similar, please let us know!


 Posted by at 8:03 am

RS232 to DMX Engine – New Free Crestron Module

 DMX, RS232  Comments Off on RS232 to DMX Engine – New Free Crestron Module
Aug 072012

As a result of our ‘Free Gear in Exchange for a Programming Module‘ offering a few weeks ago, programmer Wes Albert was kind enough to provide a big batch of Crestron files, which should serve as a springboard for integrating DMX output in your Crestron system.  Take a look at this page for more details.

Also note that we’re currently developing a new system which features an ethernet port rather than RS232 control.  A very similar command set (plus some even more powerful features) will be implemented as simple ASCII strings sent to a specific UDP port.  The existing dimming engine will of course be preserved, thus freeing your host controller from calculating all the required data points.

New features will also include scene storage and playback, channel queries and an even faster way to access groups of DMX channels.

ETA? A couple weeks, hopefully.

If you’d like to bang around on one of these systems as a beta tester, drop us a note in the comments below.


P.S. Fortunately, most of these new ethernet engine features will be back-ported to the RS232 version as well, and be available for free (hopefully) or for a nominal fee (if the programming turns especially ugly) for all existing customers.  If you’d like to be notified when it’s available, just enter your name and email address in the top right corner of this page.

 Posted by at 4:29 am
May 152012
RS232 to DMX Dimming Engine

RS232 to DMX Dimming Engine

Edit 8/6/2012 : Programmer Wes Albert was kind enough to provide a demo video and several Crestron modules.  Take a look here and let us know how they work for you…


This little guy has been for sale now for a couple years, with great success.  It’s very popular with systems integrators who need simple, straightforward control of an entire DMX universe through a serial port. Our customers have connected it to everything from an iPad, standard AMX / Crestron controllers, custom-written software for Mac or PC platforms, and surely many other systems we’re not aware of.  Its easy-to-parse, human-readable serial command set results in a very short learning curve and very stable operation.

We’re well beyond checking for firmware bugs* at this point – the system has been field-proven by many many customers.

But here’s where we need help.

This summer’s goal is to make the system even more user-friendly and powerful.

We’re what the IRS would classify as a ‘very small business’, and don’t have resources to tackle this alone.  So we’re offering converter boxes to a select group of people.

What You Get

  • One standalone RS232 to DMX engine
  • One 9v DC adapter
  • As much email and telephone tech support as it takes to make you happy

What We Want in Return

  • As you can probably imagine, we just don’t have the time to buy / borrow / rent hardware and software to test against each and every major system out there.
  • So, we’re looking for a complete ‘plugin’ or ‘module’ or whatever it’s called on your particular platform, which we can publish here on this site and share with other customers.  Basically, you provide with us everything a brand-new customer – someone reasonably skilled in their trade, but new to using our gear – would need to get up-and-running, as quickly and painlessly as possible.  Source code, screenshots with annotations, even short video clips would be much appreciated.  Full credit for your work will be given, including links to your website and a quick company bio if you’d like some extra exposure.

Interested?  Drop a quick note in the comments below.  Include your email address (which will be sent to us, but not shared with anyone else).  Please mention your platform of choice, as we certainly don’t know who all the big players are in this arena.  We’re hoping to work first with integration systems which have fairly broad market penetration already.

This is a first-come, first served-per-system sort of project, probably.  We can sneak five or maybe ten boxes out the door before the accountants start to gnash their teeth.  If someone else has claimed your platform already, make your best case for why we should double down on free bits of $200 kit.

And of course, as people have a chance to program against their gear and submit results, we’ll post them in a helpful gallery on this site.

Note that comments submitted are read and moderated by an actual human being, so they may not appear immediately below.

Thanks for visiting our little corner of the Internet.


* New feature requests are always welcome, and existing gear may be easily and quickly updated in the field.  We thrive on that sort of feedback.  If there’s a function we’ve not considered which would make your life even easier, please let us know.

EDIT: As of June 13, 2012, we’ve got a group of several programmers working on different Crestron modules for this system.  So no more freebies, sorry.  However, if you’re familiar with a different automation platform, please let us know.  Otherwise, keep an eye on this space, as we’re hoping to publish the finished modules within a week or two.  Also, if you enter your name and email address in the top right corner of this page, you’ll receive automatic updates when new content is published here.


 Posted by at 12:31 am

QLab Serial Control of Video Projector Shutters

 Case Study, MIDI, RS232  Comments Off on QLab Serial Control of Video Projector Shutters
Mar 092012

Converts between MIDI, DMX, RS-232 Serial and IR

The DecaBox Universal Protocol Bridge - Click to Enlarge

MIDI Note Inputs Trigger Arbitrary RS-232 String Outputs

We were contacted by a group who was using the Mac OS-based QLab software to run their show.  Part of the show involved a pair of large frame video projectors (a Barco FLM HD20K and a Panasonic whose model number I can’t recall).  The designers needed to control the internal shutters on these two large projectors, but QLab doesn’t allow serial output.  However, its toolkit includes a full complement of MIDI note and show control message generators.

So, we developed a firmware build for the DecaBox which accepts MIDI input (any combination of note on, note off and program change) messages, and outputs serial strings up to 40 characters long.  Setup is based on a very simple text file called ‘map.txt’ which is stored on the DecaBox’s internal SD memory card.

Map.txt looks like this:

; DecaBox Protocol Converter
; Engineering Solutions Inc
; www.response-box.com
; Firmware for converting MIDI messages into
; RS232 serial strings, in a user-configurable way.
; This file is called map.txt and should be edited
; in either TextEdit (OS X) or Notepad (windows). Other programs,
; such as Word, may introduce unwanted garbage characters in the file.
; Note that lines which begin with a semicolon are comments, and
; are ignored by the firmware. A line can contain a comment or a command,
; but not both.
; First define the MIDI channel used to receive data. This is a two
; digit decimal number with the range [01 16]
; In this example, we’re using MIDI channel 1
CHN 01
; Next define the baud rate for the RS232 output. Valid values are
; 9600, 19200, 38400, 57600. No commas are used.
; Default baud rate is 9600
BAU 9600
; Finally, define the cues which will be transmitted.
; This is done by selecting the MIDI note to be monitored, the note
state (ON or OFF),
; and the RS232 string to be generated.
; Characters which aren’t human readable and editable in a
; text editor (such as carriage return, line feed, STX,
; ETX and so forth, are defined by the escape sequence $AB, where AB
is a two digit
; hex representation of a single byte to be transmitted. Valid range
of AB is [00 FF]
; Leading zeroes may be required, depending on desired value.
; The protocol is not case sensitive. $AB == $ab == $Ab == $aB
; For example, to generate the string ‘Hello World’ + carriage return when MIDI
; note #3 is ON, use this syntax:
; N003 Hello World$0d
; Note that each line begins with either “N” or “F” (signifying Note ON or
; Note OFF, and is followed by a three digit note number, then another space,
; then the beginning of the string.
; Strings made entirely of hex characters can also be built using the
; abovementioned
; escape sequences. Here’s how to send the five bytes $02 $04 $10 $22 $38 when
; note #6 is turned off
; F006 $02$04$10$22$38
; If the $ character itself needs to be transmitted as part of a serial
; string, it must be encoded as the hex character 24.
; F006 $02$04$10$22$38$2F$24
; MIDI notes can be added to this table in any order. If a note is duplicated,
; the string appearing farther down in the table will overwrite an
; earlier value.
; Up to 32 string characters can be assigned to each MIDI note.
; Finally, MIDI Program Change messages can be used to
; generate serial output. These are preceded by a ‘P’
; and the other syntax information above applies.
; Note that (currently) only program change messages 1-48 are
; supported due to processor memory space
;; The actual MIDI to RS232 Patch Chart begins here:
; Here’s a string for triggering the shutter on a Panasonic projector
N001 $02ADZZ;OSH:1$03
; and this turns it off
N002 $02ADZZ;OSH:0$03
; Here’s shutter close for Barco:
N003 $FE$01$23$42$00$66$FF
; And here’s open:
N004 $FE$01$22$42$00$65$FF
; Other sample commands for testing, etc.
;P001 MIDI Program Change #1 Received
;P002 MIDI Program Change #2 Received
;P004 MIDI Program Change #3 Received
;;N001 Midi Note 001 Received$0d
;;F001 Hey! Someone just released note #1$0d
;;N002 —>Here’s note number two!!$0D
;F002 _Stop Cue 123.45.67$0D$0A
;N005 Go Pyro Finale$0D
;N006 Open Trapdoor Stage Left$0A
;F006 $02$04$10$22$38$2F
;F007 Foo!$0D
;N128 Highest Note!$0d

Here’s a screenshot from terminal program RealTerm, showing the Panasonic and Barco strings generated by the DecaBox.  Note that the Barco data looks garbled but it’s actually ok – only a few of the bytes required by Barco are human-readable.


That’s pretty much it.  The system runs exactly as expected.

Here’s a couple pictures from the production.  The projection control was handled by

Jordan Goodfellow
The RARE Experience

Since the control system was located quite far from the stage, a pair of RS232-over-CAT5 converters were procured to reliably span the distance.

A Pair of DecaBox Protocol Converters, Plus RS232 Baluns for CAT5 Transmission

Note here that MIDI data is daisy-chained from the QLab computer to the first DecaBox, and then to the second one.

If you need something like this for your next production, just let us know.  And thanks again, Jordan, for the chance to work with you on this project.


 Posted by at 6:06 pm

iPad + Crestron + RS232 to DMX Bridge LED Control

 Case Study, DMX, RS232  Comments Off on iPad + Crestron + RS232 to DMX Bridge LED Control
Feb 292012

One of our customers works with a systems integration group in Quebec, Canada.  A few months ago they purchased one of our RS232 Driven DMX Engines.  Once the box arrived, we spoke briefly on the phone to help them get started using the box’s control language.

A month or two later, we heard back.  They’ve written some neat preset-setting software for an iPad, which communicates with a Crestron controller, which in turn outputs serial data to our little black box.  DMX from the box drives installed LED arrays throughout a home or business.

The video clip was shot at a trade show.  Apparently there are also installed ‘smart’ wall switches which can be used to recall the stored preset scenes.

If you’re interested in the Crestron / iPad end of this, contact Hugo:

Hugo Bergeron
Clef de Sol Inc.
418-563-7238 phone

And if you need your own RS232 to DMX bridge, we’v got plenty of stock in the online store.



 Posted by at 8:14 pm

DMX Control of a Lutron QSE-CI-NWK-E

 Case Study, DMX, RS232  Comments Off on DMX Control of a Lutron QSE-CI-NWK-E
Jan 272012

“I have an church installation where the project electrician supplied and installed a Lutron Grafik Eye QS series dimming system for the architectural lighting. I have a stage lighting system that runs over DMX, and the client wishes to control the architectural (the Lutron system) lighting from the stage lighting console. Problem is that this particular Lutron system won’t accept DMX as a control input. It will, however, accept RS-232 control via Lutron’s QSE-CI-NWK-E interface.”

Fortunately, this is no problem at all for the DecaBox.  Each Lutron interface above can drive six different lighting zones, so we built a custom firmware personality which accepts six sequential DMX channels (the first, of course, is user-selectable).

These channels are monitored, and when the incoming DMX data changes, the appropriate serial strings, in Lutron-specific syntax, are generated.  Here’s a screen shot showing how the intensity of Zone #4 is being varied.

Serial Capture - DMX to Lutron Interface

Need something similar for your own installation?  Just let us know.

 Posted by at 10:16 pm

Bidirectional DMX, RS232 & Stored Scene Recall

 Case Study, DMX, RS232  Comments Off on Bidirectional DMX, RS232 & Stored Scene Recall
Jan 172012


Strand Console - Stock Photo

In early December, we were contacted by a company which specialized in automation & systems integration.  One of their clients had a large museum / interactive type exhibit based on some older AMX / Crestron technology.  These guys were tasked with modernizing the entire system, adding more sophisticated and flexible lighting, and changing the way the audience interacted with different elements of the display.

Their requirements looked something like this:

  • We have a DMX console which needs to drive ~ 150 channels of moving light and LED fixtures at the beginning of the show.
  • Also, there are existing (and installed) relay cards which must still be driven at the same time, but these cards only accept input from the AMX system.
  • The current AMX system is handling the touchscreens, video playback, audio and more.  So it definitely stays as part of the new installation.
  • Finally, at the end of the show, the system must switch from ‘canned’ to interactive operation.  Input from a large touchscreen needs to direct the moving lights, the LED fixtures and all the low-voltage relays such that many different scenes can be displayed, but in a random order.

With some careful planning, we developed a version of super-turbo bidirectional DMX / RS232 bridging firmware for the DecaBox which exactly matched the needs of the project.  It included the following features:

Switchable External / Internal DMX Output The DecaBox contains ports for DMX receive, passthrough and transmit.  Receive and passthrough, of course, are connected in parallel with each other and with an input on our internal processor.  Transmit is connected to an output on our internal processor. By means of a simple RS232 command, the AMX brain could direct the DecaBox to either (a) retransmit incoming DMX from the upstreaming lighting console or (b) generate DMX scenes internally, ignoring upstream data.

DMX to RS-232 Parsing. This of course is how we were able to use the DMX lighting console to drive the AMX-only relay cards.  Since we didn’t know a priori how many DMX channels were required, a simple text file stored on the DecaBox’s internal SD memory card allowed for field programming:

baud 19200 ; can be changed to any standard baud rate

; beginning DMX channel to be monitored

start 100

; last channel to be monitored

end 242

As DMX data was received, the channel range called out in this text file was monitored carefully.  Each time  a DMX channel in this range changed its value, a short serial string was transmitted the AMX system:

100 @ 004

100 @ 005

100 @ 008

100 @ 010


In this way, the AMX brain could keep an eye on the incoming serial data.  When the proper DMX channels reached appropriate levels (usually FF, but anything is possible), the AMX system set the relay cards to the proper state.  With this firmware addition, the DMX console could drive the legacy relay cards properly.

RS232 Triggered Scene Recall Finally, for the interactive section of the show, the designers wanted a series of different lighting looks, based on which section of the touchscreen was triggered.  Though the DecaBox has an internal DMX Scene Engine, the AMX programmers didn’t want to build lighting scenes channel by channel.  It was much easier to use the external console, with it’s intelligent-light-specific programming tools, to design the required looks.

So, we added a ‘snapshot’ ability to our firmware.  With valid DMX connected to the DecaBox’s input and the downstream moving lights and LEDs connected to the output, the users could use the three front panel pushbuttons and LCD to capture static DMX scenes.  These scenes were stored safely on the memory card, and can be recalled using a very simple RS232 syntax, complete with crossfade times.

Thus, the show could start under control of the large DMX console, with the DecaBox providing RS232 translation of the required channels for relays and low voltage equipment.  Then, the AMX system could toggle between live and captured DMX data during the interactive portion of the show.  The pre-built DMX scenes could be generated and faded between as randomly required, based on touchscreen input.

All in all, this was a fun project to work on.    At last check, the equipment was all running well.  We’re thrilled that the DecaBox offers such a flexible and powerful platform.

If you need something similar (or even something wildly different), please let us know.


 Posted by at 8:19 pm

New! Field Programmable DMX to RS232

 DMX, RS232  Comments Off on New! Field Programmable DMX to RS232
Jan 022012

We’re thrilled to announce a new firmware option for the DecaBox Protocol Converter.  It allows DMX to RS232 conversion (very useful for triggering projector shutters, video switchgear, AMX / Crestron systems, etc) and the generated RS232 strings can be edited in the field using a very simple interface.

Check out this page for more details.

If you’re an owner of ‘static’ DMX to RS232 firmware and would like to upgrade to field-programmable options, contact us to discuss your options.

 Posted by at 6:45 pm
Dec 162011


Converts between MIDI, DMX, RS-232 Serial and IR

The DecaBox Universal Protocol Bridge - Click to Enlarge

This new firmware revision is an extension of the custom work we did for controlling Jands lighting consoles.  That firmware receives MIDI Show Control messages, then repackages them as RS232 serial strings, which Jands hardware can use for cue triggering.

But now, it’s even more flexible.

Some of our customers were using QLab as a show control platform.  However, they needed to control some RS232 equipment, which QLab doesn’t support.  Since the DecaBox contains an internal SD memory card socket, it made sense to design firmware which could read a simple text file called ‘patch.txt’ from the memory card. This file allows arbitrary serial strings (up to 40 characters in length, each) to be assigned to any MIDI note on, note off or program change message.

System baud rate can be globally set to any standard speed.

Et voilà!  Any serial device can be triggered by MIDI messages.

Here’s how the patch file looks:

; Since this is a command to be parsed, there is no semicolon at the
; beginning of the line.
; Define the MIDI address that the notes will
; be sent from.  MIDI notes received on other channels will be ignored
; Valid range here is [1 16].
; Here's we've set the MIDI channel to 2
; Next, define a baud rate.  No commas needed: 9600 19200 38400 etc
; Note On messages start with N.  Note Off messages start with F.  Program
; change messages start with P.  Hex characters (anything non-printing)
; can be inserted using the $ sign, then a two-digit hex value
; IE carriage return is $0D.  If a $ needs to be generated
; as part of an actual transmitted string, encode it simply as hex $23.
; Google 'ASCII Table' for several handy charts
; Example cue for note 0 [MIDI notes range from 0 to 127] ON
; It's Hello World followed by a carriage return
; N0 Hello World$13
; Note Off Example
; F10 Go Pyro Finale!
; Program Change
; P3 Go Cue 12.34.56$13
; And here's our actual live cue list:
N0 Go Cue 1$13
N1 Go Cue 2$13
N2 Go Cue 3$13
F0 Stop Cue 1$13
F2 Go Cue$13
P8 Someone Hit Program Change #8!!$13

If you need this or similar functionality as part of your system, just let us know.

 Posted by at 11:05 am