トップページ > 過去ログ > 記事閲覧
モノラルサウンドファイルについて(3回に1回しか鳴らない)
名前:sy(サイ) 日時: 2011/10/14 09:55

どうも。 確証はないですが報告だけ。 最後に読み込んだ(?)モノラルファイルが3回に1回しか鳴らないという奇妙な現象が 最新版Ver3.06aと3.04eで確認できました。 それ以前では事象は発生しないようです。 また、ステレオファイルにすると現象は発生しません。 ビットレートやファイルサイズ、量子化ビットも圧縮非圧縮も関係ないようです。 更に、最初に記述した通りモノラルの中でも一番最後に読み込んだモノラルファイルが壊れてしまうようです。 その他、再生などのサウンド関連の関数は鳴らない時でも正常値(−1以外)を返します。 再生に使ったのはPlaySoundMemで、読み込みはLoadSoundMemを使用しています。

Page: 1 |

Re: モノラルサウンドファイルについて(3回に1回しか鳴らない) ( No.1 )
名前:管理人 日時:2011/10/16 21:55

ご報告ありがとうございます テストの為にこんなプログラムを組んでみました #include "DxLib.h" #define HANDLE_NUM 50 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int Handle[ HANDLE_NUM ] ; int HandleCount ; int LoopCount ; int i ; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // VSYNC待ちをしない SetWaitVSyncFlag( FALSE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // サウンドの読み込み for( i = 0 ; i < HANDLE_NUM ; i ++ ) { Handle[ i ] = LoadSoundMem( "Test.wav" ) ; } // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ); // ハンドルカウンタの初期化 HandleCount = 0 ; // ループカウンタの初期化 LoopCount = 0 ; // メインループ while( ProcessMessage() == 0 ) { // 画面の初期化 ClearDrawScreen(); // 音を鳴らす PlaySoundMem( Handle[ HandleCount ], DX_PLAYTYPE_BACK ) ; // ハンドルカウンタをインクリメント HandleCount ++ ; // 全ハンドルの再生が終わったらループ if( HandleCount == HANDLE_NUM ) { // ハンドルカウンタを初期化 HandleCount = 0 ; // ループカウンタをインクリメント LoopCount ++ ; // ループ時に1回分余計に待つ WaitTimer( 100 ) ; } // 現在のハンドルカウンタの値とループカウンタの値を描画 DrawFormatString( 0, 0, GetColor( 255,255,255 ), "HandleCount:%d LoopCount:%d", HandleCount, LoopCount ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; // 0.1秒待つ WaitTimer( 100 ) ; } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; } Test.wav( モノラルサウンド ) を読み込んだサウンドハンドルを50個用意して 0.1秒毎に0から順々に再生する、50個全部再生し終わったらループが分かりやすいように 0.1秒間の間を空けた後再度0個目から再生する、というのを繰り返すというプログラムです 最近特にサウンドプログラムには手を加えていませんが、Ver3.06c ではとりあえず 現象は発生しませんでした こちらに私の環境でコンパイルした、現象が発生しないことの確認ができている 実行可能ファイルを自己解凍形式で圧縮したファイルをアップしましたので、 よろしければ sy(サイ)さんの環境でも現象が発生しないか試してみて頂けないでしょうか? https://dxlib.xsrv.jp/file/PlaySoundTest.exe
Re: モノラルサウンドファイルについて(3回に1回しか鳴らない) ( No.2 )
名前:sy(サイ) 日時:2011/10/17 01:26

どうやら発生しないみたいです。 何となく50付近で音のトーンが低くなるみたいでしたが、鳴っているようでした。
Re: モノラルサウンドファイルについて(3回に1回しか鳴らない) ( No.3 )
名前:管理人 日時:2011/10/22 19:03

件の現象は発生しませんでしたか・・・ Ver3.06a から特にサウンド関連を変更していないので可能性は低いと思いますが 最新バージョンでは直っているかもしれませんので、よろしければ こちらのバージョンをお試しになってみていただけないでしょうか? http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCCTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMinGWTest.exe // MinGW 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) ( GetActiveFlag のスレッドと同じものです )
Re: モノラルサウンドファイルについて(3回に1回しか鳴らない) ( No.4 )
名前:sy(サイ)(解決) 日時:2011/10/23 13:37

事象が起きず、モノラルサウンドを使わないようにしましたので解決とします。

Page: 1 |