DirectMusicリバーブ

昔、自分で作ったDirectMusicのmidiプレーヤーがDLSとリバーブに対応していたことを思い出した。
ソースはあったけど、実行exeファイルが無かった。
そこで、DirectX9のSDKをインストールしたが。
残念。コンパイル通らない。DirectX8の時に作った奴だもんで。
DWORD_PTRってなんじゃあ、とかいうエラーメッセージだったので
適当にtypedefしたら、うまくいった。
しかし、今度はリンクが失敗。
いろいろいじったら、何が間違っていたのか分からないのに、通った。


さて、DLSの方ははいいとして、リバーブの方は遊びでつけただけだったので修正が必要だ。
でも、何かおかしい。プリセットを変えると異常に音が小さかったり・・・。
真面目にヘルプを読むことにする。
すると、「リバーブをかけたバッファでは残響音しか鳴らないので、元の音とセットで鳴らしてね」
と書かれていた。
しかし、同時に鳴らす方法がわからない。オーディオパスとかいうのを二つにしてみたけどダメ。
そこで、今度こそ真面目にヘルプを読んだところ、こういう手順のようだ。
まず、ステレオ(原音)とリバーブ(加工後音)のバッファがセットになった標準のオーディオパスを作成する。
するとオーディオパスから「0」でステレオの、「1」でリバーブのバッファをいじれる。
バーブの方のバッファでリバーブの設定をしてやれば、このオーディオパスで鳴らした音には
もれなくリバーブがついてくる、と。


そんなこんなで、うまく鳴らすことに成功。
しかし、リバーブのパラメーターの意味が分からなくて困る。
いろいろ調べたりいじったりで、何とか半分ほどは理解。
今、気付いた。
ミリベル(mb)ってたぶん音の大きさの単位だろうけど、どういう単位なんだろう
と思ってたけど・・・これデシベル(db)の仲間じゃないか。
「デシ」ってマイナーだから「デシベル」で一まとめで覚えてたんだなあ、「ベル」がおおもとの単位なのか。
まあ、そんなことは分かってなかっても、何とかパラメーターを調整して、いい感じになった。


そこで、実験。
一つ目は、標準リバーブ
次が、自分で調整したリバーブ
Download
Download


違いを分かりやすくするために、右で鳴ってるスネアドラムに思いっきりリバーブをかけてみた。
自分の奴の方が、標準リバーブよりも素直で深いリバーブがかけられる、気がする。
自分好みにそのつど、調整すればいいし。
ただ、これはどちらのリバーブでも言えることだけど、リバーブのかけ具合を上げると
音量が大きくなるのが困る。
それと、ヘルプ読んで分かったけど、このリバーブ処理はモノラルらしい。


また、今気付いたけど
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/htm/environmentalreverberation.asp
このページにパラメーターの意味を含め、分かりやすく書いてあった。