バグ?ogg形式効果音が正常に再生されない
Classicスキンの詠唱、電撃、引掻、水中、犬、絞付やJUDGMENTスキンの本、絞付などのogg効果音をエディタ上で指定して再生したところザーっというノイズしか再生されませんでした。保存してシナリオとしてプレーする時やoggファイル単体を再生した場合は正常に再生されており、また1.50やBloodWirthのようにwav形式なら同名効果音も正常に再生されるようです。
Comments (34)
-
repo owner -
reporter ありがとうございます。早速確認してみました。
CardWirthPy.exeの場所は正しく設定されており、再生方式はBGM効果音ともに自動選択に設定されていました。
再起動後も改善されなかったので、試しに効果音再生方式をWinMMにしてみたところ、前述の効果音で同じノイズが再生されたため、自分の環境では初めからWinMMで再生されてるようです。
WinMMはogg未対応とのことですが、前述の効果音以外のoggファイルは正常に再生されているのですが、そういうものなのでしょうか?自分だけの環境で発生してる現象な気がしてきたのですが、もしかしたら再現性があるかもしれないので、順を追って書きますと
テーブル→シナリオ設定→スキンを指定→Classic(MedievalFantasy)→スキン付属の(詠唱)ogg効果音をエディタ上で再生したところノイズという流れでした。 -
repo owner ご確認ありがとうございます。
WinMMはogg未対応とのことですが、前述の効果音以外のoggファイルは正常に再生されているのですが、そういうものなのでしょうか?
音声や動画については、OSに含まれるデコーダの都合もあるので、これはよく分からないというのが正直なところです。
cwxeditorの動作として、再生に失敗するごとにBASS→SDL_mixer→WinMMの順で再生できるか試すので、問題の起きる効果音以外はWinMMへ行くまでに再生に成功しているという事なのかもしれません。
BASSがうまく使えていないとなると、DLLが正常に読み込めていないという可能性があります。CardWirthPy.exeのあるフォルダに以下のファイルがあるか確認していただけないでしょうか。
・
bass.dll
,bass_fx.dll
,bass_midi.dll
… 32-bit版のcwxeditorを使っている場合・
x64\bass.dll
,x64\bass_fx.dll
,x64\bass_midi.dll
… 64-bit版のcwxeditorを使っている場合 -
reporter 使わせて頂いているのは64-bit版です。確認したところ、それらのファイルは全て所定の位置にありました。
再生が上手く行かないoggファイルをオンラインアプリで再度ogg変換してみたところ、エディタでも問題なく再生できるようになったので、エディタではなくスキン同梱のogg効果音が自分の環境と相性が悪かったようです。
-
repo owner SDL_mixerで再生した時に問題のノイズが発生する事を確認しました。となると、やはりBASSでの再生に失敗していると考えてよさそうです。
考えられる要因は、とりあえず2つ思いついています。
- やはりCWPyの場所が正しくないか(この場合はスキンも読み取れないので考えにくい)、指定されたCWPyが持っているDLLが正しくない。
- 間違ってクラシックなエンジンの
bass.dll
が読み込まれている。クラシックなシナリオを編集している時など、それが適当と考えられる時は、対象となるクラシックエンジンに付属するbass.dll
を使用するようになっています。ただ、クラシックエンジンに付属しているbass.dll
は32-bit版なので、64-bit版のエディタからは使用できません。
2.について確認したところ、CWPyの場所で指定された
CardWirthPy.exe
があるフォルダにx64
フォルダが存在する場合には、必ずその中のbass.dll
が使用されるはずですが、その判定に失敗するケースがあるのかもしれません。もしこの判定に失敗するようでも、32-bit版のcwxeditorなら再生に成功するはずです。
-
repo owner もう少し確認してみましたが、クラシックなエンジンのあるフォルダに
x64
フォルダがあり、その中にbass.dll
が入っていた場合に、そのDLLを使用しようとして失敗する可能性があります。ありそうもない事ですが、一応ご確認いただけないでしょうか。
-
reporter 確認してみたところクラシックエンジンのフォルダ内には
x64
フォルダは無いようです。 -
repo owner 32-bit版のcwxeditorでは正常に再生できるでしょうか?
そうだとしたらCWPyに付属している
bass.dll
が使用されていない事はほぼ確定なのですが、どうしてそうなるかとなると、正直見当がつきません。 -
reporter 32-bit版のcwxeditorを試してみたのですが、こちらならノイズは発生しないようですが、元のwavと音程が変わっているようです。これは32-bit版と64-bit版の差異なのでしょうか?
-
repo owner SDL_mixerで再生すると一部の音声が変化して聞こえる事が分かっているので、それかもしれません。
どうもCWPyに付属しているものであろうとクラシックエンジンに付属しているものであろうと常に
bass.dll
の使用に失敗しているとしか思えませんが、どうしてそういう事になるのか分かりません。アンチウィルスソフトか何かによってDLLのリンクが妨害されているのでしょうか?
その場合、CWPy側からは同じDLLをリンクできている(そうでないと音声が再生できない)というのも不可解です。
すみません、今の所原因に見当がつきません。
-
repo owner クラシックなエンジンやCardWirthPyで正しいサウンドフォントが指定されていない(存在しないファイルが指定されていたりする)という事はないでしょうか?
-
reporter スキンの効果音をwavに差し替えるかエンコードし直せば正常に音が出るので、それで凌ごうと思います。連日の対応ありがとうございました。
-
reporter pyのサウンドフォントは005.6mg_Aspirin_Stereo_V1.2というものに設定されていてDATA/SoundFontフォルダに同名のファイルがありました。
クラシックエンジンに設定していたCardWirth1.50では使用するサウンドフォントにDefault.sf2というものが設定されていてこちらも同名ファイルがフォルダ内にあります。
-
repo owner お役に立てず申し訳ありません。
どこかに
bass.dll
が使えない原因はあるはずなので、何か状況の変化や気づいた事等あればお知らせください。 -
repo owner もしよろしければ、もう少し調査にお付き合いください。
cwxeditorは、何らかのエラーが発生した時に、設定やログを出力するフォルダ(エクスプローラのアドレスバーに
%appdata%\cwxeditor
と入力すると開けます)にエラーログcwxeditor_error.log
を出力します。今回、BASSの初期化のプロセスをエラーログとして出すよう改造したバージョンを用意しました。
https://bitbucket.org/k4nagatsuki/cwxeditor-k4nagatsuki/downloads/cwxeditor_test_20190822.zip
もしよろしければ、このバージョンを使って現象を再現していただき、エラーログの
BASS Initialize Start -------------------------------------------------
という行以下に出力された内容を教えていただけないでしょうか。ログ内にあるパスにユーザ名が含まれている等、見せたくない情報が含まれている場合は、その部分を隠していただいても構いません。
-
repo owner 書き忘れていましたが、サウンドフォントの場所は問題無さそうです。そもそもサウンドフォントの設定がおかしければCWPyでも音が鳴らないはずです。
-
reporter すみません。書き込みしてくださった事に今気がついたので早速試してみました。
テスト版が32-bit版なため問題のノイズは発生していないのですが、
cwx\editor\gui\dwt\mainwindow.d:2374 BGM Type: 2, SE Type: 2
とだけ出力されていました。
-
repo owner ありがとうございます。
どうも再生方式を自動選択した結果としてBASSが選択されていないようです。クラシックなエンジンの音声再生タイプの指定が利いているような感じがします。
cwxeditorが参照するCWの設定ファイルは、CardWirth Extenderが生成する
cwex.ini
、CW 1.30~1.60が生成するCardWirth.cfg
(実行ファイルによってファイル名は変化する)です。このどちらかがクラシックエンジンのフォルダにあった場合、内容をテキストエディタで開いてみて、以下のような行がないか確認していただけないでしょうか。
MusicAPI=mci SoundAPI=mci
たぶんこの行が原因で、自動的に音声再生方式にMCI(WinMM)が選択され、WinMMではOgg Vorbisの再生ができないのでSDL_mixerにバトンタッチし、ノイズが鳴る、という結果になっているのだと思います。
上記の行を消すか、以下のようにすれば解決できるはずです。
MusicAPI=bass SoundAPI=bass
-
reporter ありがとうございます。クラシックエンジンに設定しているフォルダを見てみました。
cwex.ini
というファイルは見当たらず、CardWirth.cfgとCardWirthNext.cfgはあったのですが、テキストエディタで開いて検索してもMusicAPI
やSoundAPI
という行は無いようです。 -
repo owner もしかしてCardWirthの設定のサウンドフォントで「使用するサウンドフォント」が空欄になっているという事はないでしょうか。
その場合、
*.cfg
にSoundFont=
という行が含まれているはずです。 -
reporter 両方ともSoundFont=Default.sf2と書かれていました。
-
repo owner ちょっとまた分からなくなってきたので、ログを出す範囲を広げたバージョンを作成しました。
https://bitbucket.org/k4nagatsuki/cwxeditor-k4nagatsuki/downloads/cwxeditor_test_20190825.zip
これでエラーログの内容を確認していただけないでしょうか。
-
reporter 何度もお手を煩わせてしまい大変申し訳ございません。
BASS Initialize Start ----------以下
cwx\editor\gui\dwt\mainwindow.d:2315 BGM Type: 0, SE Type: 0
cwx\editor\gui\dwt\mainwindow.d:2366 C:\CardWirth\CardWirthPy
cwx\editor\gui\dwt\mainwindow.d:2367 []
cwx\editor\gui\dwt\mainwindow.d:2378 BGM Type: 2, SE Type: 2
と表示されていました。
-
repo owner この出力を見る限り、CWPyのサウンドフォントが一つも設定されていない状態になっています。
以下の点を確認していただけないでしょうか。
- CWPyの詳細設定→音声→MIDIサウンドフォントのリストになんらかのアイテムがある。
- リスト内のアイテムに警告アイコンが表示されていない。
- リスト内のアイコンのどれか一つ以上の「使用」欄にチェックが入っている。
-
reporter CWPyの詳細設定→音声→MIDIサウンドフォントのリスト
→ 005.6mg_Aspirin_Stereo_V1.2_Bank.sf2一つだけしかなく、チェックが入っている状況です。
リスト内のアイテムに警告アイコンが表示されていない。
→ 警告のアイコンらしきものは表示されていません。
リスト内のアイコンのどれか一つ以上の「使用」欄にチェックが入っている。
→ 005.6mg_Aspirin_Stereo_V1.2_Bank.sf2のみです。 -
repo owner CWPyの
Settings.xml
の読み込みに失敗しているのでしょうか?その辺りにログ出力を追加してみました。
https://bitbucket.org/k4nagatsuki/cwxeditor-k4nagatsuki/downloads/cwxeditor_test_20190825b.zip
このバージョンでログを確認していただけないでしょうか。
-
reporter cwx\editor\gui\dwt\mainwindow.d:2312 BASS Initialize Start ----------以下
cwx\editor\gui\dwt\mainwindow.d:2315 BGM Type: 0, SE Type: 0
cwx\editor\gui\dwt\mainwindow.d:2366 C:\CardWirth\CardWirthPy
cwx\editor\gui\dwt\mainwindow.d:2367 []
2019-08-25 02:53:32 [Build: 2019-08-25 01:51:47 Debug / Console (32-bit)]と表示されています。
-
repo owner すみません、新しいログがファイルに出ないようになっていました(コンソールには出る)。
こちらのバージョンで再度確認していただけないでしょうか。
https://bitbucket.org/k4nagatsuki/cwxeditor-k4nagatsuki/downloads/cwxeditor_test_20190825c.zip
-
reporter cwx\editor\gui\dwt\mainwindow.d:2312 BASS Initialize Start ---- 以下
2cwx\editor\gui\dwt\mainwindow.d:2315 BGM Type: 0, SE Type: 0
cwx\skin.d:807 EnginePath: C:\CardWirth\CardWirthPy\CardWirthPy.exe
cwx\skin.d:810 Settings.xml: C:\CardWirth\CardWirthPy\Settings.xml
cwx\skin.d:826 SoundFonts: []
cwx\editor\gui\dwt\mainwindow.d:2366 C:\CardWirth\CardWirthPy
cwx\editor\gui\dwt\mainwindow.d:2367 []
cwx\editor\gui\dwt\mainwindow.d:2378 BGM Type: 2, SE Type: 2と表示されています。
-
repo owner 分かりました。CWPyの設定ファイルの仕様とcwxeditorの仕様との兼ね合いで発生した不具合です。
CWPyでは、ある設定が初期値と同じであれば、設定ファイルである
Settings.xml
に書き出しません。これは設定ファイルのサイズの削減と、将来初期値が変更された時に対応するための仕様です。これにより、サウンドフォントの設定がデフォルトのサウンドフォント設定のままであれば、設定ファイルにサウンドフォントのリストが書き出されません。一方cwxeditorは素直に
Settings.xml
からサウンドフォントのリストを取得しようとしますが、書き出されていないので取得できず、結果としてBASSが使用できなくなります。サウンドフォントリストを設定に書き出すかどうかは比較的遅い時期に作られた仕様で、その時にこの組み合わせの不具合が発生したのだと思います。手持ちの環境ではデフォルトのサウンドフォント設定を使用していないので気づきませんでした。
これからエディタの方を修正します。
-
repo owner pull request #570
対応しました。最新のテスト版をお試しください。
-
reporter 課題作成時にノイズの走っていた全てのogg効果音が正常に再生されるのを確認しました。
週末とはいえこのような時間まで対応していただき本当にありがとうございました。感謝しかありません。
-
repo owner ご確認ありがとうございます。
週末とはいえこのような時間まで対応していただき本当にありがとうございました。感謝しかありません。
いえ、こちらこそ感謝しなければなりません。
ここまでお付き合いいただけなければ、おそらくこの問題は発見も修正もする事ができなかったでしょう。幾度も検証していただきありがとうございました。
-
repo owner - changed status to resolved
解決済みなのでクローズします。
- Log in to comment
ご報告ありがとうございます。
cwxeditorでは、CWPyの場所が分かっている場合、CWPyに付属している
bass.dll
によって音声を鳴らそうとします。そうでない場合はx86
ないしx64
フォルダ内にあるSDL_mixerのDLLを使おうとし、それにも失敗した場合はWindows付属のWinMMというライブラリを使用します。このWinMMはOgg Vorbisに対応していません。上記の音声再生の優先順位は、設定によって変更する事ができます。
以上の事を踏まえて、下記の事を確認していただけないでしょうか。
また、私の環境で一度だけ、
bass.dll
による音声再生ができなくなる場合がありました。たぶんデバイスドライバの問題で、マシンを再起動するとよくなりました。これも試していただけないでしょうか。ただ、私の環境で起きた問題では、エンジンを含む他の全ての音声再生も失敗する状況になっていたので、今回の問題には当てはまらないかもしれません。