有没有想过用代码写音乐?这里给大家介绍一个国人写的库musicpy,让你通过音乐逻辑,语法简洁,写出优美的音乐。这个库可以让你用非常简洁的语法来表达一段音乐的音符、节奏等信息,并可以简单的输出成midi文件格式。这个库涉及到很多乐理知识,所以我个人推荐至少了解一些乐理知识再开始使用。相反,如果你是一个对乐理比较了解的人,那么看完作者在wiki上写的教程,应该很快就可以上手了。(注:这个库作者还在开发中,是一个很有创意的库,推荐给大家。)依赖库(如果本来就是pipinstallmusicpy安装不需要这一步,作者也推荐直接pipinstallmusicpy)导入这个库:frommusicpyimport*第一期介绍和使用教程视频作者制作:https://www.bilibili.com/video/BV1754y197a9/详细的musicpy数据结构、基本语法和使用教程请看作者正在写的wiki。作者将尝试清楚地解释所有细节。Wiki地址:https://github.com/Rainbow-Dreamer/musicpy/wikimusicpy说明在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初衷作者开发这种语言的意图主要有两个:一是相对于单纯存储音符、力度、速度等单元化信息的project文件和midi文件,一段音乐如果能从乐理的角度来表达它是怎样的实现更具表现力。而只要不是现代无调性音乐,大部分音乐在乐理上都是极其有规律的,而这些规律可以抽象成乐理的逻辑语句,可以大大简化。(比如一个1000个音符的midi文件,从乐理的角度来看,实际上可能会简化成几行代码)。其次,开发这种语言的目的是让作曲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乐理呢?在音乐方面,暂且不论现代主义音乐的范围,大部分音乐都遵循一些非常基本的乐理规则。这里的规则是指乐理怎么写就ok,乐理怎么写就错了。比如写和声时,往往要避开同一方向的四个声部,尤其是在编曲时写管弦声部。比如你写一个和弦,如果和弦里有小二度(或者小九度),听起来就会像打架。例如,当AI决定从A大调开始写一段音乐时,它应该根据进程从A大调音阶中选择和弦,并且可以适当地留调,加几个次属和弦,然后完成写主和弦。歌曲的部分可能会根据五度圈,或大三度/小三度,或主调的大调或小调等进行定调。我们需要做的是告诉AI如何正确编写时作曲,进一步,如何写和听更高的水平。AI把乐理学得很好,不会忘记,更不容易出错,所以它能写出真正属于AI自己的音乐。他们会真正理解什么是音乐,什么是乐理。因为这个库的语言做的是把乐理抽象成逻辑句子,所以我们每次“教”AI的时候,都是用这个库的语言表达人自己的乐理概念,然后写入AI数据库.这样,AI就真正学会了乐理。这种组合人工智能不需要深度学习、训练集或大数据。相比之下,深度学习训练出来的作曲AI其实不懂什么是乐理,也没有音乐的概念。他们只是从海量的训练数据中照葫芦画瓢。还有一点很重要,既然事物可以用特定的逻辑来描述,那么机器学习其实并不是必须的。如果是文本识别、图像分类等难以用抽象逻辑描述的东西,深度学习就派上用场了。结语这个库的作者也已经上传到pypi了,大家可以通过pipinstallmusicpy来使用。作者于去年10月开始开发musicpy,目前项目还处于起步阶段,但已经有一套比较完善的乐理逻辑语法。本库使用教程视频作者会持续更新。笔者之前的专栏也有部分使用教学。
