Futurebasic/语言/参考/声音频率
外观
SOUND pitch,duration [,[volume][,async]]
此语句播放给定音高、持续时间和音量的音调。
pitch
以每秒循环数表示频率。您指定的频率将转换为最接近的“MIDI 音符值”,这将确定实际播放的音符。中间“C”对应于 261.625 的频率。
duration
以滴答表示,范围为 0 到 32,767。但是,工具箱声音命令要求 FB 将滴答转换为整数以表示半毫秒。这意味着您可以播放不超过 32.8 秒的音符。
volume
的范围为 0 到 127。指定 0 将导致静音,而 127 将在“声音”控制面板中指定的最大音量播放声音。如果您省略此参数,它将被视为 127。
如果 async
为 _zTrue
,声音将异步播放。如果 async
为 _false
,或者您省略此参数,声音将同步播放。当您异步播放时,您的程序会立即开始执行下一条语句,而声音在后台播放。当您同步播放时,程序中的下一条语句只有在声音播放完毕后才会执行。
如果您异步播放音符,并且在另一个声音仍在后台播放时执行第二个 SOUND
语句,新的声音将不会在第一个声音结束之前开始播放。请注意,在某些机器上,此技术会导致声音丢失。异步播放时,最好使用 SOUND%
函数来确定一个声音何时结束,然后再尝试播放下一个声音。
播放声音频率的一种方法是使用负数(从 -1 到 -127)来表示您想要播放的音符。下表显示了如何使用这些值。
图片在这里
使用 MIDI 表作为指南,我们可以创建“伦敦桥倒下来”的版本,如下所示
<code><b>PRINT</b> "Pop! "; : <b>SOUND</b> -70, 45 ,,_false<br> <b>PRINT</b> "Goes "; : <b>SOUND</b> -64, 30 ,,_false<br> <b>PRINT</b> "the "; : <b>SOUND</b> -67, 15 ,,_false<br> <b>PRINT</b> "wea"; : <b>SOUND</b> -66, 40 ,,_false<br> <b>PRINT</b> "sel "; : <b>SOUND</b> -62, 45 ,,_false</code>
SOUND%; SOUND END; SOUND<snd>