HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0402
ZAP【報告&検証依頼】hspoggでoggファイルロード時の不具合9解決


ZAP

リンク

2017/4/2(Sun) 10:42:25|NO.78796

hspoggのdmmloadでサウンドデータを読み込んだ際、ヘルプでは
「p1の指定を省略、またはマイナス値にした場合は、登録されていないサウンドID番号を
自動的に割り当て、サウンドID番号は、システム変数statに代入される」となっていますが
oggファイルの場合この自動割り当てが機能せず、常にstatに0が返されているようです。

以下のスクリプトで検証してみましたので、確認をお願いします。
バージョンはhsp35b4aです。


#include "hspogg.as" dmmini ;oggファイル読み込み(IDに0が割り当てられる。正常動作) dmmload dir_exe+"\\sample\\demo\\oot06.ogg",-1 :ID_ogg=stat ;wavファイル読み込み 1 dmmload dir_tv+"se_bom.wav" :ID_wav1=stat ;oggファイル読み込み(こっちを有効にしてもIDに0が割り当てられる) ;dmmload dir_exe+"\\sample\\demo\\oot06.ogg",-1 :ID_ogg=stat ;wavファイル読み込み 2 dmmload dir_tv+"se_break.wav" :ID_wav2=stat ;自動割り当て(wav) dmmloop ID_ogg,671328 ; ループポイント設定 title "自動割り当てID ogg="+ID_ogg+" wav1="+ID_wav1+" wav2="+ID_wav2 dmmplay 0 ; 再生 stop



この記事に返信する


ZAP

リンク

2017/4/2(Sun) 10:47:53|NO.78797

先ほどのサンプルの最後の行が間違っていました。こちらで検証をお願いします。

#include "hspogg.as" dmmini ;oggファイル読み込み(IDに0が割り当てられる) dmmload dir_exe+"\\sample\\demo\\oot06.ogg",-1 :ID_ogg=stat ;wavファイル読み込み 1 dmmload dir_tv+"se_bom.wav" :ID_wav1=stat ;oggファイル読み込み(こっちを有効にしてもIDに0が割り当てられる) ;dmmload dir_exe+"\\sample\\demo\\oot06.ogg",-1 :ID_ogg=stat ;wavファイル読み込み 2 dmmload dir_tv+"se_break.wav" :ID_wav2=stat ;自動割り当て(wav) ;oggファイル読み込み(こっちを有効にしてもIDに0が割り当てられる) ;dmmload dir_exe+"\\sample\\demo\\oot06.ogg",-1 :ID_ogg=stat dmmloop ID_ogg,671328 ; ループポイント設定 title "自動割り当てID ogg="+ID_ogg+" wav1="+ID_wav1+" wav2="+ID_wav2 dmmplay ID_ogg ; oggを再生 stop



…? 塁?>

リンク

2017/4/2(Sun) 10:49:50|NO.78798

hsp35βで検証しました。
stat値は0でした。



…? 塁?>

リンク

2017/4/2(Sun) 10:50:41|NO.78799

あ、分かりました。検証しなおします。



…? 塁?>

リンク

2017/4/2(Sun) 10:53:52|NO.78800

oggは正常に起動していました。



ZAP

リンク

2017/4/2(Sun) 11:14:56|NO.78801

説明不足でした。
論点はoggファイルが鳴るかどうかではなくて、
読み込み順に自動で割り当てられる筈のIDが割り当てられないということです。

サンプルを貼り付けて普通に実行すると正常にOGGが再生されると思いますが、
最初のogg読み込み行をコメントアウトして、
代わりにwav読み込みの後のogg読み込み行のコメントを外して順に実行してみてください。

タイトルでoggにIDが自動で割り振られていないことが確認できると思います。



Makoto

リンク

2017/4/2(Sun) 13:49:36|NO.78809

確かに OGG ファイルを読み込んだ時の stat の値は 0 でした。
自動割り当てでも ID を指定した時でも同じく 0 でした。
ただ、ID を指定して再生してみると割り当てられているはずの番号で再生できました。

どうやら、内部的にはきちんと ID は割り当てられているようですが、
stat に代入される値が OGG ファイルの場合 0 になってしまうという事ようです。



ZAP

リンク

2017/4/2(Sun) 17:45:51|NO.78818

>Makotoさん

確かにdmmplayで直接1、2といった数値を指定するとちゃんと鳴りますね。

しかし、自動割り当てなら番号を意識しなくてすむのが利点ですから、
これだと結局自分でIDを数値で管理しなくてはならず、自動割り当てのメリットが享受できません・・・

次回更新時にでも修正いただけるとありがたいですね。

(ちなみに #include "hgimg3.as" でも現象は同じでした。)



Makoto

リンク

2017/4/3(Mon) 14:52:02|NO.78852

あらかじめ決まったファイルを読み込む場合なら、
#enum を使って、自分で番号を割り当てておけば、
自動割り当てっぽいこともできなくはないですね。
番号を意識しなくても使えますし。


#enum BGM_STAGE1 = 0 #enum BGM_STAGE2 #enum BGM_STAGECLEAR #enum BGM_GAMEOVER dmmload "bgm1.ogg",BGM_STAGE1 dmmload "bgm2.ogg",BGM_STAGE2 dmmload "clear.ogg",BGM_STAGECLEAR dmmload "over.ogg",BGM_GAMEOVER dmmplay BGM_STAGE1



ZAP

リンク

2017/4/8(Sat) 18:13:30|NO.79006

>Makotoさん

ありがとうございます。
たしかに#enumなら番号を意識しなくてすむから
曲を入れたり削除したりしながらのデバッグも楽そうですね。

でもできることなら修正してほしいところです・・・



ONION software Copyright 1997-2021(c) All rights reserved.