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

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

なんかそれっぽい!?


Youtubeの3Dエフェクト紹介動画へ

関連記事

  • 音の高さの表示ソフトdrawwaveの開発 part1音の高さの表示ソフトdrawwaveの開発 part1 音の高さを調べるソフトといえば、「おんかいくん」などが上げられますが、 今日はJavaで製作された「drawwave」というソフトを紹介します。(*^U^*) 何をするソフトかというと、リアルタイム(実時間)で音声を目で見るソフトです。 音声の波形を描く ということで draw wave […] Posted in ツール制作
  • 音の高さの表示ソフトdrawwaveの開発 part2音の高さの表示ソフトdrawwaveの開発 part2 「音の高さの表示ソフト […] Posted in ツール制作
  • Javaで3Dの音声視覚エフェクトを作った part2Javaで3Dの音声視覚エフェクトを作った part2 なんとなく3Dっぽさがないのと、スペクトルが分かりづらいということで、改良?してみました。 点ライト3つで豪華さアップ! 以前の仕様 サンプリング周波数 22050Hz FFT フレーム長1024、シフト長512、8スレッド 3DCG […] Posted in ツール制作
  • Javaで3Dの音声視覚エフェクトを作った part1Javaで3Dの音声視覚エフェクトを作った part1 SO2のサウンドプレイヤーっぽいのを作ってみたかった! まあ、それはおいておいて、Java1.6が入っている方は、こちらで実際に試せますヽ(^o^)丿 遊び方は、音声デバイスの録音をマイクからミックス(自分が再生している音)にして、 実際に音楽を聴きながら、グラフィックを楽しむという形になります。 Youtubeの3Dエフェクト紹介動画へ […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「言語の設定とキーボードの表示」SMFプレイヤーをつくろう!リベンジ「言語の設定とキーボードの表示」 久しぶりにSMFプレイヤーの更新。 といっても前回の段階でSMFの再生の最低限の機能は実装されているので、 今回は表示関連を中心に。 まずは、言語の設定。 生まれて初めて、言語の設定を行えるような機能追加をしました。(=o・ω・o) ほら、これからは日本以外にも視野を広げる時代ですから。はい。 実装としましては、言語の設定は、辞書式にしました。 辞書ファイルはカレントディ […] Posted in ツール制作
  • SMFプレイヤーをつくろう!リベンジ「出力ポート、MIDIと周波数の関係」SMFプレイヤーをつくろう!リベンジ「出力ポート、MIDIと周波数の関係」 追加した機能 ・Sequencerのインターフェースにメソッド名を似させる。 入れ替えとか、いつかクラスを公開時に役立ちそう。 ・Sequencerにあった、ティック単位の位置調節の追加 内部では、ms単位で処理しているので、ティックから時間に変更するようなメソッドを追加で。 ・メイタベント0x59の調情報取得 この調の情報。最初はノートオン時に反映させると思ってた […] Posted in ツール制作