PlaySoundFile関数で音はなりますが、PlaySoundMemでは音が鳴りません

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

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: PlaySoundFile関数で音はなりますが、PlaySoundMemでは音が鳴りません

Re: PlaySoundFile関数で音はなりますが、PlaySoundMemでは音が鳴りません

#5

by heute » 7年前

言われたように修正したところ、きちんと音がなりました
ありがとうございました

Re: PlaySoundFile関数で音はなりますが、PlaySoundMemでは音が鳴りません

#4

by みけCAT » 7年前

gcc 4.8.1、DXライブラリ Ver3.17aでGDB(デバッガ)を用いて実行すると、LoadMusicMem関数を実行した所でフリーズしてしまいました。
DxLib.hによると、LoadMusicMemはMIDIファイルを読み込むための関数のようです。
今回のようにmp3ファイルを読み込むには、LoadSoundMem関数を使うといいでしょう。

Re: PlaySoundFile関数で音はなりますが、PlaySoundMemでは音が鳴りません

#3

by heute » 7年前

みけCAT様
申し訳ありません。
不正確で不適切なことをしていました。
このように問題のある部分を抽出しました。
コンパイルはできることを確認しました。

コード:

#include"Dxlib.h"
void LoadSFS(int SF[256]) {
	SF[0] = LoadMusicMem("./MUSICS/AAA.mp3");

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	LPSTR lpCmdLine, int nCmdShow)
{

	ChangeWindowMode(TRUE);
	SetDrawScreen(DX_SCREEN_BACK);
	if (DxLib_Init() == -1)		// DXライブラリ初期化処理
	{
		return -1;			// エラーが起きたら直ちに終了
	}
	int state = 0;
	int lpS = 0;
	int musicOn = 0;
	int MH[256];



	while (lpS == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {

		switch (state) {

		case 0:
			//load
			LoadSFS(MH);
			state++;
			break;
		case 1:
			if (musicOn == 0) {

				PlaySoundMem(MH[0], DX_PLAYTYPE_NORMAL);
				musicOn++;
			}
			break;
		}



		WaitTimer(60);
	}



	DxLib_End();				// DXライブラリ使用の終了処理

	return 0;				// ソフトの終了 
}

Re: PlaySoundFile関数で音はなりますが、PlaySoundMemでは音が鳴りません

#2

by みけCAT » 7年前

heute さんが書きました:以下のようなコードを書いて、音楽を再生しようとしても、全く音が鳴りません。
「以下のようなコード」ではなく、実際に不都合が再現できる最小限の・自己完結した・確認可能なサンプルコードを用意できませんか?
提示されたコードは、}が足りないのでコンパイルが通りません。

PlaySoundFile関数で音はなりますが、PlaySoundMemでは音が鳴りません

#1

by heute » 7年前

Dxlibについて質問させていただきます。
以下のようなコードを書いて、音楽を再生しようとしても、全く音が鳴りません。
ここではコメントアウトされている、PlaySoundFile("./music/a.mp3", DX_PLAYTYPE_NORMAL);
は問題なく音楽が再生されます。
また、HandleMはロード後は-1にならないことは確認しており、音が鳴らないPlaySoundMem関数の返し値は-1になってしまっています。
完全に行き詰まってしまったので、ご教示お願いいたします。

コード:

#include "DxLib.h"
 
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
    ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);
 
    int HandleM= 0;
    int cnt=0;
    HandleM = LoadSoundMem("./music/a.mp3");
 
    while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
        if(cnt==0){
            //PlaySoundFile("./music/a.mp3", DX_PLAYTYPE_NORMAL);
            PlaySoundMem(HandleM, DX_PLAYTYPE_NORMAL);
            cnt=1;
         }
    DxLib_End();
    return 0;
}

ページトップ