以下省略!

タイダルウ(ry 毎日1記事執筆運動実施中。

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

f:id:abyssluke:20160811203129p:plain:w200:left昔々、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: http://rita.xyz/blog/201608/kcs_test.zip
Size: 1866 Bytes
MD5: f09b30da56e6f5b4af467b43d75aca4f
SHA-1: 3dcdb4d6d2ada19c6ded21a15f63db6e9046e2bb

ZIPよりも容量がでかいプレビュー(※MP3で圧縮してあるのでWAVに変換しても正常にデコードできません)
Download

蛇足

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

実験中:よい子は次のアドレスにメールを絶対に送らないでください。場合によっては晒しあげされますよ。 ivyrush+htnb.20170313@rita-ch.com viande@rita-ch.com