音声再生におけるBASS使用の優先順位について

Issue #411 new
暗黒 騎士 created an issue

#388に以下の説明があります。

編集中のシナリオのスキンがクラシックエンジンで、CardWirth 1.30以降であれば、エンジンと同じディレクトリにあるもの。ただしCardWirthには32-bit版のDLLしか同梱されていないためcwxeditorが32-bit版である必要がある。
WSN形式を編集中であるか、上記のDLLが見つからなかった場合は、CardWirthPy.exeと同じディレクトリにあるbass.dllか(32-bit)、CardWirthPy.exeのディレクトリの下にあるx64ディレクトリの中にあるbass.dll(64-bit)

64bit版を試していてかなり混乱したのですが、もしかして64bit版cwxeditorでは32bit版のBass.dllは使用出来ない、つまり「64bit版で、Pyの場所が設定されていて64bit版のbass.dllが認識できる状態でも、クラシックエンジン配下のシナリオを編集する場合は、常にwinmmないしSDL mixerで再生される」のが仕様なのでしょうか?(oggではまた事情が異なるようなので勘違いがあったらすいません)

現在ではBASS再生を使うエンジン(1.30以降)のシェアがほぼ100%なので、「Pyの場所」が指定されていて、64bit版のdllが見つかる場合は常にそちらで読み込む方が使い勝手がいいのではないでしょうか。

Comments (4)

  1. k4nagatsuki repo owner

    64-bitビルドでは以下のコードで部分で読み込むDLLの変更を行っています。

    https://bitbucket.org/k4nagatsuki/cwxeditor/src/038412ed68d7d0727aa8e4d5a485466f689a88d3/cwxeditor_src/gui/cwx/editor/gui/dwt/mainwindow.d#lines-2397

    処理内容としては:

    1. <クラシックエンジン>/x64以下にbass.dllがあるか探す
    2. それがなければCardWirthPy/x64以下を探す
    3. 見つかったらDLL読込元のディレクトリを差し替える

    これはまさに仰っている処理です。これが機能していないケースがあるという事になると思います。

    音声周りの設定やサウンドフォントの配置等情報をいただければと思います。

  2. 暗黒 騎士 reporter

    申し訳ありません、やはり勘違いがあったのとこちらの設定がおかしかったようです。

    BGM再生形式が「WinMM(CardWirth方式)」でBGMコンテントで「l_chirr.ogg」を再生すると
    「SDL方式では音声の長さが取得出来ません」と表示されるのでCardWirth方式なのになぜかSDL再生になっている?という勘違いをしていたようです。
    「自動選択」に設定し直したところ、クラシックエンジン下のクラシックシナリオにおいてもoggが正常に再生されるようになりました。

  3. 暗黒 騎士 reporter

    まとめると、

    • 自動選択・・・32bit版はCardWirthのbass.dllを読みに行く。ただし64bit版の場合は32bitのdllは読めないのでそのエンジンかPyの場所に「x64」フォルダがあればそちらを使用、どちらにもなければSDLで再生する。
    • WinMM(CardWirth方式)・・・このCardWirthとはCardWirth1.28以前のことで、1.30以降でBASS設定になってようが、Windows標準のAPIで再生する。ただしoggなどはSDLで再生する?
    • SDL(旧方式)・・・CWXEditorに同梱されているSDL(64bit版はSDL2)ミキサーで鳴らす。長さは取得出来ない。

    ということですね。攻略wikiにもそのうち記載しておきます。

  4. k4nagatsuki repo owner

    サウンドフォントもあるのでもう少しややこしいです。クラシックエンジンのDLLが選択される時はそのエンジンの設定ファイルを読みにいってそこで指定されているサウンドフォントを使用するはずです。

    むやみにややこしいので、CWPyでも既に使用していないSDL_mixerのサポートはどこかのタイミングで廃止した方がいいかもしれませんね。

  5. Log in to comment