我对自动音乐制作感兴趣。我正在考虑一个节目,它会提供大量的1-bar琶音(为简单起见,它们是固定长度的音符序列),并根据它学到的内容生成自己的序列。音乐模仿算法?
首先,我知道我可以使用字母(digram?trigram?)frequency analysis,仅适用于音符音高,然后根据频率概率生成我的序列。
是否有更先进的算法,你知道的,也许明确教授音乐序列?
我对自动音乐制作感兴趣。我正在考虑一个节目,它会提供大量的1-bar琶音(为简单起见,它们是固定长度的音符序列),并根据它学到的内容生成自己的序列。音乐模仿算法?
首先,我知道我可以使用字母(digram?trigram?)frequency analysis,仅适用于音符音高,然后根据频率概率生成我的序列。
是否有更先进的算法,你知道的,也许明确教授音乐序列?
维基百科有关算法组合的文章是一个很好的入门书。它描述了用于算法音乐创建的一些模型,着名的作曲家,书籍参考和算法组合软件。
现有导致音乐的统计分析是 - 平均水平。很少有任何有趣的事情,因为它倾向于重现你分析的所有常见特征。
音乐是多维的。您可以清楚地分析您感兴趣的任何或所有维度。音高,速度,音符顺序,和声进程,音量变化,任何事情。一切。
音乐微妙而复杂,所以总有一些东西需要分析。 AFAIK(我的儿子是一位作曲家)更有趣的是创造出你自己独特的音乐合成算法。
这是我儿子指定的东西。它会生成一段由48个音乐事件组成的音乐活动。
#!/usr/bin/env python
"""
there are 8, 3-note sets.
each one can occur on 3 different beats.
each pitch of the 3 note set can be in one of 3 octaves and it can either be a harmonic or a fingered note.
"""
import random
noteSetChoices = [ "C-E-G", "C-F-A", "C-E-A", "D-F-A", "D-F-B", "D-G-B", "E-G-B", "F-A-C" ]
beatChoices= [ "1 - - -", "- 2 - -", "- - - 4" ]
octaveChoices= [ 1, 2, 3 ]
techniqueChoices= [ 'Fingered', 'Harmonic' ]
for n in range(48):
note= random.choice(noteSetChoices)
beat= random.choice(beatChoices)
octave= random.choice(octaveChoices)
technique= random.choice(techniqueChoices)
print octave, note, technique, beat
成为一个音乐家自己和软件工程专业,我htink我在这里可以摆脱一些轻爽:P我已经做了很多工作,关于这个问题我自己,打算使周围大一些基础这在未来。
当你编写一个算法时,你的目标是提出一个解决方案 - 例如,排序问题是有一个排序列表。在算法音乐作品中,解决方案(通常)会有一首歌曲或令人愉悦的旋律,结构等。
解决方案(哈)的问题是它不仅客观,而且解决方案是非常开放的。使用排序算法,您只有一种方法来对列表进行排序。随着音乐作曲,你有数百万令人愉快的歌曲/ whatevr你的目标是。
因此,您将需要一种算法,该算法对于找不到明确的解决方案,但OPTIMAL解决方案。我的建议是遗传算法或类似的。遗传算法非常棒,因为它们可以创建各种最佳解决方案。
你需要将构图分成几部分 - 有旋律的遗传算法,节奏的遗传算法,结构的遗传算法等。并设计适合您需要的健身功能。
当然这只是解决问题的唯一方法;有很多和以前列出的维基百科链接是一个很好的开始。
我建议检查出: 根杰姆:即兴的爵士乐遗传算法设计交易solos- http://www.it.rit.edu/~jab/GenJam.html
这本书是很有启发性: http://www.springer.com/computer/information+systems/book/978-1-84628-599-8
我想另一个有趣的方式将与神经网络......但给他们集可能会有点问题......这是更多的工作。
不管怎么说,祝你在冒险:P
这真的帮助,如果你知道音乐的惯例,所以读取写入教人类如何创作歌曲的书籍和文章。你会得到很棒的想法。
现在抛出一些踏板点,然后建立紧张局势。使用两种不同仪器之间古老的呼叫响应技术。
虽然它通常意味着处理比单个条更长的序列,但马尔可夫链是一种简单有效的方式来生成类似于其输入的音乐。有关使用RTcmix编写的用于音频生成的示例,请参阅我的实现here。
它基于马尔可夫链接章节来自Metalevel的注释,这是一个关于算法构成的优秀文本。
Spore上的音乐如何?我很确定音乐是自动生成的。 – 2009-07-24 15:53:07
嗯,这意味着你已经知道类型卡农,并且你不会从其他歌曲中提取它们。 – janesconference 2009-07-24 15:58:05
@janesconference:实际上我不知道下蹲。我是贝司手,所以我明白了一点;我的儿子是作曲家。 – 2009-07-24 16:53:13