Advanced Python Training
In Chicago with David Beazley

  • Practical Python Programming
  • Advanced Python Mastery
  • Concurrency and Distributed Systems
  • Click here for more details!

    py-kcs (Encode/Decode Kansas City Standard Cassette Audio Data

    Author: David Beazley (

    [ Download ]

    This package provides a pair of scripts, and that encode and decode WAV audio files containing data encoded in the Kansas City Standard as used on some of the first home computers. In my case, an Ohio Scientific Superboard II from 1978. For more information on KCS encoding, see


    First of all, you need to install Python-3.1.2 or newer on your system.

    To encode a text file into a WAV file suitable for playback, do this:

    % python3 input.txt output.wav

    This reads the file 'input.txt' and writes a WAV file 'output.wav'. The resulting WAV file is encoded in mono with a framerate of 9600 Hz.

    To decode a WAV file containing KCS data that you have recorded, do this:

    % python3 input.wav

    Decoded text contained in the WAV file will be printed to standard output. This decoding process will strip NULL bytes and convert line endings to the native line endings for your platform.

    If you want to decode raw binary data, type this:

    % python3 -b input.wav

    In this case, output is still directed to standard output, but is exactly as found in the audio (including all NULL bytes).

    More Information

    See the following blog posts for more information:


    This is just a fun personal project for me. If you use these scripts for a vintage computing project, send me email ( and let me know about it. --Dave