BGMループについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たいが
記事: 38
登録日時: 13年前
住所: 横浜

BGMループについて

#1

投稿記事 by たいが » 13年前

DXライブラリのVisual C++です
質問なんですが曲を30秒から60秒のところまでループさせて0秒から30秒にかけては1回だけ流してみたいなことはできますか?

ぬっち
記事: 105
登録日時: 13年前
連絡を取る:

Re: BGMループについて

#2

投稿記事 by ぬっち » 13年前

最初に1回通して流して、次回から31秒目から音楽を流し始めるという方法で行ったらどうでしょうか?
音楽ファイルを途中から流す関数としてSetSoundCurrentTimeというものがあるそうです。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ast&no=925

流れとしては、
1. 1度目は通常通り再生。
2.再生終了後SetSoundCurrentTimeで再生位置を決める。
3. 再生する。
4. 2と3の繰り返し。

で出来ると思います。

アバター
bitter_fox
記事: 607
登録日時: 13年前
住所: 大阪府

Re: BGMループについて

#3

投稿記事 by bitter_fox » 13年前

int SetLoopPosSoundMem( int LoopTime, int SoundHandle ) ;
こんな関数があるそうです。
http://homepage2.nifty.com/natupaji/DxL ... html#R8N13

再生の流れは、次のようで良いのでしょうか?

0秒から30秒まで再生する。
以下ループ
30秒から60秒まで再生する。

たいが
記事: 38
登録日時: 13年前
住所: 横浜

Re: BGMループについて

#4

投稿記事 by たいが » 13年前

>ぬっちさん
ありがとうございます!
でもこれでやると、おっしゃられたように途中から再生されるのは最初だけみたいですね

>bitter_foxさん
ありがとうございます!
まさに望み通りのものだったのですが

>注意!…
 この関数でループ位置を設定した場合は、以後 ProcessMessage の呼び出し 間隔を0.2秒以上空けないようにして下さい。(0.2秒以上空け続けると 再生中の音が途切れる現象が発生します)

のところが気になりました
これはどういうことでしょうか?

アバター
bitter_fox
記事: 607
登録日時: 13年前
住所: 大阪府

Re: BGMループについて

#5

投稿記事 by bitter_fox » 13年前

たいが さんが書きました:>注意!…
 この関数でループ位置を設定した場合は、以後 ProcessMessage の呼び出し 間隔を0.2秒以上空けないようにして下さい。(0.2秒以上空け続けると 再生中の音が途切れる現象が発生します)

のところが気になりました
これはどういうことでしょうか?
 この関数はWindows環境でのソフトプログラムに付きまとう メッセージループ処理を肩代わりしてくれる関数です。 この関数がなにをしているのか、というのは特に気にする 必要はありませんが、とにかく定期的にこの関数を呼び出して やる必要があります。
 目安としては60分の1秒に一回程度、用はゲームのループに 一回程度です。この関数を呼び出さないと結果としてシステムが 異常に重くなったり不安定になったりします。
http://homepage2.nifty.com/natupaji/DxL ... .html#R1N3

う~ん、ProcessMessageの項目を見るとうえのようなことが書いてありました。
たぶんですが、Windowsに渡すメッセージが途切れるので不具合が生じると言うことなのでは無いでしょうか?

ちなみに、60分の1秒と言うと、0.016...秒なので、もしも0.2秒以上空けているとゲームとして壊滅しているのではないでしょうか、ですので、気にせずフツーにやってあげればよいと思います。

[hr][追記]
さすがに、注意を無視するのは良くないかもですね。。。DxLibにはそれほど詳しくないのですが。

int SetLoopPosSoundMem( int LoopTime, int SoundHandle ) ;
を、呼んだ後すぐに、
ProcessMessageを呼んであげれば、良いのではないでしょうか?


[修正]
「以後」と言うことは、すべてのProcessMessageについてということですね。
う~ん、だとすると上の方法では、意味がないですね。。。修正します。
最後に編集したユーザー bitter_fox on 2010年12月17日(金) 02:16 [ 編集 1 回目 ]

たいが
記事: 38
登録日時: 13年前
住所: 横浜

Re: BGMループについて

#6

投稿記事 by たいが » 13年前

なるほど
いつも通りにやってれば大丈夫ってことですね

ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る