Помогите пожалуйста. Мне необходимо считать стерео сигнал с микрофона и обрабатывать каждый канал независимо друг от друга.
Вот кусок кода моей программы, она обрабатывает моно сигнал:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
header: TWaveFormatEx;
BufLen: word;
buf: pointer;
begin
z:= StrToInt(Edit1.Text);
BufSize := 400; { Размер буфера }
with header do
begin
wFormatTag := WAVE_FORMAT_PCM;
nChannels := 1; { количество каналов }
nSamplesPerSec := 44100; { частота }
wBitsPerSample := 16; { 8 / 16 бит }
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);
end;
Админ: Пользуемся тегами для оформления кода!
Если я поставлю nChannels := 2, то я так понял стересигнал будет микшироваться, а мне нужно отдельно каждый сигнал обрабатывать в параллельных процессах. Как это сделать?