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