C микрофона звук идет по такому же принципу, как и через порт. В данном случае необходимо настроить микрофон на тот же формат и брать буфер равным 320 байт, при заполнении которого пересылать данные в порт. Если память не изменяет, для получения звука я использовал компонент из DelphiX. Хотя могу и наврать )
Постараюсь найти время и глянуть.
------------------------------------------------
Добавлено позже:
Наврал ))
Это куски кода, которые осуществляют получение звукового потока из микрофона (ну или другого выбранного устройства в микшере)
WavBufLen=10;
FCapture: TSoundCaptureStream;
FWaveStream: TWaveStream;
ShellMW.FWaveStream := TWaveFileStream.Create(ShellMW.LastFile, fmCreate);
with ShellMW.FCapture.SupportedFormats[SoundFormatIndex] do ShellMW.FWaveStream.SetPCMFormat(SamplesPerSec, BitsPerSample, Channels); //здесь задаются параметры входного сигнала
ShellMW.FWaveStream.Open(true);
ShellMW.FCapture.BufferLength:=WavBufLen;
ShellMW.FCapture.OnFilledBuffer:=ShellMW.CaptureFi lledBuffer;
ShellMW.FCapture.CaptureFormat:=SoundFormatIndex;
ShellMW.FCapture.Start;
procedure TShellMW.CaptureFilledBuffer(Sender: TObject);
var
work_buffer: array [0..999] of byte;
i: integer;
begin
Fcapture.Read(work_buffer, 200);
end;
процедура CaptureFilledBuffer срабатывает каждый раз при заполнении буфера
наводку дал, пока много времени нет, когда напишу то выложу