跳转到内容

QBasic/Sound

来自维基教科书,开放的书籍,开放的世界

QBasic 有三种发出声音的方法。

  • BEEP 命令
  • SOUND 命令
  • PLAY 命令

以前用 PRINT CHR$(07) ,现在可以使用 BEEP 命令发出蜂鸣声。它通常用于在显示重要信息时引起注意。

'Syntax example
BEEP 
PRINT CHR$(07)

这两个命令,正如在计算机上运行此程序所见,完全相同。


SOUND 命令从 PC 扬声器产生特定频率和持续时间的特定声音。一次只能播放一个声音。如果连续发出多个 SOUND 语句,则第一个语句之后的每个语句都不会执行,直到上一个语句完成。

SOUND f, d
  • f - 频率,以赫兹为单位,范围从 37 到 32767
  • d - 持续时间,以滴答声为单位,范围从 0 到 65535,每秒有 18.2 滴答声
SOUND 100, 18.2

播放 100 赫兹波形持续 18.2 滴答声,大约 1 秒。

QBasic 允许的最低频率为 37 赫兹,大约是第二八度的 D 音。最高频率为 32 767 赫兹,但这种音调无法听到,因为正常人耳的听力范围在 20 000 赫兹以下。

SOUND 命令的另一个功能是使用它来控制程序中的时间。

   For x% = 1 TO 10
    Print x%
    Sound 3200,18.2
   NEXT

此程序将打印数字 1 到 10,每个数字之间延迟 1 秒,并播放 3200 赫兹的音频,间隔 1 秒。(由 FalcoN 编辑)

PLAY 命令用于播放音符、八度音。它一次只能播放一个音符。

PLAY 命令还可以播放复杂的存储“歌曲”。这是通过使用歌曲字符串实现的。有关字符串命令的详细信息,请参见QBasic/Appendix#PLAY

Qbasic 中的简单音乐键盘

[编辑 | 编辑源代码]
rem Music keyboard
do 
note$ = inkey$
select case ucase$(note$)
case "A"
Play "A"

case "B"
Play "B"

case "C"
Play "C"

case "D"
Play "D"

case "E"
Play "E"

case "F"
Play "F"

case "G"
Play "G"

end select 

loop until ucase$(note$) = "Q"

end

此代码使用 select case 命令来检查 note$ 的值。Ucase$ 用于确保无论是否应用 Caps Lock 都没有区别。PLAY 命令用于播放不同的音符。这里没有使用 PLAY 的其他功能。

华夏公益教科书