Skip to content

This web-based application controls and maintains DK-Audio/DK-Technologies MSD series instruments. It runs on both macOS and Windows, providing an intuitive interface for control, diagnostics, and real-time monitoring. Leveraging modern web technologies, it ensures seamless integration and efficient operation, enhancing the usability.

License

Notifications You must be signed in to change notification settings

KarstenHervoeHansen/msd-matrix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MSD-MATRIX WEB v. 1.0

The Web-Application

  1. Introduction
  2. The User Interface
  3. The Left Sliding Menu Layout
  4. System Recovery
  5. Software Update
  6. Activation Key
  7. BIOS Mode

Technical Reference

  1. The Physical Interface

  2. The DOT Protocol

  3. The Low-Level Protocol

  4. The Original Pascal Source Codes

  5. Revisions

  6. References

Introduction

The MSD-MATRIX WEB1 system enables web-compatible browsers23 to interface with MSD4 devices, providing control, monitoring, and software maintenance capabilities.

This is open-source software. If you are interested in contributing, please contact me5.

The User Interface

Connecting

Please visit the web application for instruction1. Upon connection the Matrix screen is presented.

Matrix

From the Matrix screen all internal routings can be controlled.

The Left Sliding Menu

Display of the menu depends on the width of the browser window.

Menu Structure

Connect Page

Connect Page
Click to Connect

Main Menu

Main Menu
Preset Select
Application Select
Utility Menu
About Menu

Preset Select

Preset Select
Preset 1
Preset 2
Preset 3
Preset 4
Preset 5
Preset 6
Preset 7
Preset 8
Rename
Mark Default
Exit

Application Select

Application Select
Exit

Utility Menu

Utility Menu
Disconnect
Keyboard
Exit

Keyboard

Keyboard
KEY 1
KEY 2
KEY 3
KEY 4
KEY 5
KEY 6
KEY 7
KEY 8
Exit

About Menu

About Menu
Software Update
Purchase License
Exit

System Recovery

If the software is broken causing the unit to cycle the reset cyclus or frozen during power-up a complete reprogramming is required. When power is applied hold the leftmost key in order to force the unit in BIOS mode. It is possible to release the key and still remain in the BIOS mode but that could take a couple of attempts in order to be successfull. Alternaltively hold the key while reprogramming the unit.

Software Update

Activation Key

BIOS Mode

The BIOS Mode provides a restricted set of low-level commands for:

  • Serial communication
  • Flash memory access
  • Basic system settings
The BIOS is located in a permanent part of the FLASH memory and cannot be altered.

Entering BIOS Mode

As the last stage in a system power-up cycle the leftmost key is checked and if engaged the main program loading is halted displaying the BIOS template.

Technical Reference

The Physical Interface

The interface uses an physical RS232 serial connection configured at:

  • 9600 baud rate
  • 8 data bits
  • No parity
  • 1 stop bit (9600,8,N,1)

Alternatively, a USB serial dongle can be used.

The DOT Protocol

The protocol was developed in 1980 for the serial control of the NTP Audio Matrix 512 system for the BBC at Broadcasting House. It was later implemented in the MSD600M (from software version 5), with additional functionality.

The Protocol Flow

  • Commands & responses start with a dot (.)
  • Messages terminate with carriage return (\r)
  • An optional message field, beginning with an asterisk (*), can be appended to the command echoed in the response.

🔝

Command Layout

1 2 3 4 5 6 7 8 9 10 11
. Command ID X , Y cr
. Command ID X , Y ID X , Y cr

Matrix Commands

Set and Connect

Command S and C are handled identical and multiple crosspoint can be set in one command as shown in line two of the below table. Upto ten commands is possible in one string.

1 2 3 4 5 6 7 8 9 10 11
. S ID X1 , Y1 cr
. S ID X1 , Y1 ID X2 , Y2 cr

Example 1:

1 2 3 4 5 6 7
Command . S A 32 , 52 cr
Response . A A 32 , 52 cr

Example 2:

1 2 3 4 5 6 7
Command . S A 32 , 99 cr
Response . N A 32 , 99 cr

The command routes source 52 to output 32, with the MSD acknowledging. A negative acknowledgment ('N' in field 2) indicates out-of-range commands or an illegal identifier.

Interrogate

1 2 3 4 5 6 7
. I ID X , - cr
. I ID - , Y cr

List

1 2 3 4 5 6 7
. L ID X , - cr

Message Field

The message field starting with '*' can be attached to any command and response. In a multi-control environment, it helps filter responses effectively. Example:

1 2 3 4 5 6 7 8 9
Command . S A 32 , 52 * MY MESSAGE cr
Response . A A 32 , 52 * MY MESSAGE cr

Matrix Responses

The Power Up Responses

Matrix Identifiers

Audio Matrix A

Information Matrix I

Control and Readout P

Response Handling

The Low Level Protocol

A low-level protocol has been implemented to access the internal FLASH memory and DSP resources.

Break Start Sequence

All control sequences begin with a two-character break sequence:

  • '¦m' (hexadecimal: <0xA6><0x6D>) synchronizes the MSD protocol state machine
  • Upon entering Idle State, the MSD returns:
    • ACK (<0x05>) if successful
    • NACK (<0x04>) if unsuccessful
    • If unsuccessful, additional breaks must be sent (up to 5 retries).
    • Maximum response time: 15ms
Step Function TX RX
1 Command 1 <0xA6>
2 Command 2 <0xAD>
3 Response <0x05>

Idle State Re-entry

Upon successful execution, the MSD remains in IDLE State, ready for the next command.

Idle State Command Table

Commands assume the MSD is in IDLE state (after break). Commands available in BIOS mode are marked with "*".

HEX Function Available in BIOS Mode?
<0x00> Write_BDMA_address Yes
<0x01> WriteBDMA Yes
<0x04> WriteProgramLine No
<0x0A> ToggleProtectFlag No
<0x0E> Restart Yes
<0x0F> WriteKeyboard No
<0x10> ReadBDMAaddr No
<0x11> ReadBDMA Yes
<0x12> ReadRAMbytes No
<0x13> ReadProgramLine No
<0x14> CatchReadVar No
<0x1A> ReadProtectFlag No

Write_BDMA_address

Program of the DSP BDMA setup registers.

Step Function TX RX
1 Write Comand <0x00>
2 Response <0x05>
3 BDMA external address LSB
4 BDMA external address MSB
5 BDMA external address HSB
6 Response <0x05>
7 Stays in IDLE State

WriteBDMA

Write data to the DSP external FLASH or RAM memory.

Step Function TX RX
1 Comand <0x01>
2 Response <0x05>
3 Bytes to transmit 0xXX
4 Data BYTE
5 Data BYTE
.. Data BYTE
n Checksum BYTE
Stays in IDLE State

WriteProgramLine

This function write a program line into the internal 24 bits DSP memory. The address is set with the WriteBDMAaddr. Handle with care!!

Step Function TX RX
1 Comand <0x04>
2 Response <0x05>
3 Program Memory LSB
4 Program Memory MSB
5 Program Memory HSB
6 Stays in IDLE State

ToggleProtectFlag

Restart

Step Function TX RX
1 Restart <0x0E>

WriteKeyboard

Step Function TX RX
1 Comand <0x0F>
2 Response <0x05>
3 Key Number No
4 Response <0x05>

ReadBDMAaddr

Read back of the DSP BDMA setup registers.

Step Function TX RX
1 Comand <0x10>
2 Response <0x05>
3 BDMA external address LSB
4 BDMA external address MSB
5 BDMA external address PAGE
6 Checksum BYTE
7 Stays in IDLE State

ReadBDMA

This function return data from the DSP external byte wide FLASH or RAM memory.

Step Function TX RX
1 Comand <0x11>
2 Response <0x05>
3 Bytes to receive 0xXX
4 Data BYTE
5 Data BYTE
.. Data BYTE
n Checksum BYTE
Stays in IDLE State

ReadRAMbytes

This function return data from the on chip 16 bit wide DSP memory. The address is set with the WriteBDMAaddr command and the maximum bytes to read are 128.

Step Function TX RX
1 Comand <0x12>
2 Response <0x05>
3 Bytes to receive 0xXX
4 Data 1 MSB
5 Data 1 LSB
.. Data 2 BYTE
n Checksum BYTE
Stays in IDLE State

ReadProgramLine

This function return one 32 bits wide memory cell from the DSP Program memory.

Step Function TX RX
1 Comand <0x12>
2 Response <0x05>
3 Bytes to receive 0xXX
4 Data 1 LSB
5 Data 2 .
6 Data 3 .
7 Data 4 MSB
8 Checksum BYTE
9 Stays in IDLE State

CatchReadVar

Step Function TX RX
1 Comand <0x14>
2 Response <0x05>

ReadProtectFlag

Step Function TX RX
1 Comand <0x1F>
2 Response <0x05>

The Original Pascal Source Codes

The msd-load.exe code can be compiled using Borland's Turbo Pascal and TurboPower's libraries.

MSDLIB.PAS

MSD-LOAD.PAS

Revisions

1.0 Basic Matrix functionality MSD600M++

References

Footnotes

  1. Link to the application (https://msd.hansens.dk) 2

  2. Web Serial API (https://wicg.github.io/serial/)

  3. Serial Port Documentation (https://developer.mozilla.org/en-US/docs/Web/API/SerialPort)

  4. DK-Audio website (https://hansens.dk/pages/documentation)

  5. Contact: Karsten Hervoe Hansen kh@hansens.dk

About

This web-based application controls and maintains DK-Audio/DK-Technologies MSD series instruments. It runs on both macOS and Windows, providing an intuitive interface for control, diagnostics, and real-time monitoring. Leveraging modern web technologies, it ensures seamless integration and efficient operation, enhancing the usability.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published