以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

ピーピーガーガーエンコーダ・デコーダ py-kcsを紹介ピーガー

昔々、BASICのプログラムをカセットに記録していた時代があったが、何気に検索していたらいわゆるKCS(Kansas City Standard)方式でテキストファイルをカセット向けの音声データにエンコードしたりそれをデコードしたりするツールがあったので紹介する。
py-kcs (Encode/Decode Kansas City Standard Cassette Data)
Python 3.1.2以降で動作するソフト。とりあえず使い方とかだけ紹介。

エンコード

$ python3 kcs_encode.py thisisclean.sh thisisclean.sh.wav

エンコードしたいファイルと出力するファイルを指定する。Unsigned 8 bit, レート 9600 Hz, モノラルのWAV形式で出力される。
ただしバイナリファイルや日本語などのものは内部の変換処理の都合上エラーとなりエンコードできない。ishを知っている人はish -s 〜なりしてからエンコードするといいかもしれない。ただし容量が大きくなる=再生時間が結構長くなるが。

デコード

$ python3 kcs_decode.py thisisclean.sh.wav

KCS方式でエンコードされたWAV音声を指定。コンソールにデコード結果が出力される。デコードについてはデコード後がバイナリファイルでも問題ない?(-bオプション付けたほうがいいかも)
ファイルに出力したいときは

$ python3 kcs_decode.py thisisclean.sh.wav > thisisclean.sh

とする。

というわけでpy-kcsでエンコードしてみた例。どうやらMP3とかのロスレスじゃない方法で圧縮するとデコード時に文字化けすることがあるのでZIPで圧縮してある。
ちなみにエンコードしたファイルは先日の記事の末尾で触れたやつ。
DL: https://rita.xyz/blog/201608/kcs_test.zip
Size: 1866 Bytes
MD5: f09b30da56e6f5b4af467b43d75aca4f
SHA-1: 3dcdb4d6d2ada19c6ded21a15f63db6e9046e2bb

ZIPよりも容量がでかいプレビュー(※MP3で圧縮してあるのでWAVに変換しても正常にデコードできません)
https://rita.xyz/blog/201608/thisisclean.sh.mp3

蛇足

py-kcsで出力したデータはPC-8801MSXなどとは互換性が無いと思われる(cloadしてもエラーになるかも)。デコードはもしかしたらできるかも…?(基準周波数絡みを調整したら)