Javaで3Dの音声視覚エフェクトを作ってみました 今度こそSO2風

投稿日: 更新日:

いままで、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値やらを割っておいて、パースを吟味するというものなのですが、うまくいかず・・・。
(整数で計算しているせいかもしれないけど、実際のところ詳しく調査してないので不明)
…でも、テクスチャの線形補完は実装してます。(≧▽≦)

とにかく、できたのはこちらです。(文字も再現!)

なんかそれっぽい!?

早速、この音声視覚エフェクトを試してみたいという物好きな方は、こちらから試せます。
相変わらずJava1.6が必要です。

広告

コメントをどうぞ(承認された後に公開されます。メールアドレスの記入は自由ですが、記入した場合でも一般公開されることはありません)

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中