HarmonyOS 2 音频处理:基于整数序列生成 MIDI 文件

介绍了 HarmonyOS 2 平台上,使用整数序列生成 MIDI 文件的方法。

音高整数表示法

系统采用音高类 (Pitch Class, PC) 整数表示音符,范围为 0-11,对应关系如下:

| 音符 | C♮ | C♯ | D♮ | D♯ | E♮ | F♮ | F♯ | G♮ | G♯ | A♮ | A♯ | B♮ |

|---|---|---|---|---|---|---|---|---|---|---|---|---|

| PC | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

例如,C♮ 大三和弦表示为 {0, 4, 7},D♮ 小三和弦表示为 {2, 5, 9},F♮ 大七和弦表示为 {5, 9, 0, 4}。

注意: PC 整数表示法不区分音高所在的八度,例如 C4 和 C5 的 PC 值均为 0。

Wolfram 语言函数

系统使用 Wolfram 语言函数进行音频处理,常用函数如下:

  • Range[n]:生成从 1 到 n 的整数序列。
  • Table[f, n]:生成包含 f 函数返回值的 n 元素列表。

示例

(* 生成 C 大调音阶 *)
cMajorScale = {0, 2, 4, 5, 7, 9, 11};

(* 将音阶转换为 MIDI 音符 *)
midiNotes = Table[cMajorScale[[i]] + 60, {i, 1, Length[cMajorScale]}];

(* 将 MIDI 音符写入 MIDI 文件 *)
Export["c_major_scale.mid", midiNotes, "MIDI"];

以上代码将生成一个包含 C 大调音阶的 MIDI 文件 “c_major_scale.mid”。

zip 文件大小:3.48MB