[置顶] 如何用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”显示下载链接,谢谢。

[置顶] 如何用PYTHON代码写出音乐的更多相关文章
- 如何用PYTHON代码写出音乐
什么是MIDI 博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的.我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深度学习写歌词已经实现了,之后会分 ...
- (转)Python新手写出漂亮的爬虫代码2——从json获取信息
https://blog.csdn.net/weixin_36604953/article/details/78592943 Python新手写出漂亮的爬虫代码2——从json获取信息好久没有写关于爬 ...
- (转)Python新手写出漂亮的爬虫代码1——从html获取信息
https://blog.csdn.net/weixin_36604953/article/details/78156605 Python新手写出漂亮的爬虫代码1初到大数据学习圈子的同学可能对爬虫都有 ...
- CSS代码写出的各种形状图形
做网页设计时经常要用到各种形状的图形,对于规则的图形很简单,但是对于不规则的图形,一般我们都是用图片,今天就在这里教大家怎样用css代码写出各种规则不同的图形 1.正方形 #square {width ...
- 教你用CSS代码写出的各种形状图形
做网页设计时经常要用到各种形状的图形,对于规则的图形很简单,但是对于不规则的图形,一般我们都是用图片,今天就在这里教大家怎样用css代码写出各种规则不同的图形 1.正方形 #square {width ...
- 程序员面试京东前端,现场JavaScript代码写出魔方特效
程序员面试京东前端,现场JS代码写出魔方特效,成功搞定20K月薪 今天小编我逛论坛,看到了一位程序员小伙子,因为是有了两年工作经验,然后去京东面试前端岗,一面二面轻松就过了,到了技术面这一块,小伙干脆 ...
- 用最简单的代码写出banner图轮播效果
以下视频是由[赵一鸣随笔]博客提供的“用最简单的代码写出banner图轮播效果”. 查看全屏高清视频,请点击链接:http://www.zymseo.com/58.html
- JS函数 编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数。
编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数. 任务 第一步: 编写代码完成一个函数的定义吧. 第二步: 我们来补充函数体中的控制语句,完成函数功能吧. 提示: ...
- [置顶] 如何在Python IDLE中调试Python代码?
好久没有用Python了,居然忘记了怎么在Python IDLE中调试Python代码.百度了一下,然后还是写下来吧,以免以后又忘记了. 1. Set break point in the sourc ...
随机推荐
- STS,MyEclipse中Maven配置
本文以STS的环境做讲解,MyEclipse环境和STS差别不大,配置过程相似. STS是解压版的,启动后,可以看到已经有了Maven插件,, 但是,STS也同时给你了一个Maven,但是通常不建议使 ...
- SaltStack部署服务及配置管理apache+php-第二篇
实验目标 1.使用SaltStack部署apache和php, 2.使用salt管理httpd.conf配置文件配置访问info.php使用账户密码 3.在salt里面增加对conf.d目录进行配置管 ...
- ASP.NET OAuth Authorization - Difference between using ClientId and Secret and Username and Password
What I don't fully understand is the use of ClientId and Secret vs Username and Password. The code ...
- springboot集成shiro 前后端分离 统一处理shiro异常
在前后端分离的情况下,shiro一些权限异常处理会返回401之类的结果,这种结果不好统一管理.我们希望的结果是统一管理,所有情况都受我们控制 就算权限验证失败,我们也希望返回200,并且返回我们定义的 ...
- 【医学图像】3D Deep Leaky Noisy-or Network 论文阅读(转)
文章来源:https://blog.csdn.net/u013058162/article/details/80470426 3D Deep Leaky Noisy-or Network 论文阅读 原 ...
- Hadoop 常用指令
1. 察看hdfs文件系统运行情况 bin/hdfs dfsadmin -report 2. 为了方便执行 HDFS 的操作指令,我们可以将需要的 Hadoop 路径写入环境变量中,便于直接执行命令. ...
- Maven 一段时间知识小结
二种打包命令生成后的jar包比较 1.clean install -P dev 2.clean package -Dmaven.test.skip=true -P dev //clean packa ...
- centos7安装ambari教程
ambari版本 :2.4.2 (不过各版本安装过程没啥差异) 目录: 为什么要用Ambari 概念概述 版本信息 原理简介 安装 创建集群 创建集群 手动修改配置 NameNode HA 安装Sma ...
- vue-cli background iamge
vue-cli 可以将图片直接放在项目生成的 static 文件夹里,然后在components里面直接采用绝对路径去取就可以了. 在根目录里面都会有一个static目录,这个是用来存放静态文件的,把 ...
- 【转】python操作mysql数据库
python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库 ...