📅  最后修改于: 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音符,进而生成各种复杂的音乐序列。