音が鳴ってくれない(DXライブラリ)

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

音が鳴ってくれない(DXライブラリ)

#1

投稿記事 by ここあわい » 8年前

ゲームを作りたくて、今日DXライブラリを勉強し始めた者です。
現在、「新・ゲームプログラミングの館 \ DXライブラリの関数の使い方(基本) \ 2.7 効果音を鳴らす」までの記事を読んで勉強しています。
記事を読みながらそのようにコーディングし実行してみました。が、音が全く鳴ってくれません。

解決のためにやったことは以下の通りです。
・ パソコンの問題かと思いYoutubeではじめしゃちょーさんの動画を再生してみたが、ここでは音が出ているのを確認
・ 実行中にタスクバーから音声ミキサーでDxLibのバーが上がっていることを確認
・ slnファイルと同じ場所にサウンドという名前のフォルダ、その中に1up.wavという音声ファイルがあるこを確認
http://dxlib.o.oo7.jp/dxfunc.html のサイトを参考にしながら、デバッグ用に以下に改変
  仕様は、 PlaySoundFile() と PlaySoundMem() を実行しそれぞれの音が出ているかどうかを文字列で出力する、です。

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);

	int Handle, Count = 0;
	Handle = LoadSoundMem("サウンド/1up.wav");

	while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) {
		if (Count % 120 == 0) {
			PlaySoundFile("サウンド/1up.wav", DX_PLAYTYPE_NORMAL);
			if (CheckSoundFile() == 1) {
				DrawString(0, 0, "PlaySoundFile()は再生されている", GetColor(255, 255, 255));
			} else {
				DrawString(0, 0, "PlaySoundFile()は再生されていない", GetColor(255, 255, 255));
			}

			PlaySoundMem(Handle, DX_PLAYTYPE_NORMAL);
			if (CheckSoundMem(Handle) == 1) {
				DrawString(0, 20, "PlaySoundMem()は再生されている", GetColor(255, 255, 255));
			} else {
				DrawString(0, 20, "PlaySoundMem()は再生されていない", GetColor(255, 255, 255));
			}
		}

		Count++;
	}

	DxLib_End();
	return 0;
}
 実行結果は、「~は再生されていない」という各文字列が(多分)2秒に1度 一瞬表示される、という結果になりました。

環境は窓7、VSの2015です。
ヘッドホンを使っています。

何故音が出てくれないのかわかりません。
ド素人故に変な書き方をしてたりするかもしれませんが、どうかお手柔らかにお願いします。

hide

Re: 音が鳴ってくれない(DXライブラリ)

#2

投稿記事 by hide » 8年前

slnファイルと同じ場所にサウンドという名前のフォルダ、その中に1up.wavという音声ファイル
そのフォルダは作業場所なので、そこにデータを入れても多分ダメでしょう。
読み込むデータはコンパイルされないものですので、作業場所ではなくて完成品からの位置を指定します。

プロジェクトの中にreleaseやdebug(VisualStudioのメニューで実行時に選んでるやつ)の名前のフォルダがあると思います。
普通の設定ではそこに実行ファイル(***.exe)が生成されて、そこからの相対的なパスが正解になるはずです。
また、不具合を疑う場合は、

コード:

C:/home/desktop/サウンド/1up.wav
のような絶対パスで記述すれば確実に指定できるので、PCやライブラリの不具合との切り分けができます。

Tepp
記事: 13
登録日時: 9年前
住所: フォッサマグナ
連絡を取る:

Re: 音が鳴ってくれない(DXライブラリ)

#3

投稿記事 by Tepp » 8年前

Visual Studioでデバッグしている場合、
作業ディレクトリ(デバッグ時のデータの置き場所)はプロジェクトファイル(.proj)の位置がルートになります。
(今回の場合、「サウンド」フォルダがプロジェクトファイルと同じ場所にあれば良い)
オフトピック
任意のフォルダを作業ディレクトリとして指定したい場合は、
プロジェクトプロパティを開き、 構成プロパティ->デバッグ->作業ディレクトリ
で指定できます。

hide

Re: 音が鳴ってくれない(DXライブラリ)

#4

投稿記事 by hide » 8年前

お、記憶違いしてたかな。

あんどーなつ
記事: 171
登録日時: 8年前
連絡を取る:

Re: 音が鳴ってくれない(DXライブラリ)

#5

投稿記事 by あんどーなつ » 8年前

hideさん、Teppさんの回答を自分のほうでも試してみました。

コード:

(\は円マーク)
TestSol [ソリューションフォルダ]
  \Test2 [プロジェクトフォルダ]
  \Test2.vcxproj
  \Test2.vcxproj.filters
  \Test2.vcxproj.user
  main.cpp
  \サウンド
    1up.mp3 [すいません、wavでなくmp3で試験しました]
  \Release
    Test2.exe
ここあわいさんの場合は、ソリューションフォルダが作られてないかもしれません。
この状態で、
・Debug構成、[ローカルWindowsデバッガー]をクリック→音声が再生される
・Release構成、[デバッグなしで開始]をクリック→音声が再生される
・ReleaseのTest2.exeをクリック→音声が再生されない

そこで、実行ファイルとリソースをデスクトップにコピーします。

コード:

デスクトップ
  Test2.exe
  /サウンド
    1up.mp3
上記構成だと音声が再生されました。

コード:

デスクトップ
  Test2.exe
当然、上記だと音声が再生されませんでした。

ここあわい
記事: 5
登録日時: 8年前
住所: 千葉

Re: 音が鳴ってくれない(DXライブラリ)

#6

投稿記事 by ここあわい » 8年前

.vcxprojと同じ場所にサウンドフォルダを移したらちゃんと音が出ました。
お世話になりました、ありがとうございます!

閉鎖

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