Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
4-28366
Sender
2002-10-28 19:50
2002.12.09
Буфер обмена


3-27824
Карелин Артем
2002-11-15 11:02
2002.12.09
Как вам такой запрос???


14-28231
copyr25
2002-11-16 14:59
2002.12.09
В Исландию! Поздравьте меня!


1-28034
mazepa
2002-11-27 20:04
2002.12.09
массивные массивы


1-27930
jackie
2002-11-27 08:28
2002.12.09
динамическая память





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский