大疆机甲大师怎么用python_大疆机甲大师Python开发: 演奏

机甲大师升级了固件,增加了多媒体钢琴音的演奏功能。

不过原先的参数是不带音长的,而音乐会有各种不同时长的音符,如附点、切分音等。

另外,机甲大师原先对音符的录入实太过麻烦,且没有对音符时值的输入。

为了能让机甲大师能够演奏不同时长的音符,并且能尽量按简谱的方式输入乐谱,写了以下的代码。

大疆机甲大师演奏 我和我的祖国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,

升高了半音。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值