の大部分の高品質 vs2010 最適化設定は、歩き回るためのものでした。
RAMディスクからwavファイルを再生すると、最高のサウンドが得られました
その後、メモリ再生に移行すると、起動時のSQが悪化していました.
memcpy として知られる特性が元凶だったということをすべて説明しました。ほとんどのメモリ熱心なゲーマーは memcpy を宣言しています。これは、メモリ プレイの音が悪い、つまりデジタル サウンドである理由を明確にする最も適切なものの 1 つです。 . 幸いなことに、http://www.agner.org/optimize/ から memcpy の最適化されたバージョンが提供されています。このバージョンを宣言すると、memcpy によって生じる厄介な問題が取り除かれます。
また、ほとんどの熱心なゲーマーはメモリをスコアリングするために malloc を宣言しますが、ユニークなのは C++ の方法論であり、より高く聞こえます。
以下の exe を更新しました。素晴らしい音です。私はずっとそれを宣言しています。JPlay の処理されたサウンドには同意しません。私のデバイスで聞くことに同意する最も簡単な参加者です。
https://rapidshare.com/#myrs_filemanager/file/3363
以下の最適化されたループ。
BYTE *sound_buffer=一意の BYTE ;
hr=mmioRead(hFile, (HPSTR)sound_buffer, nBytesInFile);
mmioClose(hFile, 0);
//UINT32 nByteCnt=nBytesInFile – nBytesThisPass*2;
//一方 (nBytesToSkip
do
{
WaitForSingleObject(hNeedDataEvent, INFINITE);
hr=pAudioRenderClient->ReleaseBuffer(nFramesInBuffer, 0);
hr=pAudioRenderClient->GetBuffer(nFramesInBuffer, &pData);
A_memcpy (pData, sound_buffer + nBytesToSkip, nBytesThisPass);
nBytesToSkip +=nBytesThisPass;
}
while (–nBuffersPlayed);
//while (nBytesToSkip
// レンダリング ループ
WaitForSingleObject(hNeedDataEvent, INFINITE);
//hr=mmioRead(hFile , (HPSTR)pData, nBytesThisPass);
hr=pAudioRenderClient->ReleaseBuffer(nFramesInBuffer, 0);
WaitForSingleObject(hNeedDataEvent, INFINITE);
hr=pAudioRenderClient->GetBuffer(nFramesInBuffer, &pData);
nFramesThisPass=nFramesInFile – nBuffersinFile*nFramesInBuffer;
nBytesThisPass=nFramesThisPass pWfx->nBlockAlign;
A_memcpy (pData, sound_buffer + nBytesToSkip, nBytesThisPass);
if (nFramesThisPass
ZeroMem ory(pData + nBytesThisPass, nBytesToZero);
}
http://mqnplayer.blogspot.co.uk/