データレコーダーのエミュレータを作ってみた (その5)

  • 2011/09/11(日) 22:06:26

前回の続きです。
「きちんとwav化されていればPWM出力を音量調節するだけで、データレコーダーを置き換えることができる」
というところまでわかりましたが、「きちんとしたwav化」というところが問題です。
どのようにwav形式へ変換するとよいのかをいろいろと検証してみました。

まずは既存のエミュレータで使用できる形式のデータ(t88やcmtファイル)を変換した場合、全くエラーなく読み込めることがわかりました。
使用したのは、HAL_8999氏作成のPC-8001を基本としたエミュレータ「j80」周辺ツールとして公開されている「pcm8001」です。

簡単に使い方を記載しますと、
1.pcm8001を起動。
2.t88などのテープイメージを読み込み。
3.出力の設定をちょっとだけ変更する
#「Default」の中でbaud rateが変更できます。PC-8001のイメージなら600で、PC-8801なら1200など機種、もとのテープによって変更です。
#Configureは特に変更せずにOKでした。「SquareWave(Alt)」「Sample Rate 48000Hz」「Play Speed 100%」です。
4.「File」-「Save As」で保存。

できたwavファイルを「SoundEngine Free」で確認してみると、こんな感じ。

#HAL_8999氏にお伺いしたところ、サイン波3波の合成で作成されているとのことでした。
ちなみに

サイン波の合成ではなく純粋に矩形波として出力するとこれ。


サイン波としての出力はこれ。

「SoundEngine Free」の説明は基本的に割愛しますが、このソフトを用いた場合の推奨される録音音量は右の録音レベルで言う黄色のところ(-3dB〜-6dB)です。
「pcm8001」の出力と比較してみると、-3dBほどで録音し、多少の波形の歪みは-1.5dB以下になる程度で録音でしょうか?
#この「SoundEngine Free」の波形っていったい何なのか?という疑問は残ります。
#これってなんですか?知っている方、お願いします。

でも、これ、PC上でのwavファイルでの問題なので、実際のデータレコーダーで出力されるものや、csaveなどでセーブされる時の出力がどうなっているのか?とはあんまり関係ないような気がしました。

結 局のところ「AVRからの出力」ということろで音量など規定されてしまっていますので、wav化には 「クリッピングが発生しない」「音量が小さすぎない(SoundEngineFreeで黄色未満にならない程度)」「ノイズがない(もしくは少ない)もの が望ましい」で大丈夫と思います。
ただしAVRからの出力先にアンプを用意して、実際のデータレコーダーの出力と同等にする必要があると考えられたので、前回のようなアンプを追加することで、問題なくロードできることが確認できました。

では実際のデータレコーダーからの出力がどの程度なのか?というとこです。
私の環境ではVUメーターなどすぐに用意できないので、とりあえず実機でエラーが出ずにロードできた状態の音量でデータレコーダーからの入力を一定のマイクボリュームでwavに保存してみました。

安いサウンドカード、「Sound Blaster 5.1 VX」で録音しました。ライン入力でボリュームはほぼ最大です。
使用したテープはPC-8001、PC-8801、MSXのものです。

まずは三洋電機

次にNEC

最後、富士通です。

おまけとしてPIONEERの音楽用プレイヤー

すべて同じテープ(MSXのハイドライド)を再生していますが、データレコーダーは矩形波で出力されています。
音楽用のプレイヤーは聴覚上の波形を意識して作られていると思われるので、綺麗な波形ではあるのですが、これでPC上で読み込めるか?という問題があると思います。
なので、wav化する際はデータレコーダーを使用することが必要と思われます。

三洋電機のデータレコーダーがもっともエラーが少ないので、こちらからwavにしたものを再生させて、AVRの出力を見た物がこれ。


波形にはノイズが乗ってしまい、音量も録音時から-3dB以上小さくなってしまっていました。
#どうしてこれで600ボーのPC-8001は大丈夫なんだろう?
ということで、アンプとフィルターを使って調整してみました。
その波形がこちら。

ほとんど三洋電機のデータレコーダーと遜色なく、この状態でエラーなく読み込みが可能でした。

ということで、もとのテープの状態が良い場合は
「クリッピングが発生しない」
「音量が小さすぎない(SoundEngineFreeで黄色未満にならない程度)」
「ノイズがない(もしくは少ない)もの が望ましい」
で問題なくロード可能だったのが前回までの回路で確認できました。
ではちょっと問題ある場合はどうでしょう?

実機+データレコーダーでもエラーが出やすいテープは、そのままwav化してもエラーが当然でます。また、一旦エラーが出てしまっているwavは何度ロードしても当然同じヶ所でエラーが出ます。
やっぱり厳しいです。

私の持っている中で、特にひどいテープがこれ。

ハドソンの「ベジタブルクラッシュ」
実機とデータレコーダーでもエラーが起こります。
しかもハドソンのテープはA面しか録音されておらず、「A面がダメならB面をwav化」が使えません。

これらのwavをどうするか?
ここでさらに「j80」の周辺ツール「cmt8001」を利用しました。
このツールは本来wav化したテープの音声をcmt形式に変換し、エミュレータで使用する為のものですが、wavの波形補正(ノイズ除去など)を行えるスグレモノです。
#さらにライン入力などから録音もできます。

この「cmt8001」のwav2wavの機能を利用します。
詳しいことはreadmeなどを参照してください。
使用できるwavは「22050Hz以上、8ビット、モノラル」でないとダメなので変換します。
私はこれも「SoundEngine Free」を利用しました。
次にこのwavを指定して開きます。
私の環境では、Low Pass Filterを普通(1段階)とHigh Pass Filterを有効にして、ノイズ補正を行うとうまくいくことが多かったです。

#この画面のように設定します。
「FIle」-「save "mod.wav" 」を選択して保存です。
多段ロードのテープ(BASICのローダー+いくつものマシン語とか、600ボートと1200ボーの混在とか)も一度に全体を通して補正して問題ありませんでした。

大概のテープはこれでうまく行きましたが「ベジタブルクラッシュ」はまだダメでした。
その次の手段はさらに「cmt8001」を利用してcmt形式にした後、「pcm8001」を利用してwavに戻すです。
先程のwavの補正以上にcmt8001の読み取り能力は高いです。
多少のスペースやマークのズレも問題なくFSKに変換してくれます。
cmt形式にする際の注意はボーレートを正しく指定することでしょうか。
先ほども書きましたがPC-8801は基本1200ボーですので、1200ボーを指定してください。
#600ボーのテープは600ボーですよ。念の為
#load”cas2:”やモニターでR2が600ボーです。
それで下の「Convert」ボタンでcmtに変換されればOKです。
エミュレータでcmt形式を利用してみて動作すれば、「pcm8001」で戻したwavは全くエラーなく読み込めるので、それでwav化してみました。


こんな感じで「ベジタブルクラッシュ」も動作しました。
当然ですが、一旦正しく読み込めるwavが作成できたら、以後はエラーなく何度でも読み込めます。

ということでテープのwav化についてまとめると
1、出来ることなら良い状態のテープを用意する。実機+データレコーダーでエラーが出るようであれば厳しい。
2、「クリッピングが発生しない程度」「小さすぎない音量」「ノイズがない(もしくは少ない)テープを利用」でwav化。
でだいたいのテープがOKですが、エラーが発生する場合は
i,A、B面に録音されているテープはB面からwav化するなどしてみる。
ii,それでもダメなら、wavのノイズ補正を行う(cmt8001を利用するなどして、バンドパスフィルターを掛けた補正など)
iii,まだダメなら、一旦エミュレータで起動できる形式へ変換(cmt8001やwav2T88などを利用してcmtやT88など)し、「pcm8001」でwavに戻す。
ということを試すことで、手持ちのテープはすべて動作させることが出来ました。

では、実機のセーブではどんな波形になっているのでしょうか?
次はその辺り、見てみます。
では

この記事に対するトラックバック

この記事のトラックバックURL

この記事に対するコメント

カセット懐かしいです昔自前のルーチンで3000BAUD近く出していたんですけどねw
自前のつもりだったんですが偶然にもMFM変調といってフロッピーの記録方式と一緒でしたw
テープのワゥフラッターよりテープレコーダーやテープの相性でスレッショルドが定まらずにタイミングがずれて読めなくなってしまうんですよね。
テープとレコーダーの組み合わせを限定できればもっと速いボーレイトも可能なんですが、人それぞれの環境を考慮すると結局は1800くらいが無難って感じでした。

  • 投稿者: uda
  • URL
  • 2011/09/12(月) 14:11:02
  • [編集]

出力回路にアンプは必要です?

100Ωのボリュームで出口に1000μのコンデンサーでは駄目でしょうかね?

  • 投稿者: uda
  • URL
  • 2011/09/12(月) 14:27:51
  • [編集]

連投すいません、

よく考えたら当時レコーダーの音量6~8くらいで調整してたからヘッドフォン端子に印加される電圧は20Vppくらいあったような気がします。
チャージポンプ回路入れてアンプ組んだ方がヨカですかね^^;

  • 投稿者: uda
  • URL
  • 2011/09/12(月) 14:41:21
  • [編集]

コメント、ありがとうございます。
なるほど!あの当時、どうやって3000ボーとか7000ボーとか出してるんだろう?と思っていましたが、MFM変調とかすればいいんですね。ただ確かに当時のテープデッキを考えれば、ウィンドウ(ビットセル)が同一のタイミングって難しいかもですね。

アンプの件ですが、実はアナログ回路は苦手ですw
オシロとかでちゃんと測った方がよいとは思っているのですが、まだやっていません。
部品点数も少なくなにかよい方法があったらお教えください。
データレコーダーの出力自体をスピーカーにつなぐとかなりの爆音なので、相当アンプされているかと思ったため、こんな回路にしてしまいました。
20Vppもあるんですかね。見てみます。

この記事にコメントする

管理者にだけ表示を許可する