使用Google Magenta生成Carnatic音乐
音乐是一种通用语言。它具有毫不费力地超越不透明的身体,微妙的头脑和看不见的灵魂的能力。在辛苦的一天结束后,聆听自己喜欢的音乐作品可以给人以安慰和新鲜的能量,以期带着微笑处理生活。
在本文中,我集中于以下主题:
使用Google Magenta库播放和可视化Carnatic Music Ragas
使用机器学习技术生成Carnatic Music Raga笔记
使用简单的python脚本生成随机的Carnatic Music Raga笔记
介绍
自幼就学习了Carnatic音乐的基础知识,我始终着迷于自动生成这种古老形式的南印度古典音乐。印度斯坦音乐在印度北部很受欢迎。如今,印度电影音乐更加流行,这常常从这两种古典音乐中汲取灵感。
为了寻求一种好的音乐生成工具,我遇到了Google Magenta项目。它具有生成音符序列音乐的简单但功能强大的方法。此处介绍了我使用此工具生成Carnatic音乐的尝试。
卡纳提克音乐可见的基础- à -可见西方音乐
西方音乐的音阶和音符是由大,小音阶的琴键产生的,而印度古典音乐的音阶是Ragam或Raga,这不仅仅是一组音符或swaras。
带有音符的西方音乐在设计上是离散的。Raga是连续的,可以捕捉人的情绪以及情绪,表情和能量。
幸运的是,尽管存在许多差异,但两者都基于12个基调或swaras,它们可以帮助从更广阔的角度生成印度古典音乐,而忽略了微调的完美之处。
让我们看看印度古典音乐(Carnatic Music)音符如何映射到电子钢琴音符,以了解Carnatic Music产生的相似性和可能性。
音乐Google洋红色基础知识
与西方音乐系统不同,斯瓦拉/音符的频率是固定的;在印度古典音乐系统中,允许很少的音符变化。该方案将“ Sa”和“ Pa”作为固定音符,其中“ Ma”具有2个变体,其余的swaras具有3个变体。上表中列出了Swaras / Notes及其变体。
Carnatic Music总共考虑了16种Swaras / Notes,用于分类和容纳各种Ragas。
“ Ma”是7个主要swara中的中位数。由于“ Ma”有2个变体,因此会将根 Ragams 也称为“ Melakarta ” Ragams或Parent Ragams分为两个相等的部分。下面这张图描述了这些划分72个大Ragams里面有所有7个主要swaras。成千上万的儿童拉加斯是通过添加,省略或移置来自这72个主要拉加斯的音符而得到的。
72拉加斯
1.品红色的卡纳提克音乐
从理论上讲,现在让我们进入使用Google Magenta的Carnatic Music时代。
单击此链接可以自己运行以下示例。这是开始使用洋红色的最简单方法。在这里,您可以生成音乐,将其下载为MIDI,还可以使用Bokeh库查看图形音乐模式。
洋红色中的所有内容都以NoteSequences为中心。这是一系列音符的奇妙抽象表示,每个音符具有不同的音高或音阶,乐器和打击力度,就像MIDI一样。
卡纳提克音乐的初学者先用教Mayamalavagowla Ragam,第15 Melakarta(见上图)。它具有以下注意事项/提示。
sa,ri1,ga2,ma1,pa,da1,ni2
升序(Aarohana)和降序(Avarohana)具有相同的7个swaras,这是所有Melakarta Ragams的共同属性。以下python脚本播放此ragam笔记。在上面给出的Hello Magenta Colab窗口的步骤1中运行此代码。
可视化拉加斯
上面的代码将图形和音符序列生成为3个ragas的MIDI文件。
音乐Google洋红色-可视化Ragas
您可以在图表中观察到音符的对称性,这也许是原因,新学生开始使用此 Mayamalavagowla Ragam。
在钢琴上敲击主要基调将产生Sankarabharam Ragam,它似乎是一个高原的高斯正态分布。
音乐全是悠扬的节奏
一个新的学生被教来唱歌/弹奏一些音符/ swaras模式。这是一个称为sarali swaram的漂亮图案的代码片段。
任何具有相同升序和降序音符的ragam都可以使用上述模式播放
生成变长音符序列
很多时候,音符/小提琴需要变长。注意Sequence提供了带有start_time和end_time参数的此功能。这此代码生成用于调用一个这样的基本组成笔记Pillari Geetam。
2.使用Melody_RNN生成Raga笔记
到目前为止,我们仅使用NoteSequence生成Carnatic Raga Notes。现在,让我们尝试使用Google Magenta团队开发的Recurrent Neural Network模型生成音乐。
MelodyRNN是用于音符的基于LSTM的语言模型-最好延续您提供的音符序列。尝试在Hello Magenta Colab文件的第2步中运行此代码,以查看使用Melody_RNN生成Carnatic Raga Notes的结果。
我看到Melody_RNN生成的输出序列确实超出了给定的Raga Notes。更改单个音符可能会导致偏离Raga的样式。根据Raga的刚性特性,这并不理想。
3.使用简单的Python脚本生成随机的Raga笔记
当复杂的事情不起作用时,请尝试简单的选择
这是一个简单的代码,用于生成具有可变长度的随机Raga Notes。该脚本仅生成Raga中存在的注释。这是一种非常简单的方法,可以满足随机注释生成的基本目的。
结论
在本文中,我试图探索使用洋红色NoteSequence生成Carnatic Music Raga音符的可能性。可以使用Melody_RNN生成自动音符序列,但它会产生超出Raga模式音符的音符。因此,我提供了一个简单的随机音符生成器,??可以在满足Raga音符序列限制的同时满足基本需求。
题库