Mega Code Archive

 
Categories / Delphi / Multimedia
 

Beep- sound in delphi

The following assembler Routines implement sound output via port access and work therefore only with Win3.x and Win95/98. Simply call Sound(hz) with hz as frequency in Hz, and stop the sound output with NoSound(). If your application will run under Windows NT, you may use the operating system routine: Windows.Beep(Frequency, Duration); function InPort(PortAddr:word): byte; assembler; stdcall; asm mov dx,PortAddr in al,dx end; procedure OutPort(PortAddr: word; Databyte: byte); assembler; stdcall; asm mov al,Databyte mov dx,PortAddr out dx,al end; procedure Sound(Hz : Word); var TmpW : Word; begin OutPort($43,182); TmpW :=InPort($61); OutPort($61,TmpW or 3); OutPort($42,lo(1193180 div hz)); OutPort($42, hi(1193180 div hz)); end; procedure NoSound; var TmpW : Word; begin OutPort($43,182); TmpW := InPort($61); OutPort($61,TmpW and 3); end;