【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向量,用来标注指定的情绪,不做成坐标那种难以 ...
随机推荐
- 极客时间_Vue开发实战_汇总贴
视频地址: https://time.geekbang.org/course/intro/163 https://github.com/tangjinzhou/geektime-vue-1 电脑dem ...
- Matcher的replaceAll ()/appendReplacement()/appendTail()详细举例
直接上例子: package com.dajiangtai.djt_spider.util; import java.util.regex.Matcher;import java.util.regex ...
- ACM-ICPC2018焦作网络赛 Mathematical Curse(dp)
Mathematical Curse 22.25% 1000ms 65536K A prince of the Science Continent was imprisoned in a cast ...
- 模板 - SPFA
SPFA可以用来判断负环或者计算带负权的最短路. 其实带负权的最短路可以用带势Dijkstra计算-- 所以SPFA基本就拿来判负环了-- #include<bits/stdc++.h> ...
- int **指针问题
转自:http://blog.csdn.net/u012501459/article/details/45395571 在打印二维数组时遇到了问题,二维数组可以这样定义int matrix[ROWS] ...
- 洛谷P4768 [NOI2018]归程(克鲁斯卡尔重构树+最短路)
传送门 前置技能,克鲁斯卡尔重构树 我们按道路的高度建一个最大生成树,然后建好克鲁斯卡尔重构树 那么我们需要知道一颗子树内到1点距离最近是多少(除此之外到子树内任何一个点都不需要代价) 可以一开始直接 ...
- [Xcode 实际操作]七、文件与数据-(14)数据持久化存储框架CoreData的使用:删除CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何删除数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- JDBC基础原理
一.DCL(了解) -- 1. 创建用户CREATE USER 'zhangsan'@'%' IDENTIFIED BY 'zhangsan';-- 2. 用户授权GRANT ALL ON heima ...
- Awesome Blockchain 区块链技术导航
区块链技术导航:收集整理最全面最优质的区块链(BlockChain)技术开发相关资源. 以后找不到文档资料的时候去导航站看看. 先亮个像,我长这样: 导航站内容 区块链开发所涉及的资源: 如 项目白皮 ...
- Ajax案例:异步加载商品分类信息