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

Вниз

Запись звука   Найти похожие ветки 

 
Incomer   (2003-11-04 13:20) [0]

FOR ALL ...
Несколько примеров по работе с микрофоном plz
Приветствуются и линки на компоненти
10Х


 
Fredericco ©   (2003-11-04 13:31) [1]


....
uses ...MMSystem...
....

type
TArrayBuf = array[0..1023]of byte;//1 KByte
PArrayBuf = ^TArrayBuf;
TForm1=class(TForm)
......
public
WaveFormat:TWaveFormatEx;
WaveIn:PHWaveIn;
IsOn:boolean;
Procedure WNDPROC(var msg:TMessage);override;
Procedure InitWaveIn(mBool:boolean);
{ Public declarations }
end;

var
Bufi1:Array[0..1023] of double;

.......
Procedure Tform1.WNDPROC(var msg:TMessage);
var
Hdr:PWaveHdr;
begin
INHERITED;
case msg.Msg of
MM_WIM_OPEN:
begin

end;
MM_WIM_CLOSE:
begin
end;
MM_WIM_DATA:
begin
Hdr:=PWaveHdr(msg.LParam);

for i:=0 to hdr^.dwBytesRecorded-1 do begin
Bufi1[i]:=PArrayBuf(hdr.lpData)^[i];//Оцифрованный звук
end;

WaveInUnprepareHeader(WaveIn^,hdr,Sizeof(TWaveHdr));

Dispose(hdr.lpData);
DisPose(hdr);

if isOn=false then
exit;

Hdr:=new(PWaveHdr);
Hdr^.lpData:=pointer(new(PArrayBuf));
Hdr^.dwBufferLength:=1024;
Hdr^.dwBytesRecorded:=0;
Hdr^.dwUser:=0;
Hdr^.dwFlags:=0;
Hdr^.dwLoops:=0;

WaveInPrepareHeader(WaveIn^,Hdr,Sizeof(TWaveHdr));
WaveInAddBuffer(WaveIn^,hdr,Sizeof(TWaveHdr));
end;

end; //Case
end;

Procedure Tform1.InitWaveIn(mBool:boolean);
var
i:integer;
WaveHdr:PWaveHdr;
DaBuffer:PArrayBuf;
openError,PrepareError,BufferAddError,StartError:integer;
begin
if mBool then
begin
WaveFormat.wFormatTag:=WAVE_FORMAT_PCM;
WaveFormat.nChannels:=2; //Моно
WaveFormat.nSamplesPerSec:=11025;
WaveFormat.nAvgBytesPerSec:=11025;
WaveFormat.nBlockAlign:=4;
WaveFormat.wBitsPerSample:=8;

WaveIn:=new(PHWaveIn);
openError:=WaveInOpen(WaveIn,0,@WaveFormat,handle,0,CALLBACK_WINDOW);
for i:=1 to 8 do
begin
DaBuffer:=new(PArrayBuf);
WaveHdr:=new(PWaveHdr);
with WaveHdr^ do
begin
lpData:=pointer(DaBuffer);
dwBufferLength:=sizeof(DaBuffer);//1024 = 1 Kb
dwBytesRecorded:=0;
dwUser:=0;
dwFlags:=0;
dwLoops:=0;
end;
PrepareError:=WaveInPrepareHeader(WaveIn^,WaveHdr,sizeOf(TWaveHdr));
BufferAddError:=WaveInAddBuffer(WaveIn^,WaveHdr,Sizeof(TWaveHdr));
end;
StartError:=WaveInStart(WaveIn^);

if (openError<>0)or(PrepareError<>0)or(BufferAddError<>0)or(StartError<>0)then
Showmessage("Error, mlin");
end else
begin
WaveInStop(WaveIn^);
if WaveIn<>nil then WaveInReset(WaveIn^);
if WaveIn<>nil then WaveInClose(WaveIn^);
Dispose(WaveIn);
end;
end;

procedure TForm1.btnStartClick(Sender: TObject);
begin
IsOn:=true;
InitWaveIn(true);
end;

procedure TForm1.btnStopClick(Sender: TObject);
begin
IsOn:=false;
InitWaveIn(false);
end;



 
Fredericco ©   (2003-11-04 13:33) [2]

Не забывай говорить пожалуйста.


 
Ru ©   (2003-11-04 13:34) [3]

Да пре будет с тобой http://www.un4seen.com/ ну и прочая такая фигня http://www.fmod.org


 
Incomer   (2003-11-04 13:44) [4]

10X


 
Fredericco ©   (2003-11-04 13:45) [5]

Удалено модератором


 
isko ©   (2003-11-04 13:46) [6]

Fredericco © -
вы же 10X не осветили:)


 
Fredericco ©   (2003-11-04 13:48) [7]

2 Fredericco © (04.11.03 13:45) [5]
Мы с Ру требуем предоплату!!! :-))))


 
Incomer   (2003-11-04 13:50) [8]

2 Fredericco & Ru - 10X - excluzive - (:-



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
14-90130
Igor_thief
2003-10-31 18:00
2003.11.27
DLL


1-89854
Mishenka
2003-11-15 22:48
2003.11.27
Неправильно печатается файл :(((


7-90137
nevalex
2003-08-30 09:03
2003.11.27
Как добавить свою кнопку в меню CTRL+ALT+DEL в 9x


8-90009
GILforever
2003-08-02 02:26
2003.11.27
Многообъектная печатаемая поверхность


3-89699
Vemer
2003-11-10 14:49
2003.11.27
Как правильно задать параметр запроса с датой.