【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件
这个全新的Python音乐创作系列,将会不定期更新。写作这个系列的初衷,是为了做一个项目《基于图像特征的音乐序列生成模型》,实时地提取照片特征,进行神经网络处理,生成一段音乐。
千里之行,始于足下。首先我们要做的是,音乐序列怎么在计算机中表达出来。
==============
首先参考知乎上的相关回答,以及PyPI上和音乐相关的第三方库。
来源:https://www.zhihu.com/question/24590883
另见:https://wiki.python.org/moin/PythonInMusic(上面有更全面的库和软件)
==================
在几番选择之后,我选用了两个库作为midi音乐的生成:
mingus:http://bspaans.github.io/python-mingus/
mingus是一个比较高级的库,优点在于写作简单,有相关音乐理论的人可以很快上手,文档全面。
多简明!(哭)
mingus的缺点在于:它只支持Python 2.X。如果要使用它的Python3版本,最好还是预先使用一次2to3.
mingus的报错代码问题及解决方案如下:
https://stackoverflow.com/questions/26984731/importerror-no-module-named-mt-exceptions-when-using-mingus-library
python-midi:https://github.com/vishnubob/python-midi
怎么说呢,相对于mingus来说,Python-midi实在不怎么直观。且看这个库的写作方式:
- on = midi.NoteOnEvent(tick=0, velocity=20, pitch=midi.G_3)
- track.append(on)
- # Instantiate a MIDI note off event, append it to the track
- off = midi.NoteOffEvent(tick=100, pitch=midi.G_3)
- track.append(off)
tick是音轨序号,pitch是音符。
我个人还在比较这两个库,如果能解决mingus在Python 3.x下的问题就最好了。
=======================
关于MIDI音乐文件的播放,自然有很多选择。但是本着一体化的原则,考虑下面的两个库:
PyGame:http://www.pygame.org
PyGame提供了完整的API供MIDI使用,并且最高支持到Python3.6.1,简直是天降福音,要是我当初学Python时,PyGame升级该多好啊。
第二个是能和mingus协同工作的FluidSynth,而且mingus连怎么操作这个库都写好了,参见:
http://bspaans.github.io/python-mingus/doc/wiki/tutorialFluidsynth.html
==============================
这只是一些前期的操作,之后我会慢慢撰写整个系列,包括使用TensorFlow,使用Deep Learning完成民谣风格的音乐创作等。
注意:本系列不完成高难度音乐。(参见:
https://deepmind.com/blog/wavenet-generative-model-raw-audio/
http://www.hexahedria.com/2015/08/03/composing-music-with-recurrent-neural-networks/
相信我,上面的是做不到的。
https://freemidi.org/artist-435-enya
当然这种更加不存在。
=========================
我只要能做出《成都》这种难度和复杂度的音乐就很满足了。
谢谢阅读。
【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件的更多相关文章
- 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用
jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...
- 【Python图像特征的音乐序列生成】关于mingus一个bug的修复,兼改进情感模型
mingus在输出midi文件的时候,使用这样的函数: from mingus.containers import NoteContainer from mingus.midi import midi ...
- 【Python图像特征的音乐序列生成】关于数据集的分享和样例数据
数据集还在制作中,样例数据如下: 我将一条数据作为一行,X是ID,O代表了情感向量,S是速度,是一个很关键的参数,K是调式,M是节拍,L是基本拍.后面是ABC格式的序列,通过embedding化这些音 ...
- 【Python图像特征的音乐序列生成】数据集制作的一些tricks
关于数据集的制作,我决定去掉很多不必要的东西,比如和弦,于是我选择了melody部分的旋律. 有了midi文件,我现在要abc序列,所以我要通过midi2abc转换一下文件. 批处理程序效果如下: 文 ...
- 【Python图像特征的音乐序列生成】解析ABC格式的文件(修改版)
ABC格式,是一个音乐标准,ABC Plus Project最新的标准是2.x. ABC格式的音乐长成这样: X: T:Abacus % Nottingham Music Database S:By ...
- 【Python图像特征的音乐序列生成】关于音乐生成的思路转变
在前几天的讨论会上,有师兄指出原来的方法实在是很难训练,所以我改进了音乐生成的思路. 首先,我用LSTM生成的一定是一段音乐的序列化表达,那么我就可以用成型的一些数据集去训练LSTM.为了避免生成的音 ...
- 【Python图像特征的音乐序列生成】第一阶段的任务分配
从即日起到7月20号,项目成员进行了第一次任务分配. 赵同学A.岳同学.周同学,负责了图像数据的情感数据集制作,他们根据自己的经验,对图像进行了情绪提取. 赵同学B全权负责向量映射这一块的网络搭建. ...
- 【Python图像特征的音乐序列生成】关于小样本的一些思考
我之前就注意到,深度学习和音乐结合,尤其是从乐理出发进行结合(而不是纯粹的进行音乐生成),是一个尚未被深度挖掘的全新领域.可想而知,这个方向符合我要求的数据肯定是要自己搜集了. 自己搜集的数据,在量上 ...
- 【Python图像特征的音乐序列生成】思路的转变
关于生成网络这边,可能会做一个深度的受限玻尔兹曼机,这样可以保证生成的音乐不会太相似. 情绪识别网络和生成网络的耦合,中间变量可能直接就是一个one-hot向量,用来标注指定的情绪,不做成坐标那种难以 ...
随机推荐
- François Hollande’s&…
EVER since President François Hollande was elected last May, things have not gone right for him. He ...
- font-size: 0;解决元素间的空白间隙
看别人的代码看到过font-size:0这个设置,不明白为何这样操作,后来研究一下才明白:这是像素级还原设计稿很有用的设置,因为元素节点有文本节点,在缩进代码时会占据宽度,这么说不好理解,演示如下: ...
- 简单的GTK窗体搭建
#include<gtk/gtk.h> //必须引用gtk/gtk.h这个头文件 2 int main(int argc,char *argv[]) //标准c语言主函数的声明 3 { 4 ...
- 数据库路由中间件MyCat - 源代码篇(3)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 2. 前端连接建立与认证 Title:MySql连接建立以及认证过程client->MySql:1.T ...
- Android在Win10环境搭建
一.安装JDK并配置环境变量 1.在Java官方网站上下载相应系统的jdk文件安装,如win7 64 位系统下安装jdk-6u45-windows-x64,全部选择默认的安装路径即可安装完成. 2.配 ...
- js基础(创建标签)
创建标签 var divBox1 = document.getElementById('box1'); var p = document.createElement('p'); p.innerHTML ...
- unity 代码添加AnimationEvent
经过测试只要Animator跟继承monoBehaviour的类A在同一个节点上,就可以注册类A中的public 方法,含0或1个参数(int,float,object,string),注意:只能是0 ...
- codeforces786E ALT【倍增+最小割】
方案二选一,显然是最小割,朴素的想法就是一排人点一排边点,分别向st连流量1的边,然后人点向路径上的边点连流量inf的边跑最大流 但是路径可能很长,这样边数就爆了,所以考虑倍增,然后倍增后大区间向小区 ...
- 阿里云服务器新手安装nginx
1.域名购买之后 备案. 2.购买服务器. 3.这两个条件具备之后进行下一步. 本人使用Mac ,实践流程按照Mac本的流程操作. 作为初学者,简配的服务器, 实例类型: I/O优化,操作系统: Ce ...
- 领域驱动设计业务框架DMVP
DMVP,全称DDD-MVP,是基于领域驱动设计(DDD)搭建的业务框架,整体设计符合DDD领域模型的规范,业务上达成了领域模型和代码的一一映射,技术上达成了高内聚低耦合的架构设计,开发人员不需要关注 ...