python制作“电子钢琴”

python讨论qq群:996113038


导语

最近发过很多关于画画的python的推文,也发过一些实现动画的python程序。唯独没有发过关于音乐的推文。要知道,python无所不能,上知天文,下知地理。琴棋书画,样样精通。

那好,今天就给大家写一个python制作电子钢琴的程序。

相比很多土豪,小编是个穷人。但是和很多朋友一样,小编也特别热爱艺术。尤其是音乐,对于巴洛克时期流派,古典乐派和浪漫派有过很深入的研究(吹吹牛)。

但是小编是个穷人,买不起昂贵的钢琴,怎么办呢?

来吧,我们用python打造一个电子琴。


代码及相关资源获取

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

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


开发工具

python3.6.4

相关第三方库:

tkinter

os

pygame

random

time


效果演示:下面是用python演奏的乐曲


基本原理

以前,小编用matlab打造过一个弹奏《雨碎江南》的程序。当时是matlab自己发出各种频率的声音。模拟1234567七个音符。当然,由于各种原因,这种音乐不够纯。让人感觉很难受。这一次我们用python打造我们的电子琴,直接选取的录制好的真实的钢琴的音符。

存储在一个数据库文件里面。在弹奏的时候读取这些音频文件。进行组合以后播放。懂音乐可以听出来,这些音乐特别纯。

犹如一泓清泉从山间缓缓流淌,叮咚叮咚。


往期精选

python实现“粒子动画”

python爬取唐诗三百首


部分代码

我们要做的很简单,就是把这些音符排列组合。不断发出各种声响。模拟钢琴弹奏。

当然了,我们还需要一个图像用户界面,用于鼠标点击钢琴上面的“键”。

from tkinter import *
master = Tk()
canvas_width = 800
canvas_height = 60
canvas  = Canvas(master, width=canvas_width, height = canvas_height)

还需要获取鼠标的操作,我们专门定义了一个鼠标类,确定鼠标所在的位置,用来判断鼠标点击的哪里?

def mouseRight(event):
    localx = event.x
    #localy = event.y
    idx = localx // gapx
    piano_play(idx)

至于播放音符声音,我们也很简单用到了sound.play()。

当然了,我们要提前读取ogg文件。这样才能播放出指定的声音。

        mixer.init()
        path='./ogg'
        sound = self.__soundList[idx]
        sound.play()

另外,我们导入time模块的原因就是确定每个音符演奏的时间,因为这个节奏在音乐中是非常重要的。

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

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

参考资料:

封面来源:

https://images.pexels.com/photos/2592179/pexels-photo-2592179.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500

参考来源:https://codeload.github.com/Fijon/musicgame/zip/master

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值