用QBASIC编制“芭蕾舞曲”

Author: 陈炜先 Date: 1997-01-01

  QBASIC语言具有两种音乐编程功能。一种是用SOUND语句,后面加上音调的频率和持续的时间;另一种是用PLAY语句,后面加上置于双引号里的表示八度音程区和音阶的字母以及表示音长的数字。如果引号里的内容多处重复,可用一个表示字符串的变量名来替代。如本程序第30行的变量A$即表示:八度音程区为00,音阶为A,音长为8分音符,接着是8度音程为01,音阶为E,音长又为8分音符。第35行表示将第30行A$所表示的两个音符连续重复演奏4次。第20行表示节拍速度。本程序是用QBASIC语言的后一种功能编程演奏的芭蕾舞曲《天鹅湖》中的一首乐曲。
  5 CLS
  10 LOCATE 12,25:PRINT "芭蕾舞曲《四小天鹅》"
  20 PLAY  "T100"
  30 A$="00A801E8"
  35 PLAY A$+A$+A$+A$
  40 FOR I=1 TO 2
  45 IF I=2 OR B=1 THEN 55
  50 PLAY  "P803C8C8C8":B=0: GOTO 60
  55 PLAY  "02A803C8C8C8"
  60 PLAY  "C8.02B3203C32D8C8"
  65 PLAY  "02B803D8D8D8D8.C32D32E8D8"
  70 PLAY  "C8E8A8G#8E802B803E16D16C1602B16"
  80 PLAY  "02A803E8A8G#803E802B803E16D16C1602B16"
  90 NEXT
  100 IF B=1 THEN 230
  110 FOR I=1 TO 2: A=0
  120 PLAY  "02A803E8E8E"
  125 PLAY  "E8E8A16G16F16E16"
  130 PLAY  "D8E4F4C#4D8D8D8D8D8D8D8G16F16E16D16"
  140 IF A=1 THEN 180
  150 PLAY  "C8G8B16A16G16F16E8B804D16C1603B16A16"
  160 PLAY  "03G8E8E8E8"
  170 A=1: GOTO 125
  180 PLAY  "03C802A8B1603C16D16D#16E802E8F16F#16G16G#16"
  190 NEXT
  220 B=1: GOTO 40
  230 FOR I=1 TO 2
  240 PLAY  "02A803E8D8E16D16C8E8D8E16D16"
  250 PLAY  "C8E4D4C402B8"
  260 NEXT
  270 PLAY  "02A803G#8A4"
  280 END