Save digital data onto a Compact Cassette.
Switch branches/tags
Nothing to show
Latest commit ec44de3 Nov 22, 2017 @windytan windytan note about current state
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