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

Вниз

Звук в Делфи   Найти похожие ветки 

 
Праведник   (2002-11-15 22:34) [0]

Уважаемые мастера, а есть ли в Делфи такая функция или процедура, которая выдаёт звук заданной частоты и амплитуды?


 
mukha ©   (2002-11-15 23:33) [1]

А как? Используя звуковую карту или системный динамик?


 
Праведник   (2002-11-16 00:23) [2]

Меня интитесуют оба варианта...


 
drpass ©   (2002-11-16 03:01) [3]

В WindowsNT/2000/XP действует Windows.Beep - с системным динамиком. В Windows9x не действует. Естественно, амплитуда - это ты загнул. Но частота и длительность в NT регулируется


 
Праведник   (2002-11-16 08:40) [4]

Гм...понятно, а может компонентики иль чего ещё есть, где реализованны подобные функции?


 
copyr25 ©   (2002-11-16 13:21) [5]

Вот простой пример, заставляющий пищать PC-динамик:))

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
//пишем в порт
Procedure OutPort(adr:word;data:byte);
begin
asm
mov dx,adr
mov al,data
out dx,al
end;
end;

//читаем из порта
Function InPort(adr:word):byte;
begin
asm
mov dx,adr
in al,dx
mov @result,al
end;
end;

procedure Dinamik;
var b:byte;
n,m:word;
begin
b:=Inport($61);
for n:=1 to 1200 do {n:=1200 - время звучания}
begin
{m:=400 - период:=1/частота}
for m:=1 to 400 do Outport($61,b and not(2));//устанавливаем 2-й бит равным 0
for m:=1 to 400 do Outport($61,b or 2);//устанавливаем 2-й бит равным 1
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Dinamik;
end;

end.


 
mukha ©   (2002-11-16 22:01) [6]

Можно и так (немного проще):
procedure TForm1.Beep(Tone: Word; Delay: Integer);
begin
asm
mov al, 0b6H
out 43H, al
mov ax,Tone
out 42h,al
ror ax,8
out 42h,al
in al, 61H
or al, 03H
out 61H, al
end;
sleep(Delay);
asm
in al, 61H
and al, 0fcH
out 61H, al
end;
end;


Используй так:

procedure TForm1.Button1Click(Sender: TObject);
begin
Beep(550,300);
end;


 
Вадим ©   (2002-11-16 22:40) [7]

Ээээ, а Windows.Beep(...) уже отменили?


 
Pat ©   (2002-11-17 00:35) [8]

>Меня интитесуют оба варианта...
Про один уже много наговорили, про второй ничего не слышно :)
Есть компонент TToneGen - хорошая вещь :-)
http://mysight.by.ru/ttonegen.zip



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
6-28165
Alex_win
2002-10-11 16:54
2002.12.09
перехват почты


1-28112
DmitriyN
2002-11-27 17:15
2002.12.09
Как в окне MDIParent сделать аналог виндовой панели задач?


14-28201
leon83
2002-11-20 07:50
2002.12.09
Как писать по-русски в DOS-консоли в XP?


14-28196
Оливейра
2002-11-16 17:19
2002.12.09
Hostmos.ru


6-28171
Jel
2002-10-10 14:31
2002.12.09
Мониторинг RAS соединений