如何用PYTHON代码写出音乐

如何用PYTHON代码写出音乐

什么是MIDI

博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的。我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深度学习写歌词已经实现了,之后会分享给大家),本文我们主要聊下如何写曲。

说到用代码写曲子,有一个东西大家一定要了解就是MIDI。MIDI是一种乐器数字接口,是编曲界最广泛的音乐标准格式。MIDI并不是真正意义上的音乐文件,大家可以把它理解成乐谱,需要有环境编译MIDI文件,才可以生成音乐。这个关系有点像代码和编译器的关系。市面上可以解析MIDI文件的软件有很多种,本文将用到MuseScore2的软件,以下就是这个软件的截图,界面中的五线谱就是MIDI文件的呈现。这个乐谱是可以播放的,并且可以导出为MP3格式的音乐文件。

下面我们就介绍下生成MIDI文件所使用的PYTHON库。

python-midi库介绍

市面上差不多有十多种PYTHON库可以编写MIDI格式的文件,本文会推荐大家使用PYTHON-MIDI。我觉得python-midi的优势是不光可以自己写程序生成MIDI,而且还可以对MIDI文件进行解析。这样的功能配合机器学习算法,或许可以帮助我们实现机器的自动编曲,当然这是后话。先来看下如何安装python-midi。

1.首先进入https://github.com/vishnubob/python-midi#Installation,将整个项目克隆下来。

2.在程序目录下执行以下命令安装,

python setup.py install

3.如果想执行某个以mid为后缀的MIDI文件,只要执行以下命令即可:

mididump.py test.mid

接下来介绍下如何写代码生成midi文件。

实操

在python-midi库中,每个乐谱用Pattern对象表示,乐谱中的每个音轨(通常音乐都有很多轨道组成,每种乐器是一个轨道)用Track对象表示。每个音符的开端用midi.NoteOnEvent表示,结束用midi.NoteOffEvent表示,可以在参数中定义每个字符的音长和音高。示例代码如下:

生成的是一个简单的音阶:

更多有趣的音乐生成代码和样例可以关注我的微信公众号进行下载,进入公众号,输入“music”显示下载链接,谢谢。

时间: 2024-09-20 08:27:23

如何用PYTHON代码写出音乐的相关文章

pb9源代码-在pb9如何用代码写出省级联动

问题描述 在pb9如何用代码写出省级联动 需求:省.市.区分别用下拉列表的形式显示出,街道用手写的方式写入,然后保存 好这一系列的地址,在另外一个框中查询出来,效果有点类似于淘宝的收货地址

Python爬虫——写出最简单的网页爬虫

最近对python爬虫有了强烈地兴趣,在此分享自己的学习路径,欢迎大家提出建议.我们相互交流,共同进步. 1.开发工具 笔者使用的工具是sublime text3,它的短小精悍(可能男人们都不喜欢这个词)使我十分着迷.推荐大家使用,当然如果你的电脑配置不错,pycharm可能更加适合你. sublime text3搭建python开发环境推荐查看此博客: [sublime搭建python开发环境][http://www.cnblogs.com/codefish/p/4806849.html] 2

CSS代码实例:用CSS代码写出的各种形状图形

文章简介:纯用CSS定义写出来的图形写法. 一共收集整理了图形20个,比较实用,同时也为了熟悉CSS的代码.整合了一下,有错误欢迎指出. 1.正方形 #square { width: 100px; height: 100px; background: red;} 2.长方形   #rectangle { width: 200px; height: 100px; background: red;} 3.左上三角   #triangle-topleft { width: 0; height: 0;

在jsp中怎样用代码写出网页的访问次数

问题描述 如:访问次数为50次.就是每次打开这个网站都访问次数都增加1用代码怎么写要写详细点哦谢谢 解决方案 解决方案二:该回复于2010-12-02 16:03:29被版主删除解决方案三:Application+1解决方案四:该回复于2010-12-02 11:28:37被版主删除解决方案五:帮顶下吧,我也想知道~~~解决方案六:最简单的办法,就是设置一个变量,让后放到Application作用域里,每次访问,取出变量+1,然后再放回去.<%!privateintcurrent=1;priva

用代码“写”出扫描线效果图片

我们一般采用photoshop等做图工具制作电视扫描线效果图片:首先做一个黑白相间的图案,然后用这个图案进行填充,再调整图层的模式或者透明度,效果就出来了. 现在我们不用photoshop,用css和Javascript来做,方法也很简单! 一.准备一张图片,名为photo1.jpg,大小为:240x180: 二.插入一个表格,表格长x宽设置为240x180,把cellpadding.cellspacing.border均设置为0,并把表格的背景设置为上面的图片,即代码为: <table cel

【求助】用Python写出一个遍历网站所有url的小工具

问题描述 [求助]用Python写出一个遍历网站所有url的小工具 用Python 怎么写出一个 遍历网站所有url的小工具, 包括首页的url和所有子网页url 不能有重复的url,我自己写的只能遍历一个网页的 首页,子网页的遍历不出来,新人 没币 ,求好心人帮助!!! 解决方案 http://www.cnblogs.com/fnng/p/3576154.htmlhttp://www.oschina.net/code/list_releted_codes?id=25402 解决方案二: htt

如何用后台代码改变gridview已知列显示出来的日期格式?

问题描述 DataClasses1DataContextdb=newDataClasses1DataContext();协同.业务记录CXJL=new协同.业务记录();结果.DataSource=fromqindb.业务记录selectq;结果.DataBind();已知第13列,数据库字段名为:换单日.linq抽取的数据直接绑定后的样式是:2016-04-230:00:00,要改成短日期.后台代码怎么写? 解决方案 解决方案二:在前台绑定日期那里加上DataFormatString="{0:

深入理解GIL:如何写出高性能及线程安全的Python代码

6岁时,我有一个音乐盒.我上紧发条,音乐盒顶上的芭蕾舞女演员就会旋转起来,同时,内部装置发出"一闪一闪亮晶晶,满天都是小星星"的叮铃声.那玩意儿肯定俗气透了,但我喜欢那个音乐盒,我想知道它的工作原理是什么.后来我拆开了,才看到它里面一个简单的装置,机身内部镶嵌着一个拇指大小的金属圆筒,当它转动时会拨弄钢制的梳齿,从而发出这些音符. 在一个程序员具备的所有特性中,想探究事物运转规律的这种好奇心必不可少.当我打开音乐盒,观察内部装置,可以看出即使我没有成长为一个卓越的程序员,至少也是有好奇

如何用Java写出类似QQ好友列表那样的效果,求大神指教最好有代码

问题描述 如何用Java写出类似QQ好友列表那样的效果,求大神指教最好有代码 请问如何用Java写出类似QQ好友列表那样的效果,求大神指教最好有代码 解决方案 http://etwo.iteye.com/blog/1460375