Cory Menscher writes:

As part of the NYU ITP “5in5” event this week, I created the Asterisk File Transfer Protocol. Using the CSound audio programming language, I wrote a PHP script that converts a binary file into an audio WAV file based on the “Kansas City standard”, created in 1975, for transferring binary files via audio cassette. However, instead of a cassette, a user can dial my extension on an Asterisk VoIP PBX server and “retrieve” a file (an 8kb jpeg image) at 300 baud over POTS. You can access the file by dialing (212) 796-0729 ext. 160.

In reality, the audio quality of the GSM codec I was limited to by the server probably precludes one from ACTUALLY downloading the file, but it’s still fun! If you want to hear a higher-fidelity version of the file you can access it at

Corey posted the source he used to generate the encoded WAV from an image, so you can see the nuts and bolts of using CSound to generate audio data in PHP. It’d be neat to see the decoder half of this, but it’s been left as an exercise for the reader.

I have fond memories of saving and loading files from a C64 datasette drive like this, so it’s pretty cool to see this sort of thing done in PHP.

The Asterisk File Transfer Protocol