テープイメージ化ツール「tapecnv」
- 使い方
本プログラムは、PC−6001シリーズ用のテープデータをイメージ化するツールです。
まだまだ研究中で、このプログラムも作成途中のもなので、色々不具合等あるかと思われます。利用についてはそのあたりご注意ください。
JAVAで作っていますので、利用にあたりJAVAランタイムをPCにインストールしておく必要があります。なお、JAVAが動作する環境であればWindows以外でも動くと思われますが試していません。JAVAは11で動作確認をしています。(JARファイルはWindowsの場合、JAVAランタイムをインストールすれば関連付けされると思います)
カセットテープとPCをオーディオケーブルで接続し、テープデータを録音ソフト(Audacity等)で録音してWAVファイルを作成します。
本プログラムを起動してloadボタンを押してWAVファイルを選びます。使用するWAVファイルは、サンプリングレートや8bit/16bitは自動で判定します。ステレオの場合はL音声のみ使用します。ただし変換精度の関係で48000Hz/16bitで用意することをお勧めします。
analysisボタンを押すと解析してデータ化します。saveボタンでデータを保存することができます。保存したイメージはエミュレーター等で読み込むことができるようになります。
状態の良いテープであれば、そのまま変換してエミュレーターで利用できる可能性がありますが、基本的には何かしらのごみデータが紛れていたり、データが2つ以上に分割されているテープの場合はギャップ調整をしないとエミュレータで読み取りエラーが発生します。
ですので、保存したイメージデータをバイナリファイル編集ツール(QuickBe等)で調整して下さい。
BASICローダのあるものはヘッダフォーマットが「D3,D3,D3,D3,D3,D3,D3,D3,D3,D3,??,??,??,??,??,??」(??はファイル名)で始まりますので、変換結果を確認する際の参考にしてください。
- 機能説明
- loadボタン
wavファイルの読み込み。wavファイルかどうかをチェックしていないので、wavファイル以外を読み込ませた場合の動作は不定です。読み込みが成功したら画面に波形の一部が表示されます。
- analysisボタン
wavファイルを解析してバイナリデータを生成します。処理に少し時間がかかります。(お待ちください画面は未実装です)解析が終わるとダンプリストを表示します。
- saveボタン
バイナリデータをファイルに保存します。解析が終わっていないとボタンは押せません。
- normal/reverse選択ボタン
バイナリデータを正数側の波形で抽出するか、負数側の波形で抽出するかを選びます。変更後は再度analysisボタンを押して下さい。
- +/-ボタンとその間にあるテキストボックスの数値
wav波形の表示サイズを100%倍率で指定します。少なくすればするほど全体を見通す事が出来ます。大きくすれば拡大して表示します。
- n-line/r-lineチェックボックス
解析の結果、波の起伏位置を表示します。n-lineが正数側に増加する波形、r-lineが負数側に減少する側の波形位置となります。
- <</>>ボタン
解析の結果、波形と判断した位置に画面をスクロールします。スクロール位置は画面の左端を基準とします。隣の数値表示は現在表示している波形の番号とその合計です。
- 波形表示欄
ファイルから読み取ったwavデータを緑の線で波形として表示します。表示欄下側のスクロールバーで表示位置をスクロールする事ができます。解析の結果、波形と判断した位置には赤と黄色の縦線、スタートビットには青色、0/1ビット(1は2個ペアで)にはそれぞれ色違いの灰色が塗られます。
- バイナリデータ表示欄
解析の結果であるバイナリデータを表示します。画面に収まりきらない場合は縦方向のスクロールバーでスクロールさせる事が可能です。また、バイナリデータのデータ部分をマウスでクリックすると、波形表示欄にてそのデータの波形の位置までスクロールします。これにより正しくデータ化されたのか、ノイズや誤認識なのか波形から判断出来ます。ノイズや誤認識で不要となるバイナリデータは右側のdelチェックボックスにチェックを入れると**表示となり、セーブ時にスキップさせる事が出来ます。また、同じくedit欄のテキストボックスにて直接16進数の数値を入力する事で編集する事も可能です。
- analysis propeties欄
解析パラメータを指定します。初期値は私個人の実験による最終値です。
wave spacingとangleは波の角度の閾値です。この角度未満の波は無視します。spacingの数値分先の値との角度をatanで算出し角度を判断します。
波形が矩形波の場合はspacingは少なく、角度も60度より大きいほうが判別しやすくなります。波形がなだらかな山だとspacingは4以上で、角度も60度前後が良いと思われます。
xxHz minimum error/maximum errorはそれぞれの周波数の幅を許容する閾値です。minimumは1.1以上でないと正しく認識されません。数値を大きくすれば誤差を吸収しやすくなりますが2を超えると逆に認識し辛くなる傾向にあります。maximumは2以上で大きくすれば誤差を吸収しやすくなります。但し3.5を超えると認識率が悪くなります。maximumは基本2以上になります。これは波の立ち上がり/立ち下がりのみ見て判断しているため、周波数の1/4しか見ていないため、最小で2以上となります。
- 変換のコツ
最初は初期値で変換してみて下さい。2つ以上に分かれているものは別々のwavファイルにしたほうがノイズによる誤データが含まれにくいと思います。
1バイト目が誤って0xFFに認識されやすいので取り除いて下さい。(2400hzのピー音の鳴り始めに1200hzに近い波形が出現しやすいため)
BASICの場合は先に書いた通りBASICのフォーマット通りに変換されているかが目安になります。他にも全体を通してテキストメッセージが含まれるデータの場合はそのテキストがバイナリデータ表示欄で確認できれば目安になります。
無音部分などが誤データになっていないか波形を見ながらバイナリデータを確認して、不要なデータを削除して下さい。
上手くいかない場合は次のステップで調整してみて下さい。
- normal/reverseを切り替えてみる
- 録音音量を上げて/下げてwavファイルを作り直してみる
ノイズが多い場合は音量を下げた方が認識しやすくなります。
- analisys propetiesのspacingを2にするまたは6にしてみる
- maximum/minimumを0.1単位で増減させてみる
- 技術的なお話
準備中
- ファイルのダウンロードはこちら(Googleドライブ)
enuou