Turbo Basic 的音乐播放能力

老夫原本已经忘光光了,现在借着 AI 的强大力量捡回来。

Q:在 PC 时代早期,Turbo Basic 语言可以使用 play 语句驱动扬声器发出音乐,年头太久了,你能帮我把简谱转成程序的完整规则说一下吗?

A:Turbo Basic(以及早期的 QBASIC、GW-BASIC)确实可以通过 PLAY 语句驱动 PC 扬声器播放音乐。它的语法类似于一种简单的音乐标记语言,可以将简谱转换成代码。以下是完整的转换规则和示例:

1. PLAY 语句基础语法

  • 音乐字符串由音符、音长、节奏控制符组成,不区分大小写。

2. 简谱 → PLAY 语句转换规则

(1) 音符(音高)

简谱符号 PLAY 代码 说明
1 (Do) C 中央 C(默认八度)
2 (Re) D
3 (Mi) E
4 (Fa) F
5 (Sol) G
6 (La) A
7 (Si) B
0 (休止) P 停顿

升降号处理

  • #(升号):在音符后加 +,如 C+ 表示 C#
  • b(降号):在音符后加 -,如 B- 表示 Bb

(2) 音长(节拍)

简谱符号 PLAY 代码 实际时长(以 4 分音符为基准)
全音符 L1 4 拍
2 分音符 L2 2 拍
4 分音符 L4 1 拍(默认值)
8 分音符 L8 0.5 拍
16 分音符 L16 0.25 拍

附点音符:在音长代码后加 .,如 L4. = 附点 4 分音符(1.5 拍)。

(3) 八度控制

  • O<n>:设置当前八度(n> 范围 1~7,默认 O4,中央 C 在 O4)。
  • >:升高一个八度。
  • <:降低一个八度。

(4) 节奏(速度)

  • T<n>:设置每分钟拍数(BPM),如 T120 表示 120 BPM(默认 T120)。

(5) 其他控制

代码 功能
MN 标准音长(音符间短暂停顿)
ML 连奏(音符间无停顿)
MF 前台播放(等待播放完毕)
MB 后台播放(异步播放)

3. 示例转换

示例 1:《欢乐颂》片段(简谱:3345 5432 1123 322)

  • O4:第 4 八度。
  • L4:默认 4 分音符。
  • 最后一个 D 是 2 分音符(L2)。

示例 2:《小星星》带附点(简谱:1155 665 4433 221)

4. 高级技巧

(1) 和弦(多音同时播放)

Turbo Basic 不支持真正的和弦,但可以通过 MB 后台播放模拟:

(2) 自定义音色(有限支持)

  • N<n>:直接指定频率值(n 范围 0~84,0=休止)。
  • 例如 N60 对应中央 C。

(3) 循环播放

5. 完整示例程序

注意事项

  1. 硬件依赖PLAY 语句依赖 PC 主板上的压电扬声器(蜂鸣器),现代电脑可能无此硬件。
  2. 音色限制:只能生成简单方波,无音色控制。
  3. 替代方案:现代编程语言(如 Python 的 winsound 或 pygame)可更灵活地播放音乐。

 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注