Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.03.2011, 15:15
phoenix707 phoenix707 вне форума
Прохожий
 
Регистрация: 16.03.2011
Сообщения: 1
Репутация: 10
По умолчанию Как считать стерео-сигнал

Помогите пожалуйста. Мне необходимо считать стерео сигнал с микрофона и обрабатывать каждый канал независимо друг от друга.

Вот кусок кода моей программы, она обрабатывает моно сигнал:

Код:
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, то я так понял стересигнал будет микшироваться, а мне нужно отдельно каждый сигнал обрабатывать в параллельных процессах. Как это сделать?

Последний раз редактировалось Admin, 16.03.2011 в 15:21.
Ответить с цитированием
  #2  
Старый 25.03.2011, 10:42
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

Цитата:
Сообщение от phoenix707
Помогите пожалуйста. Мне необходимо считать стерео сигнал с микрофона и обрабатывать каждый канал независимо друг от друга.

Если я поставлю nChannels := 2, то я так понял стересигнал будет микшироваться, а мне нужно отдельно каждый сигнал обрабатывать в параллельных процессах. Как это сделать?
Я что-то не понял... а как ты стерео в микрофон пишешь?))
У тебя поступающий сигнал что левый что правый канал одно и тоже получится...
Хочешь обрабатывать их отдельно? Тогда копируй Моно с микрофона в Л и П стерео каналы (которые самому надо создавать), только при помещении его в каналы громкость звука дели на 2...

Последний раз редактировалось Janom, 25.03.2011 в 10:50.
Ответить с цитированием
  #3  
Старый 25.03.2011, 20:43
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Моя сильно хочет увидить стерео микрофон.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter