如何用Pascal语言进行声音编程

我想询问一下如何使用pascal语言编写能发出声音的程序?

Turbo pascal 声音编程

一、使用Pascal进行声音操作前的准备

首先需要说明的是我们所说的Pascal声音操作,并不是指实现Pascal对于声卡进行操作,而是利用Pascal对计算机的PC喇叭操作,使它发出声音。

在Turbo Pascal中有一个叫做CRT单元的东西,CRT单元实现了一系列强大的可以充分地控制你计算机的功能CRT单元提供了控制显示模式、扩展键盘代码、显示颜色、窗体和声音的功能。

若是要在Turbo Pascal中实现声音操作,就必须要调用CRT单元。那么怎么样来调用CRT单元呢?现在介绍一下单元调用语句:USES

USES的语法:
USES 单元表识符,……,单元表识符;
说明:
扩展名为*.TPW是Windows下的单元文件,*.TPU是DOS下的单元文件。

二、Pascal声音操作的全部——三个过程

其实,Pascal的声音操作是十分简单的,一共可以使用的过程也只有3个,由此可见,你可以用很少的时间使你的PC喇叭发出你所希望的长度、你所希望的频率的声音

(1)SOUND过程

调用SOUND的方法: SOUND(HZ);

说明:在调用SOUND的时候,它的参数HZ必须是WORD,也就是说变量HZ必须在0~65535这个范围中,变量HZ就是使PC喇叭发出等于HZ变量数值的频率的声音,由此可见人耳可以听见的范围远远小于这个范围。

(2)DELAY过程

调用DELAY的方法: DELAY(TIME);
说明:当你在调用了SOUND过程之后,必须指定它发出变量HZ所指定的频率的声音的时间长度,DELAY就是用来指定这个长度的过程,变量TIME必须是大于等于零的整数,并且当TIME=1000时,它所延迟的时间是1秒,也就是说TIME的单位是千分之秒。

(3)NOSOUND过程

调用DELAY的方法: NOSOUND;
说明:NOSOUND是一个无参过程,它的作用从过程名上就可以看出——用来使PC喇叭停止发声,在调用SOUND之后,最好是要调用NOSOUND使PC喇叭停止发声。

例:用于上过程编写一个警报程序:
PROGRAM Alert;
USES Crt;
VAR
Hz : Word;
Count : Word;
BEGIN
REPEAT
Count:=Count+1;
Hz := 262;
WHILE Hz <= 524 DO
BEGIN
Sound(Hz);
Delay(2);
Hz := Hz + 1;
END;
UNTIL Count = 10;
Nosound;
END.

注意,在不同的机器上发出的声音有所差异。这是因为计算机主频不同。还有,在试验这个程序,或者说试验这种发声程序之前,最好先准备一个调用NOSOUND使PC喇叭停止发声的简单程序,以免异常中断,使喇叭响个不停。

========================= ========================

可以使用CLRSCR函数在需要处清屏
不过如果要使用 CLRSCR(清屏过程,在 DOS单元中)的话,必须在程序头部加上: USES DOS;
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-05-24
Free Pascal能编写简单的发声程序

加载 crt 单元后有以下过程:

Procedure sound(const h: word);
表示鸣片开始发出频率为h (Hz)的声音

Procedure nosound;
表示鸣片停止发声

例子:
Program ex;
Uses
crt; //加载crt单元

Var
i: longint;

Begin
repeat
for i:=300 to 400 do
begin
sound(i * 10); //发出3000--4000 的声音
delay(10); // 滞留10毫秒
end;
until keypressed; //直到键盘按下
readkey; //读取键盘
nosound; //停止发声
End.
第2个回答  2008-06-01
语句是
sound(h);{h代表赫兹,就是音有多高}
delay(t);{t是这个声音的长短}

这是一个实例——
编写一个警报程序:
PROGRAM Alert;
USES Crt;
VAR
Hz : Word;
Count : Word;
BEGIN
REPEAT
Count:=Count+1;
Hz := 262;
WHILE Hz <= 524 DO
BEGIN
Sound(Hz);
Delay(2);
Hz := Hz + 1;
END;
UNTIL Count = 10;
Nosound;
END.
第3个回答  2008-05-28
USER CRT;
...
SOUND([XHZ]);
NO SOUND

如何用Pascal语言进行声音编程
(1)SOUND过程 调用SOUND的方法: SOUND(HZ);说明:在调用SOUND的时候,它的参数HZ必须是WORD,也就是说变量HZ必须在0~65535这个范围中,变量HZ就是使PC喇叭发出等于HZ变量数值的频率的声音,由此可见人耳可以听见的范围远远小于这个范围。(2)DELAY过程 调用DELAY的方法: DELAY(TIME);说明:当你在...

如何用free Pascal 编程 唱生日歌
pascal确实有这样的函数,在crt库里面,在开头输入uses crt;之后即可使用这一函数。通过sound(x)函数发出不同频率的“毕”声音,来唱生日歌。但是这个函数很有可能在windows平台下已经失效了,无论参数是什么,发出的声音都一样。在有的编译器中,甚至无法识别这个函数。像这样直接用电脑特殊硬件的程序,...

pascal怎么制作音乐播放器,让电脑发出声音
用beep(频率,发声时间);(在程序开头要加uses windows)或者sound(频率);daley(发声时间);nosound(在程序开头要加uses crt)

free pascal如何让电脑发声
1、 PASCAL表达式中没有分式,只能以除号“\/”来隔开;2、 PASCAL表达式中的分子与分母应该用括号括开;3、 PASCAL表达式中只有小括号,不能有中括号或大括号,小括号可以有很多层;4、 PASCAL表达式中没有乘幂,只能用乘法来表达(在FP中有平方函数,所以可以使用SQR函数);5、 PASCAL*表达式中任意两...

pascal语言的声音程序问题
首先, Trubo Pascal 是没有crt 单元的,所以没有声音在Free Pascal 中 sound(i)中i的取值范围是word当电脑的PC扬声器输出10000hz时,加或减100hz对声音影响不大,人耳不能辨别,可以修改一下:PROGRAM Alert;USES Crt;VAR Hz : Word;Count : Word;i:integer;BEGINHz := 200;for i:=1 to ...

free pascal变的程序如何执行.EXE的时候发出背景音乐
背景音乐似乎做不到,但是可以发出音效 在程序的开头加入以下代码:uses crt;就可以在程序中调用音效过程sound(x),其中x代表发出声音的频率

青花瓷的Pascal程序,能让主机发出声音
用法是sound(HZ),其中HZ是发声的频率,要使用本函数你要先确定你的pascal中有crt这个单元,要不然就没法用了,看例子:program beesound;uses crt;var HZ:integer;begin read(HZ);sound(HZ);readln;nosound;end.后面加个nosound是停止发声,要不然你的机器会一直响下去,很吓人的。

Pascal 中,uses函数里怎样发出声音?
uses没听说能发声音 但是uses windows;以后 可以使用这个函数发声音(而且不用音响,强吧)function Beep(dwFreq, dwDuration: DWORD): BOOL; stdcall;参数 类型及说明 dwFreq Long,声音频率(从37Hz到32767Hz)。在windows95中忽略 dwDuration Long,声音的持续时间,以毫秒为单位。如为-1,表示一直...

求pascal语言中怎样不用sound过程发出声音
把 stdcall; external 'winmm.dll' name 'mciexecute'改成while not eof do begin stdcall; external 'winmm.dll' name 'mciexecute';end;

如何通过编程使机箱发出声音?
Const Fa = 352 Const Sol = 396 Const La = 440 Const Ti = 495 Const Do1 = 528 Const T4 = 1000 Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long Private Sub Command1_Click()Beep Do0, T4 Beep Re, T4 Beep Mi, T4...

相似回答
大家正在搜