DXライブラリでの音声ファイルの読み込みと再生について

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

DXライブラリでの音声ファイルの読み込みと再生について

#1

投稿記事 by あめんぼ » 12年前

最近DXライブラリを使い始め、ちょっとしたゲームを作っています。
現在ゲーム中にBGMを再生させたいと思っています。
ゲーム中はループにより画面の描写やマウスの座標を取得しているので、ゲーム途中での再読み込みは不可能と判断しました。
そこで音楽ファイルをメモリに読み込ませようと思ったのですが、最初に何曲かを一気に読み込ませ、その後は読み込んだ順に勝手にバックグラウンド再生させることは可能でしょうか?

naohiro19
記事: 256
登録日時: 13年前
住所: 愛知県

Re: DXライブラリでの音声ファイルの読み込みと再生について

#2

投稿記事 by naohiro19 » 12年前

Memのついた関数でLoadGraphと同じように読み込めば再生ができます。

コード:

#include <DxLib.h>

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	int sound;
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
	sound = LoadSoundMem("a.ogg");
	while(!ClearDrawScreen() && !ProcessMessage() )
	{
		PlaySoundMem(sound, DX_PLAYTYPE_BACK, FALSE);
		ScreenFlip();
	}
	DxLib_End();
	return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: DXライブラリでの音声ファイルの読み込みと再生について

#3

投稿記事 by みけCAT » 12年前

こんな感じでしょうか?

コード:

#include <DxLib.h>
 
#define SOUND_MAX 3

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    int sound[SOUND_MAX];
    int playing=0;
    ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
    sound[0] = LoadSoundMem("a.ogg");
    sound[1] = LoadSoundMem("b.ogg");
    sound[2] = LoadSoundMem("c.ogg");
    PlaySoundMem(sound[0], DX_PLAYTYPE_BACK, FALSE);
    while(!ClearDrawScreen() && !ProcessMessage() )
    {
        if(!CheckSoundMem(sound[playing])) {
            //再生が終わっている
            playing=(playing+1)%SOUND_MAX;
            PlaySoundMem(sound[playing], DX_PLAYTYPE_BACK, FALSE);
        }
        ScreenFlip();
    }
    DxLib_End();
    return 0;
}
未確認です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

あめんぼ

Re: DXライブラリでの音声ファイルの読み込みと再生について

#4

投稿記事 by あめんぼ » 12年前

回答してくださった御二方、ありがとうございます。
お二方のプログラムを参考に試してみたところ、考えていたような再生のさせ方ができそうです。
もうひとつお聞きしたいのですが、メモリに読み込んだファイルはプログラム終了後に勝手にメモリから削除されるのでしょうか?
それとも、DeleteSoundMemで削除しないとメモリに残ったままになってしまうのでしょうか?

hss12
記事: 40
登録日時: 12年前

Re: DXライブラリでの音声ファイルの読み込みと再生について

#5

投稿記事 by hss12 » 12年前

DxLib_End(); が書いてあれば大丈夫です。
DeleteSoundMem等はゲーム中に使わなくなった音を消してメモリを節約するためですね。

あめんぼ

Re: DXライブラリでの音声ファイルの読み込みと再生について

#6

投稿記事 by あめんぼ » 12年前

回答ありがとうございます。
おかげさまで、うまくいきそうです!

閉鎖

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