Показать сообщение отдельно
Старый 13.03.2012, 18:44   #23
Autumnus
Новичок
 
Регистрация: 08.03.2012
Сообщений: 15
Поблагодарил: 0
Поблагодарили 4 раз за 4 сообщений
Репа: 0
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 срабатывает каждый раз при заполнении буфера

наводку дал, пока много времени нет, когда напишу то выложу

Последний раз редактировалось Autumnus; 13.03.2012 в 18:55. Причина: Сообщения , идущие подряд, объединены.
Autumnus вне форума   Ответить с цитированием Вверх