Electronic – Convert MP3 recording of data casette to serial data

audiocommunicationdataserialsignal

I have a retro EMCO F1P CNC machine with a matching M1 controller that comes with mini data cassettes containing the "Machine State Data" which must be fed into registers of the controller before operation.

Unfortunately my cassette is missing, but I have managed to find this MP3 recording of it online.

The machine also supports RS232 input of this data. So my question is thus, is the format of the audio in the mp3 recognizable, and would it be possible to deduct simply by looking at the audio in the MP3 to determine how to format the equivalent RS232 data?

Some hints are to be found on page 9 in the service manual of the machine:

RS232c interface (V24 and 20mA), 150 – 2400 bd tape recorder (Phillips
MDCR) 600 signs/sec. (corresponds to 6 kbaud)

This way I would avoid having to find equipment to record the MP3 to a cassette, instead I could simply craft a binary file to send over TTY from my laptop, and even better, write a small software that would craft this file on the fly based on parameters selectable from an UI.

EDIT: Here is a picture of the cassette player:

enter image description here

Best Answer

Well, maybe. It might be helpful to look at the circuitry that processes the audio data to try to figure out what it's doing. You mentioned the spec is 600 signs per second, corresponding to 6 k baud. That seems to me like they are using some method of multiplexing 10 bits into each 'sign'. This is could well be some sort of multitone modulation where each bit is represented by a different frequency. The trick would be figuring out the specifics of how the symbols are constructed and then how to re-frame that data for transmission over the serial interface. tl;dr - it may be doable, but it will require some reverse-engineering.

Edit: after opening up the file in Audacity, it actually looks like it may be some sort of NRZ code. Looks like a 3 level format of some sort.

I'm not sure what the name is for the encoding, but it seems that it's a series of positive and negative going pulses with gaps inserted between the pulses that represent the data bits. I believe these gaps represent 1s as there are several long segments of pulses with no gaps, and it's far more likely for a binary file to have a long section of 0s than it is to have a long section of 1s. It would not be very difficult to write a script to extract the data. However, I am not sure if that data will be in the correct format to transmit via the serial port.

Success! This looks like a description of a very similar format: http://www.unige.ch/medecine/nouspikel/ti99/cassette.htm#Cassette%20tape%20format

encoding

The timings are a bit different and I think the bit levels might be inverted from what they are on your tape, but it seems like a very similar format.