kuma4649 / mml2vgm

GNU General Public License v3.0
105 stars 10 forks source link

DCSGでエンベロープを使用すると正常にコンパイルできない #147

Closed sdhizumi closed 4 months ago

sdhizumi commented 4 months ago

Describe the bug DCSGでエンベロープ定義を呼び出すとコンパイルが正常に通らなくなっているようです。 どのTAGバージョンから発生したかについては、現状追いかけられておりません。 本日時点で最新の、TAG730での発生は確認済みです。

To Reproduce 以下のMMLをmml2vgmIDEx64でF5キー(もしくはF12キー)を押して再生を試行します。

'{

    TitleName   =
    TitleNameJ  =
    GameName    =
    GameNameJ   =
    SystemName  =
    SystemNameJ =
    Composer    =
    ComposerJ   =
    ReleaseDate =
    Converted   =
    Notes       =

}

     No , SV , AR , DR , SL , SR , RR , ST , ChipName
'@ E 000, 011, 000, 000, 000, 000, 000, 000

'Cn1 T120
Cn1 L

'S1 @E0 EON
'S1 o4
'S1 cdefgab>c
'S1 r1

'S2 o3
'S2 cdefgab>c
'S2 r1

Expected behavior コンパイルが完了せず、再生もされません。 稀にS2チャンネル側のみ再生される事がありましたが、発生条件が不明です。

実行時のログウインドウの表示は、ここで停止してしまいます。

Start mml2vgm core

 Parse text
 check PCM definition and get
 MML syntax parsing
 Start VGM_GetByteData

また、この状態でmml2vgmIDEのウインドウを閉じると、バックグラウンドにかなりのCPUリソースを使用するプロセスが残存してしまいます。(スクリーンショット参照)

Screenshots image

Desktop (please complete the following information):

Additional context 使う上でちょっと間が空いてしまったので、DCSGのエンベロープ定義の仕方が間違っているとか、そういった可能性もある気がゼロではない気がするため、もしそういったことがあればご教示いただければ幸いです…。

kuma4649 commented 4 months ago

すみません、明日以降に確認させていただきます。

sdhizumi commented 4 months ago

前のデータを引っ張り出したりして思い出したりしつつ、しばらく再検証した感触では、STの値が0の際にコンパイル全体が停止してしまうのではないか、という疑いが出てきております…。

kuma4649 commented 4 months ago

こちらでは問題なくコンパイルはパスできてます。 S1の音がでないのは想定通りです。。。 とりあえず、以下の設定をしてみて何かログに記録が残らないか確認お願いします。 image

sdhizumi commented 4 months ago

ありがとうございます。 まず今朝になって再度確認した所、コンパイルが通り、再生もできました。 ちょっと困る状況ですが…逆に昨日は何がダメだったのか判断しかねております…。

正常に通っているため、デバッグウインドウのログ欄には何も残らずとなりました。 自分の側も再現できなくなってしまったため、クローズしてもよいのではないかという感じがします。なぜ動かなくなったのか…。

STの値についてはマニュアルを読み直すなどして理解し直しました。 0だと何もインクリメントされないので変化なしで、仕様となるのですね。失礼いたしました…実際、過去の自分のデータではちゃんと値が入っておりました。

ただ、エンベロープの件と直接関係ないと思われる、プロセスが残留してしまう症状は継続して発生しているようです。 こちらはissueを分けた方がよいでしょうか?

kuma4649 commented 4 months ago

他の何かがあったのかもしれないですねぇ。。。

プロセスが残るのは別件ですねぇ。MDPlayerもそうなのですがなかなか直せないでいる現象なので。 例えばNAudioのライブラリのバージョンが上がるたびに 現象がでやすくなったりそうではなかったりで中々対応が難しい。 100%再現させる方法がわかれば原因も追究しやすくなるのですがそうでもなかったり。 ASIO使うと大分緩和されるのですがそれでも残るときは残ります。 他の音声を使用するアプリ(MDPlayer含む)と競合したりしている場合もあります。 また、瞬間的な電圧降下などにデバイスが反応して応答がもらえないとそのまま応答不能になるなど 色々あります。

とりあえずこのISSUEは閉じさせていただきます。