Decabox: Bidirectional MIDI to RS-232

 
Click to Enlarge

Click to Enlarge

This useful firmware revision was first commissioned by the production crew of a long-running (nearly 30 years) game show televised in the USA.  One of the show’s main set pieces was controlled by custom software running under DOS.  However, the DOS system needed to be updated, as spare parts were no longer available.

It has since been used worldwide, often by integrators who want to recall presets on audio consoles via MIDI, but automated through a Crestron / AMX / Control / Savant platform.

Operation is very simple: each byte received by the RS-232 port is instantly transmitted via the MIDI out connector.  And every byte received by the MIDI in jack is transferred to the RS-232 port.  The system is completely transparent to all data flowing through it.  All that changes is the baud rate (38,400 <–> 31,250) and the signal type (true RS-232 voltages vs MIDI’s current loop).  Full duplex communication is easily possible if required.

As far as protocol, there’s no handshaking or flow control.  On the RS-232 side, you just need pins 2, 3 and 5, and the pinout is listed on the box.  RS-232 baud rate is 38,400.

Every byte received through the serial port is send out the MIDI port, and vice versa.  On the RS-232 side, you’ll be building up 2 or 3 byte MIDImessages.

This page https://www.midi.org/specifications/item/table-1-summary-of-midi-message

…is a good reference for how those are constructed.

The left and right LEDs will flicker when data passes through the RS-232 and MIDI ports respectively.

Here are some sample MIDI messages based on formatting from the midi.org page linked to above:

 $90 $01 $7F  <- note on message, note #2, full velocity
 $80 $00 $00  <- note off message, note #1, zero velocity.

It’s important to note that these MIDI messages must be transmitted as raw hex bytes rather than a string of ASCII characters. Each control platform has a slightly different way to set this up.  On Crestron, raw data can be ‘escaped’ by transmitting the backslash and ‘x’ characters in this way:

\x90\x01\x7F
\x80\x00\x00

As a second example, MIDI SYSEX messages can be nearly any length but are framed by the bytes $F0 and F7.  An example message might look like this in Crestron format:

\xF0\x01\x02\x03\x04\x05\x06\xF7

One way to quickly troubleshoot this system in the field is to connect a MIDI cable from the DecaBox’s ‘MIDI Out’ to ‘MIDI In’ connectors. This gives loopback, and makes it easy to confirm that the correct messages are being sent.  Occasionally we entertain tech support calls where we learn that a control system is sending out a nine-byte string:

'$" + "9" + "0" + "$" + "0" + "1" + "$" + "F" + "7"

rather than three raw bytes of data…  As always, if you need tech support during installation or programming, we’re overjoyed to help.  Contact information is at the top of this page.

Grab yours here:

buy-now

 Posted by at 3:56 pm

  to “Decabox: Bidirectional MIDI to RS-232”

  1. […] A new firmware personality for the DecaBox which supports RS-232 to MIDI conversion.  Yes, it’s a strange one, but we’ve so far shipped it six times to various customers.  The Internet is an amazing place. […]

  2. […] we designed a personality which combines features of the RS-232 to DMX Converter and the RS-232 to MIDI firmwares.  DMX commands are generated based on this human-readable ASCII […]