概述
机甲大师升级了固件,增加了多媒体钢琴音的演奏功能。
不过原先的参数是不带音长的,而音乐会有各种不同时长的音符,如附点、切分音等。
另外,机甲大师原先对音符的录入实太过麻烦,且没有对音符时值的输入。
为了能让机甲大师能够演奏不同时长的音符,并且能尽量按简谱的方式输入乐谱,写了以下的代码。
大疆机甲大师演奏 我和我的祖国https://www.zhihu.com/video/1169619390738870272
def playsound(m):
melody = []
for i in m:
if i.isalpha():
if i.islower(): # 小写
melody.append((int(ord(i)) - 97,12))
else:
melody.append((int(ord(i)) - 65 + 14,12))
elif i.isdigit():
if int(i) == 0:
melody.append((-1,12))
else:
melody.append((int(ord(i))- 49 + 7,12))
else:
note=melody[-1][0]
span=melody[-1][1]
if i=='.':
melody[-1]=(note,span*3/2)
elif i=='=':
melody[-1]=(note,span/4)
elif i=='_':
melody[-1]=(note,span/2)
elif i=='-':
melody[-1]=(note,span*2)
elif i=='^':
melody[-1]=(note,span*4)
play(melody)
def play(k):
notes = [
rm_define.media_sound_solmization_1A,
rm_define.media_sound_solmization_1B,
rm_define.media_sound_solmization_1C,
rm_define.media_sound_solmization_1D,
rm_define.media_sound_solmization_1E,
rm_define.media_sound_solmization_1F,
rm_define.media_sound_solmization_1G,
rm_define.media_sound_solmization_2C,
rm_define.media_sound_solmization_2D,
rm_define.media_sound_solmization_2E,
rm_define.media_sound_solmization_2F,
rm_define.media_sound_solmization_2G,
rm_define.media_sound_solmization_2A,
rm_define.media_sound_solmization_2B,
rm_define.media_sound_solmization_3A,
rm_define.media_sound_solmization_3B,
rm_define.media_sound_solmization_3C,
rm_define.media_sound_solmization_3D,
rm_define.media_sound_solmization_3E,
rm_define.media_sound_solmization_3F,
rm_define.media_sound_solmization_3G
]
for m in k:
if m[0]<0:
for j in range(int(m[1])):
time.sleep(0.02)
time.sleep(0.08)
else:
media_ctrl.play_sound(notes[m[0]])
for i in range(int(m[1])):
time.sleep(0.02)
time.sleep(0.08)
def sing(song):
if song=='国歌':
m='0_g_1.1_1._1=g_a=b=110_3_1_2=3=553._3=1._3=5._3=22-65235_3_0_5_3_2=3=130g._a=1_1_3._3=5_5_2_2=2=a2.g_1.1_3.3_5^1._3=5_5_653._1=5=5=5=3_0_1_0_g13._1=5=5=5=3_0=1_0=g0=10=g0_10_g0_10_1'
elif song=='虫儿飞':
m='33_3_453.2_2-11_1_233.b_b-a32-a32-a32.1_1---'
elif song=='我和我的祖国':
m='5_6_5_4_3_2_1.g.1_3_C_7_6_3_5....6_7_6_5_4_3_2.a.b_a_g_5_1._2=3....5_6_5_4_3_2_1.g.1_3_C_7_D._C=6....C_7_6_5.6_5_4_3.ba_g_2_1....C_D_E_D_C_6_7_6._3=5..C_D_E_D_C_6_7_5._3=6..5_4_3_2.b_a_g_3.4.21_1--'
playsound(m)
def start():
sing('我和我的祖国')
【说明】
cdefgab对应为app显示的C1,相当于钢琴的C5
1234567对应为app显示的C2,相当于钢琴的C6
CDEFGAB对应为app显示的C3,相当于钢琴的C7
“0”为休息符
“. ”为附点,时值为1.5
“_” 为减时线,时值为1/2,相当于八分音符
“=” 表示2根减时线,相当于十六分音符
“-” 为增时线,时值为2
顺便说一下机甲大师的音高:
大致测了一下,我手上的机甲大师音准稍微偏高,测试了C和A两个音,发现:
C5,机甲大师发出的音高为C#5,
C6,机甲大师发出的音高为C#6,
A5,机甲大师发出的音高为A#5,
A6,机甲大师发出的音高为A#6,
升高了半音。
最后
以上就是缥缈烤鸡为你收集整理的大疆机甲大师怎么用python_大疆机甲大师Python开发: 演奏的全部内容,希望文章能够帮你解决大疆机甲大师怎么用python_大疆机甲大师Python开发: 演奏所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复