我想实现一种用于生成音乐的交互式进化算法(可能只是简单的旋律开始)。
我想用JFugue来做这件事。它的网站声称它非常适合进化音乐,但我找不到任何进化的例子。
我已经a framework提供了进化机制。我正在寻找的是一些简单的工作代码,它演示了音乐部分的可行方法(例如,适用于演化曲调的编码和进化算子)。
我有一些想法可以实现,但我对音乐理论并不是特别了解,所以首先我想重新实现已知有用的东西。
任何人都拥有或知道任何免费提供的代码(任何语言都很好),它演示了一种或多种进化音乐的方法吗?
编辑:我特意寻找进化代码,而不是其他可用于音乐合成的技术。
答案 0 :(得分:1)
到目前为止,我发现只有this,这是C中的遗传编程示例。
更新(2010年1月):和this online system,它没有源代码,但却是可以实现的示例。我还发现Grammidity,它允许从语法进化出MIDI事件序列。
更新(2011年7月):我刚刚找到some relevant Python code on the MIT Open Courseware site。
答案 1 :(得分:1)
你可能想要研究马尔可夫链 - 它们可能比开始使用的进化算法更有用,因为判断输出的质量是为了培育最好的是将成为一场噩梦(主观和耗时),它们非常适合与进化规划相结合。
Coding Horror对他们有很好的介绍。这篇文章解释了这个概念并展示了非凡的成果,评论中提到的音乐更多(我在评论和他们链接的网站上丢失了几个小时)。有一些更具体的细节,并在Wikipedia上进一步阅读。
Markov链对它们有一个概率因素,所以你可以将它们与进化规划结合起来 - 通过一种选择除掷骰子之外的其他选择的方法。
答案 2 :(得分:0)
有一些研究正在使用Cellular Automata来生成音乐。与所有其他音乐一代一样,它实际上是一个映射而不是生成的问题。你可以使用几乎任何东西作为输入,只要你定义你的映射,使它听起来“好”(我觉得有趣的是一个更好的词)。
谷歌搜索“细胞自动机音乐”给出了不少热门歌曲。另一个很好的信息来源是Computer Music Journal,如果您可以访问他们的档案。