The MD-COM project
a PC interface for Sony MZ-R37/55 and more


19/02/01: Derek Grice has tested the interface with MZ-R70 and it works if you title each track separately.
A software correction for MZ-R70 will be released in several days. At this point, the result should
be the same with MZ-R90 as resistors networks are the same and maybe with the last Sony units. Any volunteers ?

02/09/00: French Users: A non-personal translation of this page is available at this link.
12/07/00: MDCOM 1.01 is available. The same interface but titling is faster.


The MD-Com project: Overview

Titling your minidiscs on a portable MD recorder is not an easy thing because you have to deal with a limited number of keys. The hardware proposed in this page will help you to title your MDs using your PC and a cheap self-powered interface through the parallel port. The proposed hardware is dedicated to the Sony MZ-R55 and MZ-R37. Its concepts are simple so you may adapt it to units from other manufacturers. In fact, the hardware proposed here is itself based on the work Thomas Meier did on Sharp MS-722 units. The software is obviously different but this page intends to explain how to make your own PC->MD interface.

A picture of the interface.

Disclaimers: the hardware and software in this page come with NO WARRANTY.
This interface may not be sold without the agreement of the author.



Each compagny has developped a protocol for their remote control including special keys sequence to title the tracks or the discs and special connectors but they often use resistors networks for the remote control. The principle is very simple: when you press a key on the remote control, you close a circuit involving resistors with different values. For each key, the closed circuit has a unique total resistance. For Sony MZ-R37/55, the values for each key are in the following table:

Key Total
R101 R102 R103 R104 R105 R106 R107 R108 R109 R110 R111 R1(12) R1(13) R1(14) R1(15)
  ohms 1000 1300 1300 27 1500 56 1800 150 1500 1500 2000 5600 3000 1500 1000
Previous/Back 1 000 1000                            
Next/Play 3 627 1000 1300 1300 27                      
Pause 5 156 1000 1300 1300   1500 56                  
Stop 7 050 1000 1300 1300   1500   1800 150              
Volume - 8 400 1000 1300 1300   1500   1800   1500            
Volume + 9 900 1000 1300 1300   1500   1800   1500 1500          
Track Mark 11 900 1000 1300 1300   1500   1800   1500 1500 2000        
Mode 14 000 1000 1300 1300   1500   1800   1500     5600      
Display 17 000 1000 1300 1300   1500   1800   1500     5600 3000    
Record 19 500 1000 1300 1300   1500   1800   1500     5600 3000 1500 1000
(Sources: Leon Woestenberg's work on RM-MZR30MP Remote Control).


Design of the interface

So, we have just 10 keys to control all the unit functions. As this project is designed for titling MD, not all keys are useful. The problem is that we have 8 channels on the parallel port and we have to power the interface with the printer port. It is impossible to connect directly electromagnetic relays because they will damage the printer port. The use of transistors or ICs is a solution.

Thomas Meier used CD 4051, a single 8-Channel Analog Multiplexer/Demultiplexer. This IC allows to control digitally 8 analog switches with 3 logical ports. 1 other logical port called "inhibit" is dedicated to inhibit the 3 logical ports and to set each output "OFF". This common component is available from standard size to SOIC size. Here is the truth table:

Inhibit A B C
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 - - -

The principle of this IC is very simple. If the inhibit port is not powered, ports A,B,C control a "switch" between the selected channel and the Out port. For this project, this IC is also convenient because we do not need to use all the keys on the remote control and we can also add enough functions to control almost completely the MZ-R55. For titling, we need:

Additionnal keys are Record and Track Mark. It is noticeable that Record key is not on the original remote control.

We have 8 functions for 8 channels which is suffisant to control efficiently the unit. The missing functions are Volume + and Volume - but this is not a problem because these keys are not very important and are even not functional when you use a line out cable.


Schematics of the interface

Here is the interface. The circuit consists mainly in a resistors network connected to the IC. The pin 1 of the connector on the MZ-R55 is the the closest pin to the headphones jack. Pin 4 is the last pin toward the Open button. For the MD connector I made a small 2-lines printed circuit board. That's all ! For the moment, no PCB schema is available (but it will be available soon). Raphael Marinier has made a Veroboard schema right here for those who do not have materials and tools to make their own PCB.



Here's a picture of my board.

You will notice my prototype has much free space on the board. It is possible to reduce its size. You may use smaller surface components or design a board where components are more aggregated.


Parts list

Here are the parts you need to build this interface. For the resistors, all parts are 1/4 W and are for some values a combination of several resistors in order to replace non-common values such as 1300 ohms. In my project, a single 1300 ohms resistor is replaced by a 1200 ohms resistor and a 100 ohms resistor placed in serial (1200+100=1300).

  • 1 CD4051 + 1 DIP support.
  • 4 diodes 1N4148.
  • 1 connector SUB-D25 male.
  • 1 ceramic capacitor 10.000 pF.
  • 1 capacitor 10 F 10V.
  • 1 resistor 27 ohms.
  • 1 resistor 56 ohms.
  • 2 resistors 100 ohms
  • 1 resistor 150 ohms.
  • 4 resistors 1000 ohms.
  • 2 resistors 1200 ohms.
  • 4 resistors 1500 ohms.
  • 1 resistor 1800 ohms.
  • 1 resistor 3000 ohms.
  • 1 resistor 5600 ohms.


Controlling the interface with your PC

First you will notice that there is no ground between the MD unit and the PC. Preliminary prototypes that used a common ground failed to work so I recommend you to use this interface when your unit is connected to a power adapter. Now, how can I activate my interface ? You have to send specific commands to the parallel port. Its address is commonly &H378 for LPT1 and &H278 for LPT2. In Basic, if you want to send commands you have to use the command Out address, Value. For my software I used a 32-bits Delphi compiler and it was necessary for me to use Assembler code in my Delphi code:

procedure outport(addr:word;vl:word);
mov dx,addr
mov ax,vl
out dx,al

with addr:=$378 for LPT1, etc...

Note: Any sent command will be effective until a new command is sent.

Command Hex Value Comments
Deactivate IC
(if activated)
&H00 If necessary, you can shutdown the power to the IC. I used it at the beginning and a the end of the program.
Activate IC
No key
&HF8 IC is powered but no channel is "ON". Very useful to tell the MD that no virtual key is pressed. Ports are inhibited.
Display &HF0 Display command is sent. Necessary to enter in titling mode. Port #0 is activated.
Play &HF1 Play command is sent. Port #1 is activated.
Back &HF2 Back command is sent. Port #2 is activated.
Record &HF3 Record command is sent. The unit enter in pause mode and is ready to record. Port #3 is activated.
Pause &HF4 Pause command is sent. Port #4 is activated.
Mode &HF5 Mode command is sent. My prototype seems to work only when the unit is in titling mode... (why ?) Port #5 is activated.
Stop &HF6 Stop command is sent. Port #6 is activated.
Track Mark &HF7 Track Mark when the unit is recording. Port #7 is activated.

Each command to activate the MD functions is often a sequence of several commands. For example, to enter in titling mode, I
send a Display command, I wait a little in order to activate the titling mode, I send a "No Key" command and send I send a
Stop command, etc, etc... The main source code is available in order to show you these sequences. You can
download it. It contains basic procedures and more advanced and dedicated functions such as WriteData or Title that make things easier to program.


My software

Here's the first version of my software, a small 32 bits program.It remains a prototype so bugs, problems may exist.

Some infos: You can re-title a track with the help of the "Remov." checkbox. The number at the right is the number of characters the interface must remove before retitling the track. Just before titling, the program tells you to set your MD on track 1(Track 1 should be stopped and not in playback mode !) (the simplest thing to do that is to open and close the cover of the unit) and then, when you are ready, you can leave the unit alone, the program is working for you.


Important recommandations / limitations

It is highly recommended that you run this program before connecting the interface to the MD unit. At the beginning the program initializes the hardware by resetting each channel to 0. After this step, you can connect the interface safely. The use of the adaptor when titling is also highly recommanded.

Known troubleshootings:

- Sometimes titling is stopped for one or two seconds on laptop due to Power Management or computer operations. The title of the track may be wrong. If you restart to title the wrong track or disk name, the problem should be resolved. Tests made on a desktop computer were excellent (just 1 wrong character for a 300 characters titling sequence with 19 tracks). It is recommended not to use any other application and to disable any screensaver as a precaution because they may interfere with the interface operations.

- If titling is often wrong, you should try to slow the titling sequence. To do that, edit mdcom.ini and increase the valeur (initial
value: 0.01). You may do it with a MD that is not precious as a security. The 0.01 value has been successfully tested on old pentium computers with frequencies ranging from 133 to 233 Mhz.

- Remote control buttons are sometimes weak. This problem will be solved in the next version of my software.

Further versions of this software:

- my priority is to improve the speed of the program. Titling is fast and easy but my program is not perfectly reflecting all the possibilities the unit offers in titling. My program spend much time searching a space character althought you just have to press the back key to have this character or simply press Stop when you move to the right. You may win several seconds.

- one possible extend is to add some extras such as a "move tracks" function.


The last words

Comments are welcome and highly suggested. Please tell me if you plan to make your own software. Some ideas: a winamp plugin, a CD/MP3/WAVE->MD grabber, a MD->Wave grabber, etc...

I thank Raphael Marinier for his nice Veroboard schema and preliminary comments that permitted me to improve this page.


For other units...

Is it possible to adapt this board to other resistors networks. Sony MZ-R37,55,90,91 seem to be based on the same network but you will probably have to write a modified code. If you want to have more ideas, you should watch theses links:


update: December, 9th, 2000. Webmaster & Technical support: Lionel Pawlowski - Back to my homepage.