with
header
do
begin
wFormatTag := WAVE_FORMAT_PCM;
nChannels :=
1
;
nSamplesPerSec :=
22050
;
wBitsPerSample :=
integer
(Bits16) *
8
+
8
;
nBlockAlign := nChannels * (wBitsPerSample
div
8
);
nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
cbSize :=
0
;
end
;
WaveInOpen(
Addr
(WaveIn), WAVE_MAPPER,
addr
(header),
Form1
.
Handle,
0
, CALLBACK_WINDOW);
BufLen := header
.
nBlockAlign * BufSize;
hBuf := GlobalAlloc(GMEM_MOVEABLE
and
GMEM_SHARE, BufLen);
Buf := GlobalLock(hBuf);
with
BufHead
do
begin
lpData := Buf;
dwBufferLength := BufLen;
dwFlags := WHDR_BEGINLOOP;
end
;
WaveInPrepareHeader(WaveIn,
Addr
(BufHead), sizeof(BufHead));
WaveInAddBuffer(WaveIn,
addr
(BufHead), sizeof(BufHead));
GetMem(p, BufSize * sizeof(TPoint));
stop :=
true
;
WaveInStart(WaveIn);