Показать сообщение отдельно
  #9  
Старый 06.07.2012, 00:03
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не пудри мозги себе и другим, всё работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  I    : integer;
  wout : hWaveOut;
  fmt  : tWAVEFORMATEX;
  hdr  : array[0..2] of WAVEHDR;
begin
  prepareSine;

  with fmt do
  Begin
    wFormatTag      := WAVE_FORMAT_PCM;
    nChannels       := 1;
    nSamplesPerSec  := SPS;
    wBitsPerSample  := 16;
    nBlockAlign     := nChannels * wBitsPerSample div 8;
    nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
    cbSize          := 0;
  end;

  WaveOutOpen(@wout, Cardinal(-1), @fmt, 0, 0, 0);

  if wout <> 0 then
  begin
    for I := 0 to High(hdr) do
    begin
      FillChar(hdr[i], sizeof(hdr[i]), #0);
      hdr[i].lpData := @second[i];
      hdr[i].dwBufferLength := SizeOf(second[i]);

      waveOutPrepareHeader(wout, @hdr[i], SizeOf(hdr[i]));
      WaveOutWrite(wout, @hdr[i], SizeOf(hdr[i]));
    end;

    Sleep(3100);	// sleep for 3 seconds

    waveOutUnprepareHeader(wout, @hdr, SizeOf(WAVEHDR));
    WaveOutClose(wout);
  end;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием