本日のOMGな話
XAudio2の
Sourcevoice->DestroyVoice();
の部分がEXCEPTION ACCESS VIOLATIONを起こしていて謎だったけど今日解決したっぽいので。
簡単に理由を言うとstd::functionを使用してfadeout/inの処理をしていたのが問題だったみたいだ。
詳細はここ XAudio2で出てくるエラー - ぼく用あれこれまとめ - アットウィキ に書いてあるのだが、同一スコープ内で処理をしないといけないらしい。
更にここにはDestroyVoice()でと書いてあるがどうやらSetVolumeなどのSourceを触ることが厳禁らしい。
そうだったのか・・・
追記~
どうやらSetVolumeを使用した時にDestroyでエラーを吐くのはXAPOFXが関係しているみたいだ、試しに機能を外してみたら動いた
どのエフェクトが悪さをしているのかまではまだ確かめていないがEQなのかなぁって思っていたり。
聞いたことはないのだがGainを全部落とせば最悪fadeは出来るのでそれでやろうかと思っている、もしかしたらそっちの方が正しいのかもしれない。
追記2~
不思議なことにどうやらDestroyVoiceの直前にSetVolumeで(1.0f)を入れ直してあげるとエラーを吐かずに終了してくれる。謎の原因まではわからないがおそらく非同期処理をしているからそのあたりがエラー吐いてるのかなーって感じです。
XAudio2周りは唐突によくわからないエラー吐くからすごい困る。
イントロカットループ
interactive music hierarchyを使っててここ数日悩んでいたことについて
簡単に言うと「イントロカットループの機能なくない?」ってこと。
これが探して見つからなくて凄い困った、Actor-mixerにはRegion-loopがあってそれを使えば簡単に実装できそうな感じだったのだがinteractive musicにはそれがない、もしかしたら調べ方が悪いのかもしれないけど見当たらない。
試しにメールをしてみたところ
Understanding Interactive Music
この二つを見てほしいとのことで見てみた。
わからない…
これを見て思ったのはそもそものサウンドリソースをintro部分とmainの部分で切り分けたほうが早いのでは?って事、確かにそれでも解決するにはするけど。
でも、もしかしたらいい方法があったりするのかなぁっていう現状。
Wwise始めました
題名の通り最近Wwise (Audiokinetic | Industry Leading Interactive Audio Solutions)
の勉強を始めました。
ただ触っていくうちにすぐ障害にぶち当たりました、それは海外製であること。
まだ英語の部分が多々あり、今までは機能を把握するのに時間がかかってました。
「公式ドキュメントあるしそれでいいじゃないか」と思う方も多いと思いますが、なんかしっくりこないこともあって何か教科書みたいなのないかなと思って調べていたら
https://www.audiokinetic.com/download/documents/WwiseProjectAdventure_ja.pdf
なんてものがあるじゃないか。
これ2014年のpdfみたいなのですが全編日本語なうえ、各シチュエーションごとにまとまっているのでとても分かりやすいと高まってました。
それでも関数や構成などは英語などで頑張らないといけないのは間違いないのですが…