BGMのフェードイン

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yussanstar

BGMのフェードイン

#1

投稿記事 by yussanstar » 14年前

DXライブラリで、BGMをフェードインする関数を作っています。
まず、LoadSoundMem()でmp3音楽を読み込みます。
最初のボリュームを
ChangeVolumeSoundMem()で0に設定してから、
その音楽を再生し、
そこから、変数を使ってボリュームを少しずつ255まで上げていきます。
理論上、これでフェードインできるはずなんですが、
音楽が一向に鳴らないんです。(エラーが出てプログラムが止まることもありません。鳴らないまま進んでいきます。)
最初から、ボリュームを255のままで再生すれば、音楽は鳴るので、
ロードに問題はないはずなんです。
どういうことなんでしょう?

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

Re: BGMのフェードイン

#2

投稿記事 by bitter_fox » 14年前

yussanstar さんが書きました: 最初のボリュームを
ChangeVolumeSoundMem()で0に設定してから、
その音楽を再生し、
そこから、変数を使ってボリュームを少しずつ255まで上げていきます。
理論上、これでフェードインできるはずなんですが、
音楽が一向に鳴らないんです。(エラーが出てプログラムが止まることもありません。鳴らないまま進んでいきます。)
ソースコードがないと判断できないので、再生部分のソースコードを載せていただけないでしょうか?
(載せる際にはcodeタグで囲っていただきますようにお願いします。)
(codeタグについてはこちらを参考になさってください。
http://dixq.net/board/board.html#k10)

yussanstar

Re: BGMのフェードイン

#3

投稿記事 by yussanstar » 14年前

すいません。コードを載せさせていただきます。

コード:

int BGMFadeIn(int ID, int rate){

	SetVolumeSoundMem(BGMNowVolume,BGMHandle[ID]);

	if(BGMNowVolume==255) 
		return 1;

	if(BGMNowVolume==0){
		PlaySoundMem(BGMHandle[ID],DX_PLAYTYPE_LOOP);
	}
	
	BGMNowVolume += rate;
	if(BGMNowVolume>255) 
		BGMNowVolume=255;

	return 0;

}
この関数を、1を返すまで、メインループで回します。
グローバル変数として、BGMNowVolumeを用いています。
最初は、音がなっていないので、この値は0から始め、
255まで上げていきます。
また、BGMHandle[ID]には、あらかじめmp3ファイルを読み込みます。
引数rateには、1以上の値を入れます。

ご返答お待ちしております。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: BGMのフェードイン

#4

投稿記事 by h2so5 » 14年前

メインループ部分のコードも載せてください。

閉鎖

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