点击上方蓝色小字,关注“涛哥聊Python

重磅干货,第一时间送达

来源:GitHub-Rainbow-Dreamer

你想过用代码来写音乐吗?这里给大家介绍一个国人写的库 musicpy,让你用简洁的语法通过乐理逻辑写出优美的音乐。

这个库可以让你用非常简洁的语法,来表达一段音乐的音符,节奏等等信息,并且可以简单地输出成midi文件的格式。这个库里面涉及到非常多的乐理知识,所以个人推荐至少要先了解一部分乐理再来使用会比较上手。相对地,如果你是一个对乐理比较了解的人,那么看完作者在Wiki正在写的教程之后你应该很快就上手了。

(说明:这个库的作者还在持续开发中,很有创意的一个库,向大家推荐)

安装

首先在musicpy文件夹里打开cmd, 跑一下pip install -r requirements.txt安装依赖库(如果本来就是pip install musicpy安装的就不需要这一步, 作者也比较推荐直接pip install musicpy就行)

import 这个库: from musicpy import *

作者自己做的介绍与使用教程视频第一期:

https://www.bilibili.com/video/BV1754y197a9/

详细的musicpy数据结构,基础语法以及使用教程,请看作者正在写的Wiki,作者会尽量把所有的细节都讲清楚。

Wiki的地址: https://github.com/Rainbow-Dreamer/musicpy/wiki

musicpy说明

在musicpy里面,几个基本的类是note(音符), chord(和弦)和scale(音阶)。这几个类是构成音乐代码的基础。

在musicpy这门语言的数据结构设计中,音符类本身是等值为纯数字的,也就是完全可以作为纯数字使用。

和弦类是音符类的集合,也说明和弦类本身等值为一个全部都是数字的集合,也可以作为向量,甚至矩阵来看待(比如多个和弦的连接走向就可以看作多个向量的拼接,因此也就有了行列数,也就是矩阵的形式)。

也因此在这门语言的数据结构设计中,音符类,和弦类,音阶类都是可以进行数学运算的,比如线性代数领域的运算,离散数学领域的运算等等。也可以在这门语言的数据结构的基础上建立一整套乐理逻辑的算法,结合纯数学逻辑来进行多方面的音乐分析研究。

现代音乐领域的很多实验性质的音乐,比如序列主义,偶然音乐,后现代主义音乐(比如极简主义音乐),理论上全部都可以在这门语言的纯数字化的数据结构的基础上进行严格的创作。即使不提实验性质的音乐,这门语言也可以写任何的古典音乐,爵士音乐,流行音乐。

作者每隔两三天就会更新一次这个库的内容,具体的更新内容请大家看这个库里的“更新日志Changelog.txt”,里面有按照日期的每次更新的非常详细的细节与说明。

更新日志的链接:

https://github.com/Rainbow-Dreamer/musicpy/blob/master/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97Changelog.txt

初衷

作者开发这个语言主要的初衷有两点:

第一,比起工程文件和midi文件单纯存储音符,力度,速度等单位化的信息,如果能够按照乐理上的角度来表示一段音乐从作曲上的角度是如何实现的,那就更加有表示的意义了。而且只要不是现代主义无调性音乐,大部分的音乐都是极其具有乐理上的规律性的,这些规律抽象成乐理逻辑语句可以大大地精简化。(比如一个midi文件1000个音符,实际上按照乐理角度可能可以简化到几句代码)。

第二,开发这个语言是为了让作曲AI能够在真正懂得乐理的情况下来作曲(而不是深度学习,喂大量的数据),这个语言也算是一个接口,AI只要把乐理的语法搞懂了,那作曲就会拥有和人一样的思维。我们可以把乐理上的规则,做什么好不做什么好告诉AI,这些东西还是可以量化的,所以这个乐理库也可以作为一个乐理接口,沟通人和AI之间的音乐。因此,比如想让AI学习某个人的作曲风格,那么在乐理上面也同样可以量化这个人的风格,每种风格对应着一些不同的乐理逻辑规则,这些只要写给AI,经过作者这个库,AI就可以实现模仿那个人的风格了。如果是AI自己原创风格,那就是从各种复杂的作曲规则里寻找可能性。

为何不用深度学习?

作者在想不用深度学习,神经网络这些东西,直接教给AI乐理和某个人的风格化的乐理规则,那么AI或许可以做的比深度学习大数据训练出来的更好。因为大数据训练只是给AI模仿数据本身而已,这样其实AI并没有真正地和人类自己一样理解作曲是什么,乐理是什么,所以作者才想通过这个库实现把人的乐理同样教给AI,让AI真正意义上地理解乐理,这样的话,作曲起来就不会生硬了,没有机器和随机的感觉了。所以作者写这个库的初衷之一就是避开深度学习那一套。但是感觉抽象出不同音乐人的乐理规则确实很有难度,作者会加油写好这个算法的qwq 另外其实也可以音乐人自己告诉AI他自己乐理上喜欢怎么写(也就是自己独特的乐理偏好规则),那么AI就会模仿的很到位,因为AI那时候确实懂得乐理了,作曲不可能会有机器感和随机感,此时AI脑子里想的就和音乐人脑子里想的是完全一样的东西。

AI不必完全按照我们给他的乐理逻辑规则来创作,我们可以设置一个“偏好度”的概念给AI,AI在自己作曲时会有一定程度地偏好某种风格,但是除此之外会有自己在“符合正确乐理”的规则里面找到的独特的风格,这样AI就可以说“受到了某些音乐人的影响下自己原创的作曲风格了”。当这个偏好度为0时,AI的作曲将会完全是自己通过乐理寻找到的风格,就像一个人自己学习了乐理之后,开始摸索自己的作曲风格一样。一个懂得乐理的AI很容易找到自己独特的风格来作曲,我们甚至都不需要给他数据来训练,而只要教给AI乐理就行。

如何教AI乐理?

那么怎么教给AI乐理呢?在音乐上面,暂时不考虑现代主义音乐的范畴,那么绝大部分的音乐都是遵循着一些很基本的乐理规则的。这里的规则指的是,怎么样写乐理上ok,怎么样写犯了乐理上的错误。比如写和声的时候,四部同向往往是要避免的,尤其是在编曲时写管弦乐的部分。比如写一个和弦,如果和弦里面的音出现小二度(或者小九度)会听着比较打架。比如当AI自己决定一首曲子要从A大调开始写,那么他应该从A大调音阶里按照级数来选取和弦,有可能适当地离调一下,加几个副属和弦,写完主歌部分可能按照五度圈转个调,或者大三度/小三度转调,同主音大小调转调等等。我们需要做的事情就是告诉AI作曲的时候怎么写是正确的,更进一步的,怎么写听着比较有水平。

AI学好了乐理,不会忘记,也比较难犯错,因此可以写出真正属于AI自己的音乐。他们会真正懂得音乐是什么,乐理是什么。因为这个库的语言做的事情就是把乐理抽象成逻辑语句,那么我们每次给AI“上课”,就是把人自己的乐理概念用这个库的语言来表述,然后写进AI的数据库里。通过这种方式,AI真正的学习到了乐理。这样的作曲AI,不需要深度学习,不需要训练集,不需要大数据,而与之相比,那些深度学习训练出来的作曲AI实际上根本就不懂乐理是什么,也没有音乐的概念,他们只是从海量的训练数据里面照葫芦画瓢而已。还有一个重点是,既然可以用具体的逻辑来描述的事情,其实是不需要机器学习的。如果是文字识别,图像分类这些比较难以用抽象的逻辑来描述的事情,那才是深度学习的用武之地。

结语

这个库作者也上传到pypi上了,大家pip install musicpy就可以使用了。

作者从去年的10月份开始开发musicpy,目前这个项目还在初期进度,不过已经有一套比较完整的乐理逻辑语法了。这个库的使用教程视频作者会持续更新。作者之前发的专栏也有一部分的使用教学。

GitHub链接:https://github.com/Rainbow-Dreamer/musicpy

-END-

转自 | 专知

今天给大家推荐Wenqiang Feng, Xu Gao and Upendra Madam三位数据科学家撰写的一本《给数据科学家的Python技能秘籍》,简明扼要,非常实用,使用与数据科学家相关的详细演示代码和示例来共享一些用于数据科学家工作的有用python技巧,值得放在身旁学习查看!

资源链接:

https://runawayhorse001.github.io/PythonTipsDS

书籍PDF电子书下载

《给数据科学家的Python技能秘籍》,87页pdf已经打包好,可以通过下述步骤来获取:

    1. 扫描下方二维码(注意是下方二维码!)

    2. 回复关键词:秘籍

程序员章鱼哥

????长按上方二维码 2 秒
回复「秘籍」即可获取资料

Python 国产库推荐:musicpy相关推荐

  1. Python 国产库推荐之 musicpy

    来源:GitHub-Rainbow-Dreamer 整理:Python开发者 你想过用代码来写音乐吗?这里给大家介绍一个国人写的库 musicpy,让你用简洁的语法通过乐理逻辑写出优美的音乐. 这个库 ...

  2. python写音乐_Python国产库推荐之musicpy:让你用代码来写音乐

    你想过用代码来写音乐吗?这里给大家介绍一个国人写的库 musicpy,让你用简洁的语法通过乐理逻辑写出优美的音乐. 这个库可以让你用非常简洁的语法,来表达一段音乐的音符,节奏等等信息,并且可以简单地输 ...

  3. python是什么语言的歌曲_Python良心国产库推荐:musicpy,用代码来写音乐

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文来自腾讯云 作者:龙哥 你想过用代码来写音乐吗?这里给大家介绍一个国人写的库 ...

  4. python音乐库_Python 国产库推荐之 musicpy

    你想过用代码来写音乐吗?这里给大家介绍一个国人写的库 musicpy,让你用简洁的语法通过乐理逻辑写出优美的音乐. 这个库可以让你用非常简洁的语法,来表达一段音乐的音符,节奏等等信息,并且可以简单地输 ...

  5. Python第三方库推荐:pyttsx3

    #精彩回顾:Windows 10如何进行"Windows体验指数评估"?_CharlesChen_09的博客-CSDN博客# 上次的没人读啊啊啊啊 今天要推荐的Python第三方库 ...

  6. python开源库推荐_推荐5个值得关注的Python开源项目

    原标题:推荐5个值得关注的Python开源项目 今天小编看到了五个开源项目,觉得还错,推荐给大家. 1.Wagtail CMS Wagtail是一个基于Django的CMS系统 它拥有优质的用户体验 ...

  7. python代码库-推荐11个实用Python库

    1) delorean 非常酷的日期/时间库 from delorean import Delorean EST = "US/Eastern" d = Delorean(timez ...

  8. python第三方库推荐 - 用furl优雅的操作url

    基本操作 >>> from furl import furl >>> f = furl('http://www.google.com/?page=1') >& ...

  9. python解析库_Python命令行解析库argparse

    原博文 2014-08-13 05:48 − 2.7之后python不再对optparse模块进行扩展,python标准库推荐使用argparse模块对命令行进行解析. 1.example 有一道面试 ...

  10. 冷门但好用的 Python 库推荐一波

    点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! Python 标准库有超过 200 个模块,程序员可以在他们的程序中导入和 ...

最新文章

  1. 获国家杰青的北大教授,被985本科生嫌弃本科学校太差!被网友怒怼!
  2. TNS-12518 Linux Error:32:Broken pipe
  3. mybatis mysql 存储过程_Mysql 存储过程+Mybatis调用实现插入操作例子 | 学步园
  4. IO:Reactor设计模式
  5. 带冲突检测的载波监听多路访问的原理_通信原理课程总结(二)
  6. 数据库相关的论文笔记
  7. 2009年5月14日
  8. 新版 OPPO Enco Free 2 固件工具 (仅供交流学习使用)
  9. python 线性插值处理_详解Python实现线性插值法
  10. access/sql server笔记(20160818)
  11. 【解决方案】如何结合智慧工地上云平台实现视频监控的多终端观看?
  12. 生物信息百Jia软件(七):glimmer
  13. 安装Go,配置Go环境(实力亲测)
  14. 用electron做一个浏览器
  15. quartz暂停及恢复任务解决恢复时一咕噜把未执行的全补回来的问题
  16. css 两边到中间 渐变_怎么实现背景色从中间往两边渐变?_html/css_WEB-ITnose
  17. 电工电子技术------含受控源电路的分析
  18. 如何用最短的时间理解一项数字技术?推荐这7本最新的白皮书(大数据、云原生、区块链、联邦学习等,附下载)...
  19. android跳转小程序 bad_param
  20. 控制系统分析2(线性系统稳定性、和可控性)

热门文章

  1. 计算机网络英语词汇,计算机网络英语词汇
  2. 【无线网络技术专题(十一)】无线网络常用软件与工具大全
  3. 算法入门基础知识总结
  4. 自动控制原理学习笔记--反馈控制系统的动态模型
  5. EXCEL中如何撤销工作表保护
  6. linux下ftp命令打印日志,ftp服务器日志解析
  7. 关于写的Java书籍进展
  8. dss中文含义_DSS(中文译名:决策支持系统),这是什么系统?有多少个种类?...
  9. 听说某琳系统停止更新了,其他的主机管理系统哪个好?
  10. Camnetics Suite 2018 CamTrax64 GearTeq GearTrax for AI SE SW