At the bottom of this document is the spec, from XTA, for the serial protocol that the DP22[46] use. Unfortunately, it's a little incomplete.
Firstly, when a command says that the channel number is `not used' then you don't even send it. Secondly, the crossover requires a straight serial cable (not null-modem) and the baud etc is set via the menu control on the front. The default seems to be 38400, 8N1.
Command 60 returns a frame in the same format as the command format given below except that the first byte is 0xa8. The channel byte isn't sent and the data consists of 8 bytes of level - one for each channel (1 to 6, A and B).
Update:
XTA Application Note # 108 Retrieving mute status from a DP224 / DP226 via RS232/485 Units: DP224, DP226 Using command 50 to upload data from units. Structure: [Hd][CntH][CntL]Hd = f0h (No Acknowledge) CntL = 8 (message length-1) CntH = 0 dev = 98 (DP226), 96 (DP224) unit = 1 to 32 format = 0 cmd = 50 chan = 0 check=Checksum = sum of all bytes AND 7fh DP226 returns 235 bytes with Mute status in byte number 42 DP224 returns 169 bytes with Mute status in byte number 32 Mute Status Byte [00fedcba] Bit (a) = Output 1 mute Status (1=Mute, 0=Unmute) Bit (b) = Output 2 mute Status (1=Mute, 0=Unmute) Etc. Example Commands: Upload Data from DP224 with unit ID 1 [f0][00][08][60][01][00][32][00][0d] Upload Data from DP226 with unit ID 5 [f0][00][08][62][05][00][32][00][13]
The following is XTA's own protocol documentation...
Both the DP226 and DP224 can be remotely controlled via the MIDI, RS232 or RS485 interfaces. The MIDI interface is an input only connection and can therefore not return any information from the units. The RS232 and RS485 interfaces allow full bi-directional control. Although only the RS485 interface allows multiple units to be controlled simultaneously, it is possible to communicate with a single device via the MIDI or RS232 interfaces and get this unit to relay all commands to its RS485 interface from which the other units may be connected.
Note: f0h refers to hexadecimal notation (f0h=240)
There are two different message structures one for MIDI that uses the system exclusive command and one for RS232 and RS485.
MIDI Structure [SYSEX][7fh][1bh][35h]<device><unit><format><cmd><chan><data>.................[E0X]
RS232/485 structure [Head][CntH][CntL]<device><unit><format><cmd><chan><data>.................[Chk]
|
Cmd |
|
Data bytes |
Chan |
|
1 |
Delay |
3 |
1-8, 7=A |
|
2 |
Gain |
2 |
1-8, 7=A |
|
3 |
Mute |
2 |
Not Used |
|
4 |
Configuration |
3 |
Not Used |
|
5 |
Display |
41 max |
Not Used |
|
6 |
HPF |
2 |
1-6 |
|
7 |
LPF |
2 |
1-6 |
|
8-23 |
PEQ section 1-16 |
4 |
1-8, 7=A |
|
24 |
Limiter |
2 |
1-6 |
|
25 |
Phase |
1 |
Not Used |
|
26 |
Store This Input |
77 |
Not Used |
|
27 |
Recall Memory |
1 |
Not Used |
|
28 |
Name Memory |
17 |
Not Used |
|
29 |
Lock Units |
21 |
Not Used |
|
30 |
Erase Memory |
1 |
Not Used |
|
31 |
Store This Output |
215 |
Not Used |
|
32 |
System Mute |
1 |
Not Used |
|
33 |
Automatic Limiters |
1 |
Not Used |
|
34 |
Reset Input Eq. |
1 |
Not Used |
|
60 |
Request Meter Data |
0 |
Not Used |
Data Formats
[1] Delay
= 3 bytes
(0000xxxx), (0yyyyyyy), (0zzzzzzz)
Delay in
2.6uS steps = 18bit word = 000000xx,xxyyyyyy, yzzzzzzz.
e.g. Set
Output 3 of Unit ID 2 a DP226 to 2.5 milliseconds
MIDI
=[f0h] [7fh] [1bh] [35h] [62h] [02h] [00h] [01h] [03h] [00h] [07h] [40h]
[f7h]
RS =[f0h] [00h] [0bh] [62h] [02h] [00h] [01h]
[03h] [00h] [07h] [40h] [2ah]
[2] Gain
= 2 bytes
(0xxxxxxx), (0yyyyyyy) 14bit word=00xxxxxx.xyyyyyyy.
(0-550) = Attenuation in 0.1dB steps. (Below
+15.0dB)
e.g. Set
Input B of Unit ID 4 a DP224 to +1.8dB.
MIDI
=[f0h] [7fh] [1bh] [35h] [60h] [04h] [00h] [02h] [08h] [01h] [04h] [f7h]
RS =[f0h] [00h] [0ah] [60h] [04h] [00h] [02h]
[08h] [01h] [04h] [6dh]
[3] Mute
= 2 bytes
(00fedcba), (000000hg)
a = Output
1 b=2 etc., g = Input A, h=Input B [0 = Norm,1 = Mute].
e.g. Mute
Output 5 of all DP226s.
MIDI
=[f0h] [7fh] [1bh] [35h] [62h] [00h] [00h] [03h] [10h] [00h] [f7h]
RS =[f0h] [00h] [09h] [62h] [00h] [00h] [03h]
[10h] [00h] [6eh]
[4] Configuration
= 3 bytes
(0cbbaaaa),(0000gfed),(0iiioooo)
Configuration
= 0000aaaa (0-15) Subformat = 000000bb (0-3)
PrePost =
c, 16Peq = d, Abswap = e, AutoLim = f, System Mute = g.
InGangMap
= iii, OutGangMap= oooo;
[5] Display
= Displays a (ascii) message on unit screen (note: terminate with a zero)
[6] Highpass Filter
= 2 Bytes (0yyyyyyy),(00ww0zzz)
Freq = (0000000w,wyyyyyyy). (0-511) see frequency table.
Type = (00000zzz) (0-6) (0=12dB Bessel, 1=12dB Butterworth,
2=18dB Bessel, 3=18dB Butterworth,
4=24dB Bessel, 5=24dB Butterworth
6=24dB Linkwitz-Riley).
e.g. Set
Output 1s highpass filter of Unit ID 5 a DP224 to 1kHz, 24dB Butterworth.
MIDI
=[f0h] [7fh] [1bh] [35h] [60h] [05h] [00h] [06h] [01h] [7ch] [15h] [f7h]
RS =[f0h] [00h] [0ah] [60h] [05h] [00h] [06h]
[01h] [7ch] [15h] [77h]
[7] Lowpass Filter
= 2 Bytes (0yyyyyyy),(00ww0zzz)
see Highpass filter
[8-23] PEQ sections
= 4 bytes (0wwwwwww),(000bxxyy),(0zzzzzzz),(0qqqqqqq)
Parametric sections are in a logical order.
Q=0qqqqqqq (0-127) see Q table.
Freq = 0000000y,yzzzzzzz (0-511) see frequency table.
Gain =0000000x,xwwwwwww (0 - 405) see filter gain table.
Bypass = b (0=normal, 1=bypassed)
e.g. Set
PEQ 3 of Output 3 on Unit ID 5 a DP226 to 1k89Hz, +2.8dB Q 4.0
MIDI
=[f0h] [7fh] [1bh] [35h] [62h] [05h] [00h] [0ah] [03h] [7ah] [02h] [1dh] [3ch]
[f7h]
RS =[f0h] [00h] [0ch] [62h] [05h] [00h] [0ah]
[03h] [7ah] [02h] [1dh] [3ch] [45h]
[24] Limiter
= 2 Bytes
(00wwwwww),(0yyyyyzz)
Level =
(00wwwwww) (0-63) dBs below 22dB
Attack =
(000yyyyy) (0-20) see attack table
Release =
(000000zz) (0-3) see release table
e.g. Set
Limiter of Output 4 on Unit ID 1 a DP226 to +16dB, 4mS Attack 32mS
Release
MIDI
=[f0h] [7fh] [1bh] [35h] [62h] [01h] [00h] [18h] [04h] [08h] [21h] [f7h]
RS =[f0h] [00h] [0ah] [62h] [01h] [00h] [18h]
[04h] [08h] [21h] [22h]
[25] Phase
= 1 byte
(00fedcba)
a = Output
1, b=2 etc., (0 = Norm,1=Invert.)
e.g.
Invert Phase on Outputs 1,2 and3 Unit ID 3 a DP224.
MIDI
=[f0h] [7fh] [1bh] [35h] [60h] [03h] [00h] [19h] [07h] [f7h]
RS =[f0h] [00h] [08h] [60h] [03h] [00h] [19h]
[07h] [7bh]
[26] Store this A
(complete Input data)
= 77
bytes
locn(0-40)[1],
mute+In16[1], gains[4], delays[6], gangmap[1], InPeq[64]*.
Locn
0=Current else Memory.
*=
(arrange all peq's(8) for Input A then B)
[27] Recall
Memory
= 1 byte (0yyyyyyy)
Memory = yyyyyyy (1-40)= Input
Memories only 1-40
(65-73)= Input
& Output Memories 1-9.
(97-105)=Output Memories Only 1-9.
e.g. Recall Input Memory # 12 to all
DP226s
MIDI =[f0h] [7fh] [1bh] [35h] [62h]
[00h] [00h] [1ah] [0ch] [f7h]
RS
=[f0h] [00h] [08h] [62h] [00h] [00h] [1ah] [0ch] [1fh]
Note: To Globally
recall a memory without regard for unit type or ID number, it is possible to
use the MIDI Program change Command. This is acceptable via the MIDI or RS
interfaces.
Format = [coh] [nnh]
e.g. Recall Input Memory # 15 to all
connected devices
MIDI =[c0h] [0fh]
RS
=[c0h] [0fh]
[28] Name Memory
= 17
Bytes (1st = Memory number as above) remainder = name
[30] Erase Memory
= 1 byte
(0yyyyyyy)
Memory =
yyyyyyy (1-40)= Input Memories only 1-40 {0=All Input Memories}.
(65-73)= Input & Output Memories 1-9 {64=All Memories}.
(97-105)=Output Memories Only 1-9 {96=All Output Memories}.
[31] Store this B (complete Output data)
= 215
bytes
locn(0-40)[1]
,config[2] ,gangmap[1], gains[12], delay[18], mute[1], phase[1] , Output
filters+Lims[156]+Lock
Locn
0=Current else Memory.
*=
(Arrange Hpf, Lpf, Peq(5),Lim for Out 1 then 2 etc.)
[32] System Mute
= 1 Byte
(000000xy)
System
Mute = x, Temp Mute=y .
[33] Automatic Time Constants (Limiters)
= 1 Byte
0=Manual
Time Constants, 1=Automatic.
[34] Reset Input Parametrics
= 1 Byte
0= Input A
only, 1= Inputs A & B.
Frequency table
(12-409)
The frequency steps are 1/36 of an octave based at 7.8125
Hz.
To calculate frequency from the table value x: 7.8125 *
2(x/36)
i.e. 252=1kHz.
The Parametrics have a range of 48 - 408. (19.7Hz - 20k2Hz)
The HPF has a range of 12 - 396. ( < 10Hz (effectively bypassed) 16kHz).
The LPF has a range of 78 409. (35Hz 22kHz (effectively
bypassed)).
Q table
(0-102)
There are 101 Q values from 128 to 0.40.
To calculate the Q from the table value x : 0.25 * 2((108-x)/12)
i.e. 60= a Q of 4.0;
Note: a Q of 101 = Low shelf and a Q of 102 =High
shelf.
Filter gain table
(0 - 405)
For the values 0 to 400 these are 0.1dB steps below
+15dB
i.e. 0=+15dB, 20=+13dB, 150=0dB, 400= -25dB.
Value 401= -26dB,
402= -27dB. 405= -30dB.
Attack table (0 -
20)
To calculate the Attack time from the table value x : 0.25 * 2(x/2)
i.e. 7=2.83mS.
Release table (0
- 3)
0= Attack x 4, 1= Attack x 8, 2= Attack x 16, 3= Attack x 32,
4= Attack x 2.
| / | Root |
| Alternate | The Weird and Wonderful |
| Backlinks | What are backlinks |
| John Gilmore | What's Wrong with Copy Protection |
| Archives | Blog Archives |
| One | Archive 1 |
| Two | Archive 2 |
| Three | Archive 3 |
| Four | Archive 4 |
| Five | Archive 5 |
| Six | Archive 6 |
| Seven | Archive 7 |
| Eight | Archive 8 |
| Nine | Archive 9 |
| Ten | Archive 10 |
| Eleven | Archive 11 |
| Twelve | Archive 12 |
| Thirteen | Archive 13 |
| Fourteen | Archive 14 |
| Fifteen | Archive 15 |
| Sixteen | Archive 16 |
| Seventeen | Archive 17 |
| Eighteen | Archive 18 |
| Nineteen | Archive 19 |
| Twenty | Archive 20 |
| Twenty One | Archive 21 |
| Twenty Two | Archive 22 |
| Twenty Three | Archive 23 |
| Twenty Four | Archive 24 |
| Twenty Five | Archive 25 |
| Twenty Six | Archive 26 |
| Twenty Seven | Archive 27 |
| Twenty Eight | Archive 28 |
| Twenty Nine | Archive 29 |
| Thirty | Archive 30 |
| Photos | Poor People Caught on Film |
| Jack and the Beanstalk | Jack and the Beanstalk |
| RIP Scan | Results of a Stage Scan Fire |
| Yosemite | Yosemite National Park |
| Projects | Incomplete things from the lab |
| Seagull's Bane | Linux Automounter |
| bttrackd | BitTorrent Tracker |
| CAPTCHA | CAPTCHA CGI script |
| Conserv | Console Serving |
| Deerpark | Using Tor with Firefox/1.1 (Deerpark) |
| DNSFix | Fixing DNS |
| Xovers | XTA Crossover Control |
| IAFS | Archive Org Storage |
| JBIG2 | JBIG2 Encoder |
| Verify | PGP Key Verifier |
| MaxFlow | Maximal Flow in Python |
| PyBloom | Bloom Filters in Python |
| pyGnuTLS | Python wrapping of GnuTLS |
| Sxmap | Apache SuEXEC Map |
| Hellard | Union Server Notes |
| Recordings | Free recordings |
| ICSM Choir | St Paul's Church |
| School | Ancient School Stuff |
| Writings | Who knows |
| Cap Systems | Capability Systems |
| Intro | Introduction to me |
| Suprema | JMC2 Group Project |
| MP Letters | Letters I've written to my MP |
| Sound | Sound With Dramsoc |
| SyncThreading | The wonders of user-land threads |