@weather 曇後雨 @title あさ〜 @category 生活 @s 0600充電開始、1300再起動。 @s 寝る前から頭痛でバファリン飲んで寝たが、起きてなお治まらず。 @title MZ-700テープデジタイズ @category PC @s 実家から発掘してきたMZ-700。まずは残っているテープのデジタイズから。データレコーダはX1用のと汎用の2台が手許にあるが、先に出てきた後者のSANYO MR-22DRで作業。 @s WAVESPECTRAで波形を見ながらWAV収録。その後taperead.exeを通そうとするが、44.1kHzでサンプリングしたためそのままでは使えず。WAVを加工してもよかったのだが、taperead.exeにソースが付いていたのでそっちを改変する方法で対応。 @s んが、どうもデータリードエラー多発。いろいろ調査してみたが、1/0の判定処理を差し替えてみたらうまく行くように。ということで、置いておく。 @ul
03:04 gorry5: 原理の話。MZの場合、0を示すビットを「100単位時間のH→100単位時間のL」、1を示すビットを「200単位時間のH→200単位時間のL」のような形で記録する
03:06 gorry5: '1011'のようなビットを書く場合、「200H,200L,100H,100L,200H,200L,200H,200L」のような形になる
03:08 gorry5: 一方、これを読み出すときは「Hが見つかってから150単位時間後がHかLか」のような方法で判定している。MZのROMでも、オリジナルのtaperead.exeでもそう
03:11 gorry5: しかしこれに歪みや揺らぎが発生すると、読み出した結果が「200H,200L,150H,100L,150H,200L,200H,200L」のようになってしまうことがある
03:14 gorry5: 150単位時間後の状態を読むのに"150H"があっちゃまずい。読み出し結果がH/Lどっちになるか運次第
03:18 gorry5: で、対策。揺れても半周期くらいで安定するなら、1周期読んでからその総時間で判定してはどうか
03:20 gorry5: 200H+200L=400, 150H+100L=250, 150H+200L=350, 200H+200L=400だから、300くらいを1/0の境目にしておけば結果として正しいことになる
03:35 gorry5: 実例、sb_fromtape.wavがテープから実際に読んだデータ。比べると興味深い URL:gorry.haun.org
03:45 gorry5: taperead_g.cppの改変具合はまさにhack。真似しちゃだめよ :D
|