Форум: "Media";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизСигнал микрофона Найти похожие ветки
← →
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 вся ветка
Форум: "Media";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.047 c