タイトルの通り、音声ファイルをPlaySoundMemの第3引数にFALSEを渡して
途中から再生した時に、「プツッ」と言ったノイズが乗ります。
ChangeVolumeSoundMemで音量を0にしてもノイズが乗って困っています。
また、SetLoopPosSoundMemでループ位置を指定してループ再生しても似たようなノイズが乗ります。
こちらは音量0ならノイズは聞こえないので、音声ファイルが原因のような気もしますが・・・。
両者とも傾向としては低音が強いタイミングから再生を開始(ループ開始)すると、ノイズが強く出るようです。
(逆に低音の無いタイミングならノイズが乗らないこともあります)
これらは仕様ということで諦めるしかないのでしょうか?
それとも改善する手立てはあるのでしょうか?
よろしくお願いします。
以下は現象を確認したテストコードです。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE );
if( DxLib_Init() == -1 ){ return -1; }
SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE );
int soundHandle = LoadSoundMem( "test.wav" );
SetLoopPosSoundMem( 8000, soundHandle );
ChangeVolumeSoundMem( 128, soundHandle );
PlaySoundMem( soundHandle, DX_PLAYTYPE_LOOP );
WaitKey(); //ここでループまで待った時ノイズ
StopSoundMem( soundHandle );
WaitKey();
ChangeVolumeSoundMem( 0, soundHandle );
PlaySoundMem( soundHandle, DX_PLAYTYPE_LOOP, FALSE ); //音量0のはずなのにノイズ
WaitKey();
DxLib_End();
return 0;
}
※WAVとOGGでテストしましたが両方とも現象が起きました。
環境は
Windows 7 Home Premium 64-bit (6.1, Build 7601) Service Pack 1
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (8 CPUs), ~3.4GHz
8192MB RAM
NVIDIA GeForce GTX 660 (Driver Version: 9.18.13.3523)
Visual Studio 2010 Professional (Version: 10.0.40219.1 SP1Rel)
※ディスプレイ2台です。
テストに使用した音声ファイルはまだ非公開のものなので
申し訳ありませんが、どこかへアップロードするといったことは出来ません・・・
メールなどでの個人的なやりとりなら問題ないので、必要でしたらお申し付けください。
※追記
DXライブラリのバージョンを記載するのを忘れいていました。
バージョンは4月25日の3.12です。
また、タイトルと直接は関係なくなってしまうのですが、3.11e(fでは未確認です)までできていた
とあるサウンドハンドルの音声を再生中に同一のサウンドハンドルの音声を再生(同じ音声を2重に再生)
をすることが出来なくなていました。
過去に似た現象が発生した際はバグとして修正されており
この現象は管理人さんの意図した動きではないと思いますので、合わせて報告させていただきます。