1991年4月 ADPCMとデータ二重化

91年4月末、天外2の音声の録音が行われることになった。
そして、僕は台本の量を見てびっくりしていた。
なんせどう見ても数百ページはあったからだ。
天外2がテキストの量が多いのは分かっていたけれど、まさかこんなとんでもない量だとは想像もしていなかった。
「ねえ、荒井君…これってほとんどADPCMになるんだよねえ」
「ですね」

荒井君…というのは、ハドソンの荒井弘二君のこと。
ハドソンの企画で、シナリオやデータを管理する人間で、天外1からの付き合いだった。
僕が最初にあったときは、1988年で、和泉さんの下でネクタリスのデータの管理をしていた。次に印象に残っていたのが、天外1で桝田さんと毎日マルチプラン(まだexcelではなかった)で仕事をしていたとき。つまり、天外1から荒井君は天外関係者だったのである。


音悪いから、ADPCMにするのイヤなんだよなあ…」
「ああ、岩崎さんは知らないんですよね。ADPCMって音良く出来るようになったんですよ
「えっ! そうなの!?」
「ええ。結構いい音するようになりましたよ」
ここで解説。まあ、イースの同人誌なんかでも書いたし、ブログでも何度か出ている話なのだけど、天外2では結構重要な要素だったので、再度詳しく書き直しておく。
PCエンジンCDROMのオーディオ系統には3種類あった。
一つが当たり前のことながらCDオーディオ
一つが、開発では単にPSGと呼ばれていたけれど、内臓音源の波形メモリってやつ。ものすごく原始的なPCM音源みたいなもの。
そして3つめがADPCM。再生用のチップは沖電気のものだったと覚えている。
このADPCMの再生データを格納するために64キロバイトのメモリが搭載されていて、これのおかげで初期のCDROMは絶望の淵から救われたって話はイースの同人誌の電子版で書いたわけけだけど、当時のものだから仕方ないのだけど、ADPCMの性能としては、悲惨なようやく音が出るレベルの1秒8キロバイト/4ビットしかダイナミックレンジのない代物で、再生するとすぐ音割れするしヒスノイズが載っかるしで、ノウハウが積まれていなかった初期は使えた代物ではなかった。
特に88年末の初期のADPCMから90年半ばぐらいまでは、ADPCMは静かになると「ピー」だの「シャー」だのノイズが乗り、言葉のしゃべりだしで音が割れたりと、実にひどい再生品質で、出来れば使いたくないものだった。
ところが、このADPCMのデータを作るとき(うるさくない程度の)ホワイトノイズを加算すると、音が良くなり、かつ聞きやすくなるのが分かったのは1990年半ばぐらい。具体的には『うる星やつら』あたりから。
だから、1990年の半ばあたりでADPCMの音のクオリティは劇的に向上している。
このテクニックがサードパーティに伝授されたのかについては知らないのだけど、あらゆるところで普通に使われていたようなので、積極的にハドソンは説明した、ということなのだろう。

どうしてこれがわかったのかは僕も知らないのだけど、この手の量子化ノイズを抑えるためにホワイトノイズを加味するのは、専門の一つだった画像処理では普通にやっていたことだった、とある日気がついた。
僕が主に研究していたのは、減色や画像処理フィルタで、減色技術の一つにディザリングと呼ばれるものがあるのだけど、量子化したときの剰余成分を周囲にばらまくときにランダムを使う方法があり、これなんかまさに量子化雑音を抑えるためのホワイトノイズそのもので、まさに自分がやっていたことだったわけだ。
イースを作っているときにADPCMの音が悪いとイライラしていたのに、画像では当たり前に使っていた技術をオーディオに適用すると考えられなかった、当時の己のレベルの低さにただ、ただ情けなくなってしまう。

なんにしても、1991年の春には、ADPCMのクオリティはとても向上してたのでADPCMを多用しても結構大丈夫だという判断が出ていたわけだ。
ところが、本当に大変なことがわかったのは、録音してからだった。
当たり前のことながら、録音したデータの変換自体も大変な手間がかかったわけだけど、問題なのは、変換結果がCDROM上のデータサイズとして約20分もあることだった。

ちなみにCDROMのデータ容量から、これで大雑把にどれだけの音声データが天外2にはあったかがわかる。
1秒8キロバイトの音声で、CDROMは秒間約150キロバイトのデータがやってくる。ということはCDROMの1秒=ACPCMで約19秒。つまり19倍に録音時間が拡大される。
天外2のACPDM領域は約20分だったので、20*19=380分。約6-7時間分の音声が録音されていることになる。
一見すると、あまり長く見えないが「セリフ」だけで、一切間がない6-7時間、言い換えるとしゃべりっぱなしの6-7時間なのだから、膨大なセリフが録音されていることになる。

これをデータ領域は二重にしなければならないPCエンジンCDROMの規約どおりにすると、40分以上になり、CDオーディオが入らなくなってしまう、簡単に書くとCDがパンクするって、信じられない問題が起こったのだ。
「まさかCDROMがCDオーディオ以外でパンクするとは…540メガなんて無限じゃねえよ」
とかホザいていたのだけど、いずれにしてもパンクしたのは事実で、大問題。
で、どうしようか…という相談をした結果、実は天外2以降は、PCエンジンのROMのマスター規約が変更されることになった。
具体的には「ADPCMはデータを二重化しなくてかまいません」という変更。
「エーッ」と思うかも知れないが、実はこの変更はしても全くかまわなかったのだ。
そして、それを確認したので、規約を変更した、というのが本当のところだった。
というのも、ディスクからの読み込みで、ADPCMを再生し始めると、基本的にはCDを絶対に連続的に読むことになっている。

ちなみにこのテクニックは今で言う「ストリーミング」というものになる。まあ、ストリーミングもそろそろ過去の遺物になりそうだけど…

そして、これが「データエラーに対応できる」とはとても思えなかったのだ。つまりリードエラーしたらそれまでだろうと思っていて、実際にエラーさせてみるとリカバーされる気配がない(というかエラー返してきて終わり)。
そこで作った小林さんに聞いてみると…
「ADPCM? データコケたらそこで再生終了。エラー返ってくるだけ。だって、リアルタイムに読んでてシークなんか出来るわけないじゃん」
つまり、ADPCMはデータを二重化していても意味がなかったわけだ。

言い換えるなら、天外2で確認されるまではADPCMも無駄に二重化され、役に立たない無駄なデータがCDROMの上には載っていたことになる。
ただデータトラックの構造上、ADPCMも二重化してしまったほうが管理は簡単だし、それに天外2まではCDオーディオ以外でCDROMが一杯になるなんて現象は起こったことがなかったので、誰も気にしていなかったのが本当のところだ。

と、こうして、天外2は一枚のCDROMに収まるということになったわけである。
だけど、このころには、僕ら製作スタッフは不安になりはじめていた。
それは「明らかに作業が僕らの想像よりは遅れ始めていたから」だった。

LinkedIn にシェア
Pocket