Save digital data onto a Compact Cassette.
Switch branches/tags
Nothing to show
Clone or download
Latest commit ec44de3 Nov 22, 2017
Failed to load latest commit information. note about current state Nov 22, 2017
config.yml default volume to 0.1 Feb 22, 2016
tape-read.rb translate into Ruby ;) Oct 3, 2013
tape-write.rb translate into Ruby ;) Oct 3, 2013


Save digital data onto a Compact Cassette using a format resembling that of Commodore Datassette.

Needs a config file named config.yml. Example:

device: -t alsa "default"
bitlen: 16
volume: 0.98


  • encoding: ./tape-write.rb < FILE
  • decoding: ./tape-read.rb > FILE

Explanation and videos in this blog post.

NOTE (2017): This is an art project, built for fun, and not many people have even got it working. Can you find why it doesn't work? Can you perhaps fix it?

tape-write.rb encodes data from stdin to the sound card. tape-read.rb records from the sound card and decodes to stdout.

A WORD OF WARNING. Before running the script, please make sure that your speakers are turned off. For noise immunity, the signal contains a lot of power. That means it is very loud, and its spectral composition is guaranteed to turn your speakers into a long-range acoustic weapon.

Requires SoX.

© windytan (Oona Räisänen)

ISC license