知行编程网知行编程网  2022-05-01 02:00 知行编程网 隐藏边栏 |   抢沙发  114 
文章评分 0 次,平均分 0.0

牛逼了!菜鸟也能用Python演奏一段钢琴曲

小编一直有着一个钢琴弹奏的梦想,但是苦于没有这样的基础,所以很难在实际生活中弹奏出一曲美妙的钢琴曲,不过,为了实现自己的钢琴梦,我决定用python来帮我实现。


今天,小编就带领大家利用python来实现钢琴的弹奏,力图让大家在读完本篇文章后,也能利用我们的程序实现简单的钢琴演奏。最后的结果演示里,也为大家奉上彩蛋。闲话少说,咱们直奔主题。



01.编辑乐谱


首先,我们要弹奏一首乐曲,总得看得懂这个乐谱吧,小编虽然也不是很懂的乐谱,但是临时抱拂脚,也算是基本懂一点简谱了。下图是小编找到的关于《黑人抬棺》的钢琴简谱中截取的一段。

牛逼了!菜鸟也能用Python演奏一段钢琴曲

为了简单理解,上面一共是4拍,其中数字1到7分别是代表的do到si。带下划线的两个5代表的是一拍,单个的下划线表示的是二分之一拍。数字上面的点表示的是高八度,然后有几个点就依次累加即可。#键代表的是将音符升高半音。以上就是小编对于简谱的一些简单的理解,如果有音乐方面的高人,还请在后面补充,方便大家更好的理解。现在我们以上面的乐理知识为基础,看看如何利用python来弹奏乐曲吧。



02.设定钢琴键发音


我们在本地文件夹中保存了每个钢琴键的发音,然后接下来,我们以一首《新年好》为例,介绍一下程序是如何运行的。


对于弹琴的按键发音功能,我们用到的是mp3play来加载mp3文件,然后进行播放,程序和效果如下:




03.实现连续发音


一个按键完成了,那么对于多个独立的按键,我们怎么实现他们的连续发音呢,这里就要用到线程了,程序如下:

牛逼了!菜鸟也能用Python演奏一段钢琴曲

上述的程序便是我们的核心程序,我来给大家解释一下:

1).首先,对于opern元组里的每一个元组变量,其第一个值代表的是哪一个钢琴键,第二个变量代表的是在按下一个键时需要延时的时间,用来控制歌曲的节拍。

2).然后,我们一个个的开启线程,便可以模拟按键来弹奏音乐了。

3).这里的线程就好比我们弹奏钢琴时按不同的键,因为不同的键是相互独立,不影响的,而这里使用线程就是达到这样的目的。


最后小编为大家展示一下弹奏的效果,分别是《新年好》以及最近很火的《黑人抬棺》的钢琴演奏


(记得一定要花30秒听一下哦)


怎么样,是不是有内味了呢,相信大家通过这篇文章,也能够很快的上手python的钢琴弹奏,大家可以从简单的乐曲入手,试着去演奏一下,过一把钢琴演奏家的瘾。


本篇源码视频正在录制当中,会在我们的B站首发,欢迎大家去围观!



最后推荐一下我们菜鸟学Python在B站的学习资料,菜鸟学Python在B站的官方名字为 “菜鸟玩Python”。目前已经录制了7个视频,累计有1.2万阅读。生动的讲解实战源码


  • 用Python做一个弹球游戏

  • 10行Python代码实现美图秀秀

  • 用Python做一个元宵节灯谜

  • 我用Python集齐五福

  • 50行代码,用Python批量做海量小姐姐的素描图

  • 用Python做一个缩放自如的圣诞老人

  • 用Python分析“青春有你2”109位小姐姐

牛逼了!菜鸟也能用Python演奏一段钢琴曲


点击阅读原文,看菜鸟玩Python B站实战案例

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享