如何用PYTHON代码写出音乐

什么是MIDI博主本人虽然五音不全 , 而且唱歌还很难听 , 但是还是非常喜欢听歌的 。 我一直在做这样的尝试 , 就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下 , 通过深度学习写歌词已经实现了 , 之后会分享给大家) , 本文我们主要聊下如何写曲 。
说到用代码写曲子 , 有一个东西大家一定要了解就是MIDI 。 MIDI是一种乐器数字接口 , 是编曲界最广泛的音乐标准格式 。 MIDI并不是真正意义上的音乐文件 , 大家可以把它理解成乐谱 , 需要有环境编译MIDI文件 , 才可以生成音乐 。 这个关系有点像代码和编译器的关系 。 市面上可以解析MIDI文件的软件有很多种 , 本文将用到MuseScore2的软件 , 以下就是这个软件的截图 , 界面中的五线谱就是MIDI文件的呈现 。 这个乐谱是可以播放的 , 并且可以导出为MP3格式的音乐文件 。
如何用PYTHON代码写出音乐文章插图
下面我们就介绍下生成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 install13.如果想执行某个以mid为后缀的MIDI文件 , 只要执行以下命令即可:
mididump.py test.mid1接下来介绍下如何写代码生成midi文件 。
实操在python-midi库中 , 每个乐谱用Pattern对象表示 , 乐谱中的每个音轨(通常音乐都有很多轨道组成 , 每种乐器是一个轨道)用Track对象表示 。 每个音符的开端用midi.NoteOnEvent表示 , 结束用midi.NoteOffEvent表示 , 可以在参数中定义每个字符的音长和音高 。
示例代码如下:
如何用PYTHON代码写出音乐文章插图
【如何用PYTHON代码写出音乐】生成的是一个简单的音阶:
如何用PYTHON代码写出音乐文章插图