Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Сигнал микрофона   Найти похожие ветки 

 
FBI Agent ©   (2006-04-03 17:39) [0]

Подскажите как сделать чтобы программа считывала сигнал из микрофона, и если он превысит -32,3 dB, тогда .... ну и там я буду делать дальше :)


 
XProger ©   (2006-04-03 18:54) [1]

WaveInStart


 
FBI Agent ©   (2006-04-03 21:34) [2]

XProger ©   (03.04.06 18:54) [1]
Если не затруднит покажи на примере, а то я раньше никогда таким не занимался...


 
Jeer ©   (2006-04-04 09:35) [3]

FBI Agent ©   (03.04.06 21:34) [2]

Начни и все образуется.
Справка win по MCI-коммандам


 
FBI Agent ©   (2006-04-04 15:26) [4]

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


 
Jeer ©   (2006-04-04 16:13) [5]

"Неужели так трудно показать на маленьком примерчике как открыть свой банк, короче, - свое дело и чтоб бабки текли вне завизимости от моих умственных напряжений ? "


 
FBI Agent ©   (2006-04-04 16:27) [6]

Толкового ответа сдесь мне наверное никто так и не даст...


 
Сергей М. ©   (2006-04-04 16:42) [7]

Первый раз про децибеллы слышишь что ли, "толковый" ты наш  вопрошающий ?

Или с элементарной математикой не знаком / не дружишь ?

Или двух слов связать не можешь, чтобы "толково" описать свои проблемы ?

"Как сделать .."   .. Да вестимо как - головой и руками !


 
XProger ©   (2006-04-04 17:55) [8]

Вот буквально отрывки кода
procedure TRecorder.Close;
begin
WaveInStop(WaveIn);
WaveInReset(WaveIn);
WaveInClose(WaveIn);
end;

constructor TRecorder.Create;
begin
inherited Create;
FHand:=AllocateHWND(WndProc);
end;

destructor TRecorder.Destroy;
begin
//DeallocateHWnd(FHand);
inherited Destroy;
end;

procedure TRecorder.Open(Frec, bit: integer);
var mm:TWaveFormatEx;
begin
mm:=CpcmWav(Frec,bit);
WaveInOpen(@WaveIn,0,@mm,FHand,0,CALLBACK_WINDOW);
end;

procedure TRecorder.StartRec;
var
index:Integer;
Header:PWaveHdr;
Buffer:PChar;
begin
if Active then
begin
for index:=0 to 2 do
begin
new(Buffer);
Getmem(Buffer,cSize);
new(Header);
Header.lpData:=Buffer;
Header.dwBufferLength:=cSize;
Header.dwBytesRecorded:=0;
Header.dwUser:=0;
Header.dwFlags:=0;
Header.dwLoops:=0;
Header.lpNext:=nil;
Header.reserved:=0;
WaveInPrepareHeader(WaveIn,Header,SizeOf(TWaveHdr));
WaveInAddBuffer(WaveIn,Header,SizeOf(TWaveHdr))
end;
WaveInStart(WaveIn);
end;
end;

procedure TRecorder.StopRec;
begin
WaveInStop(WaveIn);
end;

procedure TRecorder.WndProc(var Message:TMessage);
var
Header:PWaveHdr;
Data:PChar;
BytesRec:Integer;
begin
case Message.Msg of
WIM_OPEN:begin
Active:=true;
StartRec;
end;
WIM_CLOSE:
begin
Active:=False;
end;
WIM_DATA:
begin
Header:=PWaveHdr(Message.LParam);
if Active then
begin
WaveInUnPrepareHeader(WaveIn,Header,SizeOf(TWaveHdr));
if Assigned(FOnData) then
begin
BytesRec:=Header.dwBytesRecorded;
new(Data);
GetMem(Data,BytesRec);
Move(Header.lpData^,Data^,BytesRec);
FOnData(Data,BytesRec);
FreeMem(Data);
end;
Header.dwBytesRecorded:=0;
Header.dwUser:=0;
Header.dwFlags:=0;
Header.dwLoops:=0;
Header.lpNext:=nil;
Header.reserved:=0;
WaveInPrepareHeader(WaveIn,Header,SizeOf(TWaveHdr));
WaveInAddBuffer(WaveIn,Header,SizeOf(TWaveHdr));
end;
end;
else
Message.Result:=DefWindowProc(FHand,Message.Msg,Message.WParam,Message.LParam);
end;
end;

Data содержит записанные данные в соответствии с указаными параметрами буфера. Делаешь с данными всё что хочешь и читаешь следующий блок и т.д.
Без MSDN тут сложно что-либо понять...



Страницы: 1 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.079 c
1-1158867543
Алексей А.
2006-09-21 23:39
2006.11.05
Как запихнуть форму в tPanel


15-1160645496
TohaNik
2006-10-12 13:31
2006.11.05
Как определить нигерийскую фамилию:) или продолжение будет...?


15-1161074442
ZeroDivide
2006-10-17 12:40
2006.11.05
Мне стыдно за мой универ :(


3-1157487661
Itonix
2006-09-06 00:21
2006.11.05
Decision Cube


2-1161067677
morda
2006-10-17 10:47
2006.11.05
MySQL