音楽が再生されません・・・

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

音楽が再生されません・・・

#1

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

VC++でDXライブライ使用です

コード:


#define GLOBAL_INSTANCE 
#include "../include/GV.h"

int ProcessLoop(){
    if(ProcessMessage()!=0)return -1;
    if(ClearDrawScreen()!=0)return -1;
    GetHitKeyStateAll_2();
    return 0;
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
    ChangeWindowMode(TRUE);
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;
	int White = GetColor( 255 , 255 , 255 ) ;
	junc=0;
    while(ProcessLoop()==0){
		switch(junc){
			case 0:
				title_graph(White,title_y);
				title_key();
				if(CheckStateKey(KEY_INPUT_RETURN)==1&&title_y==300){
					ClearDrawScreen();
					junc=1;
				}else if(CheckStateKey(KEY_INPUT_RETURN)==1&&title_y==320){
				}else if(CheckStateKey(KEY_INPUT_RETURN)==1&&title_y==340){
				}else if(CheckStateKey(KEY_INPUT_RETURN)==1&&title_y==360){
				    DxLib_End();
					return 0;
				}
				break;
			case 1:
				switch(Lineup){
					case 0:
						select_graph1(White,team_x,team_y);
					    select_key1();
						select_graph2(team_x,team_y,110,20);
						break;
					case 1:
						select_key1();
						select_graph1(White,team_x,team_y);
						select_graph3();
						break;
					}
				break;
			case 4:
				select_team();
				if(CheckStateKey(KEY_INPUT_RETURN)==1)
					junc=100;
				break;
			case 6:
				select_team1();
				if(CheckStateKey(KEY_INPUT_RETURN)==1)
					junc=100;
				break;
			case 100:
               PlaySound 	( "../dat/BGM.wav" , DX_PLAYTYPE_BACK ) ;
				mode_pitch();
				break;
			case 101:
				break;
		}
	    if(CheckStateKey(KEY_INPUT_ESCAPE)==1) break;
	    ScreenFlip();
	}		
    DxLib_End();
    return 0;
}



とやってみるとエラーはでないのですが、ゲームをやっていてBGMの出るところまでいくと、
Baseball.exe の 0x67e3e52a でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xfeeefeee を読み込み中にアクセス違反が発生しました。
と出ます

PlaySound ( "../dat/BGM.wav" , DX_PLAYTYPE_BACK ) ; この一文を抜くと完璧なのですが・・・

なぜでしょうか・・・
理由がわかった方は回答お願いします

アバター
ゆーずぃ
記事: 62
登録日時: 13年前
住所: 埼玉県

Re: 音楽が再生されません・・・

#2

投稿記事 by ゆーずぃ » 13年前

音楽ファイルへのパスは合っていますか?
それか、PlaySound関数は一度に一つの音しか鳴らせないようなので、事前に違う関数内で使ったりするとエラーになるかも。

というよりも、PlaySoundは無駄が多いので、一度メモリに読み込んでから使った方がいいと思いますよ。

int SHandle_BGM;
SHandle_BGM = LoadSoundMem("../dat/BGM.wav");
PlaySoundMem(SHandle_BGM, DX_PLAYTYPE_BACK, TRUE);

って感じの使い方。
この方法にして、LoadSoundMemの戻り値を調べて下さい。
これが-1だったらパス表記が間違っています。っていう使い方もできます。

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

Re: 音楽が再生されません・・・

#3

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

いつもありがとうございます
ご指摘の通り一度読み込んでみたらエラーメッセージは出なくなったものの音声は相変わらず流れません

そこでLoadSoundMemの戻り値を調べたいのですが、やり方がわからなくて・・・
ご教授お願いします!

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

Re: 音楽が再生されません・・・

#4

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

コード:

int hadle = LoadSoundMem( LoadSoundMem("../dat/BGM.wav" );
if(  handle == -1 ){
	MessageBox( NULL, TEXT( "Error!!" ), TEXT( "サウンドの再生に失敗" ), MB_OK );
}
としてみてはいかがです?

こうすることで、失敗した場合は、メッセージボックスが出現します。
あと、この場合ですと、第一引数がNULLになっていますので、フルスクリーンでもしこのメッセージボックスが出ると、閉じるのが面倒になってしまうので、ウィンドウモードでのテストがお勧めです。

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

Re: 音楽が再生されません・・・

#5

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

ありがとうございます!
参考にしてやってみたところメッセージボックスが出たのでパスが違っているのかもしれません

でも、BGMは画像と同じところに入れていて同じパスを書いているのですが・・・なぜでしょう・・・?

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

Re: 音楽が再生されません・・・

#6

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

私が考えられることとしては・・・。

・wavファイルと書いてあるけど実際はmp3やoggファイルである。
(mp3やoggの拡張子をwavとしただけ。)
・パスに問題がある。
・ファイルが壊れている。

といったことでしょうか。

とりあえず、他のwavファイルなどでも試してみてはいかがですか?

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

Re: 音楽が再生されません・・・

#7

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

う~む・・・

>・パスに問題がある。
これは前述の通り画像と同じフォルダ内なんで大丈夫だとおもうんですが・・・
画像はちゃんと表示されてますし・・・
>・ファイルが壊れている。
これもiTunesで聞けますし大丈夫かと思います

>・wavファイルと書いてあるけど実際はmp3やoggファイルである。
(mp3やoggの拡張子をwavとしただけ。)
ここはちょっとわからないですね・・・
友達に作ってもらったんで
今日聞いてみることにします

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

Re: 音楽が再生されません・・・

#8

投稿記事 by naohiro19 » 13年前

exeの位置をプロジェクトの位置に移動すれば鳴ると思われます

exe
[tab=20]└dat
[tab=40] └BGM.wav

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

Re: 音楽が再生されません・・・

#9

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

うーん・・・・うまくいきませんねえ・・・
パスの心配ないようにslnファイルやexeファイルと一緒に同じフォルダにぶち込んでみましたがそれでもならないとはこれいかに・・・

なんか根本的にどこか間違っているのかもしれません

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

Re: 音楽が再生されません・・・

#10

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

一応確認したいのですが、他のwavファイルやmp3などでも試してみました?

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

Re: 音楽が再生されません・・・

#11

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

他のでも試してダメでした
サンプルプログラムにあったやつでもダメだったのでファイルの問題ではないみたいなんですが・・・

宣言の位置がマズイとかあるんですかね?
あ、あとexeファイルは移動させたら新しいexeファイルができていて、移動させたexeファイルは意味ない感じになってました

アバター
DVDM
記事: 38
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: 音楽が再生されません・・・

#12

投稿記事 by DVDM » 13年前

>>たいがさん
こちらの環境で PlaySound 関数を使用して音楽を再生してみました。
テストしたソースを掲載しておきますので、もし宜しければテストしてみて下さい。
その際、BGM.wav をソリューション(.sln)のあるフォルダに置いて下さい。

コード:

#include "DxLib.h"
 
char Key[256];
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	// 初期化処理
	if(ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1)
		return -1;
 
	bool wFlag = FALSE;

	while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(Key) && !Key[KEY_INPUT_ESCAPE])
	{
		if(!wFlag)
		{
			wFlag = TRUE;
			PlaySound("BGM.wav" , DX_PLAYTYPE_BACK);
		}
	}
 
	DxLib_End();
	return 0;
}
もし鳴らない場合、音楽データに何かあるのかもしれません。
鳴る場合はファイルパスが間違っていると思われます。

画像と同じ場所に置いてあるという事ですが、
../dat/BGM.wav とありますので、ソリューションから見て、
一つ上のフォルダにある dat フォルダの中に BGM.wav がないといけませんので
一応御確認お願い致します。

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

Re: 音楽が再生されません・・・

#13

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

あ、あと確認ですが../dat/BGM.wavってslnファイルの一階層上のdatファイルにあるBGM.wavを開けってことですよね?
この認識が違っているなら激しくパスのせいな気がしますが・・・

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

Re: 音楽が再生されません・・・

#14

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

ありがとうございます!
やってみました

するとサンプルプログラムの音楽は正しく流れたにも関わらず、名前を変えて私の音源に変えてみると初めのようなエラーが発生しました

ということは・・・ファイルに問題があるみたいですね・・・
なんかこんなよくわからないエラーに手間を取らせてホント申し訳ないです

でも先ほどやったときはサンプルプログラムの音楽ですら流れなかったので、もしかしたら二重のミスで余計にややこしくなってたのかも・・・
とりあえず長くなってしまったのでいったん終わってしまおうと思います
その間に音源をmp3にしてやってみようかと思います

またダメだったら質問させていただくかもしれないのでその時はよろしくお願いします


また、何か他に思い当たることがあったら書いていただけると幸いです

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

Re: 音楽が再生されません・・・

#15

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

解決わすれました

アバター
DVDM
記事: 38
登録日時: 13年前
住所: 大阪
連絡を取る:

Re: 音楽が再生されません・・・

#16

投稿記事 by DVDM » 13年前

>>たいがさん
> でも先ほどやったときはサンプルプログラムの音楽ですら流れなかったので
上に示したソースでは wFlag が FALSE の時に(一回だけ)関数を呼ぶようにしております。
もしかすると、PlaySound 関数を呼びまくっていたのが原因なのではないでしょうか。

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

Re: 音楽が再生されません・・・

#17

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

ありがとうございます!
まさにその通りみたいで、WaitKey();とか入れたら流れました!

なぜかメモリに読み込めないのですが・・・
あとはなんとかできるかもです!

閉鎖

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