Главная страница
    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.46 MB
Время: 0.007 c
3-27856
Matr
2002-11-20 07:46
2002.12.09
Не все сохраняет после транзакции


8-28155
F8nikita
2002-08-12 01:01
2002.12.09
ПОМОГИТЕ !!!!


4-28331
Me2
2002-10-24 12:28
2002.12.09
Иконка EXE файла


3-27825
KIR
2002-11-16 16:19
2002.12.09
Где нужно применять FIBQuery?


1-28043
[BAD]Angel
2002-11-27 15:15
2002.12.09
ВОПРОС ПО n-файлам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский