初始化都正确,声音也能够听到,音调听上去也正确。只是Unprepare的时间比正常时耗(我设定的是每帧40毫秒)的要多出20多毫秒,总计60毫秒以上。不知道有没有人有这方面的经验?var
  t : Cardinal;
begin
  t := GetTickCount;
  
  FBuffer.Load(ALeftChannel, ARightChannel, ALength); //将两个浮点声道转换成
                                                      //交错的16位音频
                                                      //ALength为样点数
                                                      //在48000khz的采样频率下是1920
  FWaveHeader.dwBufferLength := FBuffer.Size; //返回总缓冲区的大小。
                                              //应该是 ALength * 2字节 * 2声道 = 7680
  //ShowMessage('FWaveHeader.dwBufferLength: ' + IntToStr(FWaveHeader.dwBufferLength));
  //ShowMessage('SampleRate: ' + IntToStr(FSampleRate));
  FWaveHeader.lpData := PChar(FBuffer.Data); //缓冲区指针
  waveOutPrepareHeader(FHandle, @FWaveHeader, SizeOf(FWaveHeader));
  waveOutWrite(FHandle, @FWaveHeader, SizeOf(FWaveHeader));  Stop; //循环检测Unprepare的返回值,如果是PLAYING就Sleep(1);  t := GetTickCount - t;
  //ShowMessage('WriteWave: ' + IntToStr(t));望大家不吝赐教