python模仿竹笛演奏《女儿情》

python讨论qq群:996113038


导语

小编以前学过竹笛,很喜欢笛子的声音,清越悠长,活泼欢快。前几天突然来了灵感。

于是,我就开发了一个专门用python模仿竹笛演奏乐曲的程序。我上网查询过很多次,现在网络上基本没有这种类型的程序,于是,我们公众号就来做第一个吃螃蟹的公众号。

提醒一下,看懂这一节需要一些起码的乐理知识,最起码,最最基本的简谱要能看懂。

不过看不懂也没关系,我会给大家补习一下音乐课。


代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“ 女儿情 ”获取源代吗

2:加入群聊:996113038。在群文件中下载源代码以及相关资料。


开发工具

python3.6.4

相关第三方库:

os

pygame

sys

re


效果演示

演奏效果如下:


基本原理

简谱介绍:

竹笛演奏时需要简谱。上面就是我截取的简谱的一部分,前面的“啊,啊”前奏我们直接省略。从“5612376756”开始,这些数字其实就是“哆来咪发少拉西”。数字下面有“点”代表低音。上面有“点”代表高音,没有“点”代表中音。

如果数字下面有一个横线,代表这是8分音符,两个横线代表16分音符如果没有横线代表4分音符(这里就是1秒)。

8分音符是0.5s。数字后面的横线代表把前面的音符重复一遍。

不知道大家听懂没有!反正乐理就讲到这里了。

下面开始讲程序的原理,我录下来笛子的不同指法的声音。用一个数据库表示。

其中h代表高音,123....代表音符。“_”后面的数字代表几分音符。

我们输入将简谱翻译成这样的字符串。存储在列表里。播放的时候按照顺序播放,于是音乐就播放出来了。

播放时间通过delay精确控制。但是因为原始音频时间长短不一。还是存在“卡”的情况。希望在以后的版本中能修改好。


往期精选

python爬取WHO全球疫情数据

python图像转“抽象”画风


部分代码

下面讲解一下代码:‘

music1=[
    'l5_8','l6_8','m1_4','m1_8','m2_8','m3_8','l7_16','m6_16','l7_16','l5_8','l6_4','l6_4'
]

’上面的代码是我们将“鸳鸯双栖蝶双飞”的简谱。这是第一句。

我们所有的简谱全部连接起来,按顺序播放。

连接简谱的代码就是简单的加在一起。

music=music1+music2+music3+music4+music5+music6

由于我们是用pygame播放音乐,所以我们还要生成一个窗口(pygame的功能必须有窗口才能调用)。

from pygame.locals import*
pygame.mixer.init()
pygame.display.set_mode([30,30])

以后的主函数是按顺序播放music_n里面的所有音符,music.play()

for name in music_n:
    index1 = scale_name.index(name)
    music=scale_list[index1]
    music.play()
    pygame.time.delay(int(dict1[name[3]]))

感谢大家观看,有钱的老板可以打赏一下小编哦!

扫描下方二维码,关注公众号

参考资料:无

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值