2005,09,26, Monday
テープデータのリマスター
仕事が忙しいと言っている割に、夜中に帰ってきては短い時間ゴソゴソと現実逃避をして
遊んでいます(笑)
さて、今回の実験は、折角カセットインターフェースを作ったんだから、何かしないと!!
ということで、
という疑問から始まって、テープデータをエンコード・デコードして
リマスターしてしまおうというものです。
遊んでいます(笑)
さて、今回の実験は、折角カセットインターフェースを作ったんだから、何かしないと!!
ということで、
ソフトで生成した綺麗な方形波は正常に読み込めるのか?
という疑問から始まって、テープデータをエンコード・デコードして
リマスターしてしまおうというものです。
機械が生成する波形というものは、何に限らず必ず訛るものです。
また、記録環境によってはノイズが乗ったりします。
これがテープに記録されるとさらに訛ってしまい、さらにさらにテープの経年劣化で
いずれは正常なデータが取り出せなくなります。
だったら、テープをPCMに録音して保存しておけばエェやんということになりますが、
そもそもテープから記録された音声は既に綺麗じゃないし、保存するにしても
PCMのデータ量は莫大なもの(今のPC環境からすれば、それほどじゃないかもですが)
になります。
そこで、PCで一度エンコードして、バイナリデータとして保存しておき、必要なときに
デコードしてPCM化すると、データ量も少なくなり、ノイズも歪みも無い綺麗な波形が
常に得られるからエェんでないかい?と考えました。
これが成功すれば、夢の100%エラーフリーが実現し、もう祈る気持ちでデータレコーダを
見つめるようなこともなくなります(笑)
(サウンドカードから出るデータはアナログ信号であることと、ケーブルに乗るノイズは
無視の方向で……)
これらのことは、既に何処かで誰かがやられている気もしますが、今回は
広いユニバーサル領域の布石ということで、これまた自前で全てやってみたいと思います。
なんだか最近、車輪の再発明ばっかりしてるなぁ。。
というわけで、早速実験開始。
MSX2テクニカルハンドブックを片手に、バイナリデータをピーガー音にデコードする
ツールを適当に作って、実機に食わせてみる。
すると……
見込みが少し甘かった?(実際のファイル名は「SAMPLE」)
実機の生成する元波形と比較して色々検証した結果、エッジが鋭過ぎて上手く読み取れて
いないのでは?と思ったので、立ち上がりの位相を半分にしてみると、上手く行きました。
結局、綺麗な方形波はダメなようです。。
次に、PCMに保存したテープデータをエンコードするというのをやってみたいと思います。
原点を閾値に、信号の立ち上がりのタイミングをカウントすれば、周波数が取り出せます。
というわけで、これまた早速ツールを作って実験してみました。
すると、上で作ったデータは上手く行きましたが、実機からの信号を食わせてみると、
結構誤差が出ています(当たり前か)
ということで、誤差を含めて取り出すと、上手く行きました。
さて、この2つのツールを組み合わせると……
見た目は、元波形をブーストしてクリッピングしただけのように見えますが、
48KHz(或いは24KHz)の分周で1200Hzと2400Hzを生成しているので、
1Hzの狂いも無い完全なデータとなっています。
って、ここまで作って思ったけど、いずれにしてもアナログ信号を使った非同期伝送
なんだから、多少の誤差は許容されているわけで、綺麗なデータをわざわざ生成しても
余り意味は無いよなぁ。。
しかも例えば、CD-DAに記録しようと思えば、44.1KHzになるから綺麗なデータで
なくなってしまうし……(汗)
……ま、まぁ、こんな実験しましたよ~っていう報告(つぶやき)ということで……
また、記録環境によってはノイズが乗ったりします。
これがテープに記録されるとさらに訛ってしまい、さらにさらにテープの経年劣化で
いずれは正常なデータが取り出せなくなります。
だったら、テープをPCMに録音して保存しておけばエェやんということになりますが、
そもそもテープから記録された音声は既に綺麗じゃないし、保存するにしても
PCMのデータ量は莫大なもの(今のPC環境からすれば、それほどじゃないかもですが)
になります。
そこで、PCで一度エンコードして、バイナリデータとして保存しておき、必要なときに
デコードしてPCM化すると、データ量も少なくなり、ノイズも歪みも無い綺麗な波形が
常に得られるからエェんでないかい?と考えました。
これが成功すれば、夢の100%エラーフリーが実現し、もう祈る気持ちでデータレコーダを
見つめるようなこともなくなります(笑)
(サウンドカードから出るデータはアナログ信号であることと、ケーブルに乗るノイズは
無視の方向で……)
これらのことは、既に何処かで誰かがやられている気もしますが、今回は
広いユニバーサル領域の布石ということで、これまた自前で全てやってみたいと思います。
なんだか最近、車輪の再発明ばっかりしてるなぁ。。
というわけで、早速実験開始。
MSX2テクニカルハンドブックを片手に、バイナリデータをピーガー音にデコードする
ツールを適当に作って、実機に食わせてみる。
すると……
bload"cas:"
Found:SyM^PZE
Device I/O Error
Ok.
見込みが少し甘かった?(実際のファイル名は「SAMPLE」)
実機の生成する元波形と比較して色々検証した結果、エッジが鋭過ぎて上手く読み取れて
いないのでは?と思ったので、立ち上がりの位相を半分にしてみると、上手く行きました。
結局、綺麗な方形波はダメなようです。。
次に、PCMに保存したテープデータをエンコードするというのをやってみたいと思います。
原点を閾値に、信号の立ち上がりのタイミングをカウントすれば、周波数が取り出せます。
というわけで、これまた早速ツールを作って実験してみました。
すると、上で作ったデータは上手く行きましたが、実機からの信号を食わせてみると、
結構誤差が出ています(当たり前か)
ということで、誤差を含めて取り出すと、上手く行きました。
さて、この2つのツールを組み合わせると……
見た目は、元波形をブーストしてクリッピングしただけのように見えますが、
48KHz(或いは24KHz)の分周で1200Hzと2400Hzを生成しているので、
1Hzの狂いも無い完全なデータとなっています。
って、ここまで作って思ったけど、いずれにしてもアナログ信号を使った非同期伝送
なんだから、多少の誤差は許容されているわけで、綺麗なデータをわざわざ生成しても
余り意味は無いよなぁ。。
しかも例えば、CD-DAに記録しようと思えば、44.1KHzになるから綺麗なデータで
なくなってしまうし……(汗)
……ま、まぁ、こんな実験しましたよ~っていう報告(つぶやき)ということで……
| 実験::ソフトウェア | 01:14 AM | comments (0) | trackback (0) |
コメント
コメントする
この記事のトラックバックURL
http://piroyan.com/lablog/tb.php/25