📜  乌兰数序(1)

📅  最后修改于: 2023-12-03 15:06:18.425000             🧑  作者: Mango

乌兰数序

乌兰数序,又称独龙数序、敦煌数序,是指在乌兰松土家族传统音乐中使用的一种编码方式。它是一种基于唱名而非音高的编码方法,具有一定的音乐理论意义。

编码规则

乌兰数序的编码方式是基于唱名的,使用“乌兰、哇、子、丫、呀”等5个字母来表示音高。具体规则如下:

  • 乌兰:表示最高音。
  • 哇:表示高音。
  • 子:表示中音。
  • 丫:表示低音。
  • 呀:表示最低音。

以“乌兰哇子丫呀”表示5个不同音高,对应音阶为“1 2 3 4 5”。

在进行编码时,音乐家会以“乌兰”为基准音,分别用“哇、子、丫、呀”表示与基准音相对应的上行第1、2、3个音,以及下行第4、5个音。例如,如果基准音是“乌兰”,那么哇就表示比乌兰高一个音,子表示比乌兰高两个音,以此类推,丫表示比乌兰低一个音,呀表示比乌兰低两个音。

整个旋律用“乌兰哇子丫呀”的组合方式进行编码,可以表示几乎任何音高的旋律。

应用案例

乌兰数序在乌兰松土家族的传统音乐中广泛应用,被誉为土家族的“音乐密码”。

乌兰数序不仅在传统音乐中有应用,也可以被程序员用于编写音乐相关的代码。比如,在编写MIDI音乐生成器时,可以使用乌兰数序来表示音高,使得程序能够更方便地生成复杂的音乐序列。

下面是一个使用Python实现的乌兰数序转换函数:

def wulan_to_pitch(wulan):
    base_pitch = 60  # C4
    pitch_dict = {"乌兰": 0, "哇": 2, "子": 4, "丫": -2, "呀": -4}
    pitch_delta = sum(pitch_dict.get(c, 0) for c in wulan)
    return base_pitch + pitch_delta

该函数将输入的乌兰数序转换为MIDI音高,其中“乌兰”对应C4,并逐个将五个唱名所对应的音高值叠加起来。通过这种方式,我们可以很方便地将乌兰数序转换成标准的MIDI音符,进而生成各种复杂的音乐序列。