3

Does anyone know of any software that will convert a file (any file, e.g. doc, zip, pdf etc) to a sound file so that it would play back like the old modem noises? It could then be "played" back on another machine and decrypted back into its original format. The idea would be to convert to the analogue sound, record via the headphone jack and then play back on another machine.

If not, does anyone know/have any ideas how I could create program to do such a thing? I can code fairly well in C# but don't really know where to start.

3
  • I doubt that every byte that could be sent, translated to a unique note. And remember that after all the noises, that got it started the noises stopped after logging on. But maybe it was a standard set of bytes that were sent and transferred through the modem at logon stage, made that classic sound. Not data that'd be different.. and notice that if there were slight differences, I reckon people got the same sound.
    – barlop
    Sep 16, 2011 at 1:09
  • That noise when you log in is a handshake sequence modemhelp.net/faqs/handshake.shtml
    – acjay
    Sep 16, 2011 at 5:22
  • On Linux you could use minimodem. It can be used as a sender / receiver and also encode / decode by file. cat file | minimodem --write 1200 -f out.flac May 4, 2023 at 10:58

3 Answers 3

1

This really depends on how technical you want to make it. If you don't really care about achieving a reasonable data rate, there are numerous simple modulation schemes you could use, such as frequency shift keying or one of the pulse modulation algorithms, PWM and PPM probably being the simplest. Where you have to be careful is in the fact that the phone lines have very limited bandwidth, so certain frequencies aren't even going to pass through.

Synthesizing your tones should not be too difficult. Look into the .NET audio APIs, I don't know much about them. Detection on the receiving end is going to be the toughest part, depending on what modulation scheme you choose. Pulse modulation will be the easiest to do, because you can simply measure the mean absolute value of the signal over a half-period of your signal, and call it a pulse if it's over some threshold. In this manner, you can convert from your analog signal to a digital signal, which can then be decoded back into the actual bytes of the data you transmitted.

Real modems use some pretty sophisticated coding, based on detailed knowledge of the telecommunications system, as well as synchronization techniques and error correction. So, it's probably pretty unrealistic to think you're going to get anywhere near 56kbps or that your system will sound like the real thing.

You only have about 7000Hz of bandwidth, so that means you cannot transmit any frequency higher than 3500Hz, and your rise and fall times are pretty long. Realistically, you might be able to get somewhere around 500bps, if your system really works well and you have a really noiseless connection.

1
  • Many thanks will look into the audio API's. I'm not actually worried about it "sounding" like a modem, I actually want to use it as a means for transferring data for a little project... yes, I know I can use a flash drive, but that would be too easy! :) Sep 22, 2011 at 23:12
2

What you are asking for is pretty straight forward whilst being awkward at the same time - when you heard the modem noise, it isn't actually data per se, but data in a specially designed protocol.

A big misconception is that all audio on a modem sounds like the initial sound - in fact, the actual sound of "data" is different, the reason why logging on always sounds the same is because it is nearly always sending pretty much the same signal/information.

So, if you want to convert data to sound, probably the simplest way would be to choose a (lossless) easier format such as MIDI, or search Codeplex/similar sites for midi components that will greatly simplify your job.

Next, I am not sure how many unique notes there are, but I assume there is at least 65025 different possible unique notes(through pitch etc.), - just as a raw example, you could open the source file as a raw data file and basically map each hex double to a note.

So, basically you will be artificially creating a sound file by giving it the right header/footer, then simply padding it out by encoding each byte of the file as a different note. In addition, you can have a checksum/end and start character if you so wish.

You will need to build an encoder and decoder which will not be very easy, but, I do not see this being impossible and you should be able to produce an audio sound! ... I doubt it will sound like a modem - but - who knows!

Please note - I am not a sound engineer... If I am wrong about MIDI, choose another format... Judge this based on the idea!

6
  • 1
    MOdulation/DEModulation :) Sep 16, 2011 at 0:12
  • @Techie007 - Nice! Thanks... I didn't have a clue that is what it actually stood for... never really gave it a moment's though... Added to my reading queue! Sep 16, 2011 at 0:18
  • 1
    @techie007 Not quite. It stands for Modulator Demodulator.
    – barlop
    Sep 16, 2011 at 1:05
  • @Barlop: Really? ;) I wasn't trying to define what modem means, just showing relation, in short form. :) Sep 16, 2011 at 1:23
  • Just so you know, MIDI only has 128 note values (tomscarff.110mb.com/midi_analyser/…), and because the POTS doesn't transmit below 300Hz (en.wikipedia.org/wiki/Plain_old_telephone_service), you've got to throw out everything below D#4 (phy.mtu.edu/~suits/notefreqs.html). That only leaves you with 64 note values. You could encode the data to these using base-64, but you still have the issue of having to discriminate between those notes on the receiving end, which is non-trivial.
    – acjay
    Sep 16, 2011 at 5:29
2

Try the MixW software. We, the HAMS, are already using this software for file transfer over radio. It converts the data into voice and transmit through radio as normal voice. It is a simplex type communication protocol so the speed rate is very low.

Not the answer you're looking for? Browse other questions tagged .