var
WaveIn: HWaveIn;
WaveFormat: TWaveFormatEx;
WaveHeader: TWaveHdr;
Buffer:
array
[
0..1023
]
of
Byte
;
FileStream: TFileStream;
procedure
TForm1
.
Button1Click(Sender: TObject);
begin
WaveFormat
.
wFormatTag := WAVE_FORMAT_PCM;
WaveFormat
.
nChannels :=
1
;
WaveFormat
.
nSamplesPerSec :=
44100
;
WaveFormat
.
nAvgBytesPerSec := WaveFormat
.
nSamplesPerSec * WaveFormat
.
nChannels *
2
;
WaveFormat
.
nBlockAlign :=
2
;
WaveFormat
.
wBitsPerSample :=
16
;
WaveFormat
.
cbSize :=
0
;
WaveInOpen(@WaveIn, WAVE_MAPPER, @WaveFormat,
0
,
0
,
0
);
WaveInStart(WaveIn);
WaveInPrepareHeader(WaveIn, @WaveHeader, SizeOf(WaveHeader));
WaveInAddBuffer(WaveIn, @WaveHeader, SizeOf(WaveHeader));
end
;
procedure
TForm1
.
Button2Click(Sender: TObject);
begin
FileStream := TFileStream
.
Create(
'c:\wav\sound.wav'
, fmCreate);
try
WaveInUnprepareHeader(WaveIn, @WaveHeader, SizeOf(WaveHeader));
WaveInStop(WaveIn);
WaveInClose(WaveIn);
FileStream
.
WriteBuffer(WaveFormat, SizeOf(WaveFormat));
FileStream
.
WriteBuffer(WaveHeader
.
lpData^, WaveHeader
.
dwBufferLength);
ShowMessage(
'Звук успешно сохранен!'
);
finally
FileStream
.
Free;
end
;
end
;