いままで、SO2、SO2と言ってきましたが、
(SO2=1998年に発売したスターオーシャン2というテレビゲーム)
多分普通の人は知らないので、
しまってあったPS2を出してスクリーンショットを撮ってきました。
ボイスコレクション画面 (PS版のみだそうです、波を出すにはボイスコレクションが95%必要)
これです。
これは、ゲーム中でボイスを全体の95%まで集めると
音楽聴いたとき(音楽自体は70%で出る)に
波が出るモードになるのですが、廃プレイしないと聴けないので、
なんかのあるゲームのオマケCDの(たしか)サガフロの
セーブデータの保存中にメモリーカードを抜くという必殺技で集めたものです。
それはおいておいて、
真ん中に、波形っぽいのが出てますよね。スペクトルのような。
でもこれ、実はよくみると、偽者のスペクトルです。それっぽいのですが。
当時は、音声関係のことはあんまり知らなかったので、つい最近気がつきました。
(気がついたといっても、Javaでリアルタイム3Dスペクトログラム完成後なのですが。)
多分このSO2のスペクトルっぽい動きは、
MIDIのノートオン情報を元に↓のような波形を加算してます。
ずっと鳴らしっぱなし音色でも、鳴り始めしか反応しないのは、多分このためです。
というわけで、これっぽいプレーヤー作りたい人は、MIDIプレーヤーにするしかないっぽい…。
うん…でも、出来る限りこれに似せたい!ということで、
あのまま音声視覚エフェクトさらに改良しました。
改良点としては、テクスチャ張ったり、横軸を対数メモリにしたり。
(周波数軸を対数目盛にしたのは、周波数が2倍になると、1オクターブ上がるからです。)
あと、サンプリング周波数をCD音質の44100[Hz]から36000[Hz]に変更したり、高域の強調したり。
(多分18000[Hz]ぐらいが、SO2のスペクトルもどきの最大周波数に対応しているかなと。
18000~22050[Hz]の周波数って聞こえないし、mp3でも削られてるのあるから気になる。)
テクスチャは、パースペクティブコレクト (遠近補正) を実装しようと思ったのですが、断念。
1にz値やらw値やらを割っておいて、パースを吟味するというものなのですが、うまくいかず・・・。
(整数で計算しているせいかもしれないけど、実際のところ詳しく調査してないので不明)
…でも、テクスチャの線形補完は実装してます。(≧▽≦)
とにかく、できたのはこちらです。(文字も再現!)
なんかそれっぽい!?
コメント