a PC interface for Sony MZ-R37/55 and more
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 ?
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:
|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|
|(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:
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.
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).
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:
with addr:=$378 for LPT1, etc...
Note: Any sent command will be effective until a new command is sent.
|&H00||If necessary, you can shutdown the power to the IC. I used it at the beginning and a the end of the program.|
|&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.|
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.
the first version of my software, a small 32 bits program.It
remains a prototype so bugs, problems may exist.
DOWNLOAD IT !
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.
- 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.
titling is often wrong, you should try to slow the titling
sequence. To do that, edit mdcom.ini and increase the
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.