音乐模仿算法?

时间:2009-07-24 15:36:44

标签: algorithm audio sequences

我对自动音乐制作感兴趣。我正在考虑一个程序,它提供了大量的1-bar琶音(=为了简单起见,它是固定长度的音符序列),并根据它学到的内容生成自己的序列。

首先,我知道我可以使用字母(digram?trigram?)frequency analysis,仅适用于音符音高,然后根据频率概率生成我的序列。

您是否知道更高级的算法,可能是为音乐序列明确教授的?

5 个答案:

答案 0 :(得分:6)

关于算法组合的维基百科文章是一本优秀的入门读物。它描述了一些用于算法音乐创作的模型,着名的作曲家,书籍参考和算法组合软件。

http://en.wikipedia.org/wiki/Algorithmic_composition

答案 1 :(得分:4)

作为一名自己的音乐家和软件工程专业的学生,​​我想知道我可以在这里说清楚:P我自己做了很多关于这个主题的工作,并计划在未来基于此做大事。< / p>

当你编写算法时,你的目标是提出一个解决方案 - 例如,在排序问题时要有一个排序列表。在算法音乐作品中,解决方案是(通常)有一首歌,或者是令人愉悦的旋律,有结构等等。

解决方案(hah)的问题在于它不仅是客观的,而且解决方案是非常开放的。使用排序算法,您只有一种方法可以对列表进行排序。通过音乐创作,您可以获得数以百万计的赏心悦目的歌曲/ whatevr。

因此,您需要一种适合找不到最终解决方案的算法,但需要OPTIMAL解决方案。我的建议是遗传算法或类似的。遗传算法非常棒,因为它们可以创建各种最佳解决方案。

你需要将构图分成几部分 - 有旋律的GA,节奏的GA,结构的GA等。并设计你的健身功能以满足你的需要。

当然这只是问题的一个解决方案;有很多,之前列出的维基百科链接是一个很好的开始。

我建议退房: GenJam:一种旨在交换独奏的即兴爵士遗传算法 - http://www.it.rit.edu/~jab/GenJam.html

这本书非常具有启发性: http://www.springer.com/computer/information+systems/book/978-1-84628-599-8

我认为另一种有趣的方式是使用神经网络......但是给它们设置可能是一个问题......可能会有更多的工作。

无论如何,祝你的企业好运:P

答案 2 :(得分:2)

现有的统计分析导致音乐 - 平均水平。很少有任何有趣的东西,因为它往往会重现你所分析的所有常见特征。

音乐是多维的。您可以清楚地分析您感兴趣的任何或所有维度。音高,节奏,音符序列,谐波进度,音量变化,任何东西。一切。

音乐是微妙而复杂的,所以总会有更多东西需要分析。

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

答案 3 :(得分:1)

虽然它通常意味着处理比一个条形码更长的序列,但Markov链接是一种生成类似于其输入的音乐的简单有效方式。有关使用RTcmix生成音频的Python编写示例,请参阅我的实现here

它基于来自Metalevel的 Notes 中的Markov链接章节,这是一个关于算法组合的优秀文本。

答案 4 :(得分:0)

如果您了解音乐的惯例,那将非常有用,所以阅读书籍和文章,教人们如何创作歌曲。你会得到很棒的想法。

现在抛出一些踏板点以建立张力。使用两种不同乐器之间古老的呼叫响应技术。

相关问题