模拟音乐的算法?

5
我对自动音乐制作很感兴趣。我正在考虑一个可以输入大量1小节琶音(=固定长度的音符序列,为简单起见),并根据学到的知识生成自己的序列的程序。
首先,我知道我可以使用字母(二元组?三元组?)频率分析,仅应用于音符音调,然后根据频率概率生成我的序列。
您是否了解更先进的算法,也许是专门用于音乐序列的?
5个回答

6

各种分形和排序算法往往听起来像音乐。 - Quickredfox

4
作为一名音乐人和软件工程专业的学生,我认为我可以在这里提供一些有趣的见解:P。我自己也做了很多相关的工作,并计划未来基于此开展一些大型项目。
当你编写算法时,你的目标是得出一个解决方案——例如,在排序问题中,它是一个有序的列表。在算法音乐作曲中,解决方案通常是有一个令人愉悦、有结构等的歌曲或旋律。
解决方案的问题在于它不仅是客观的,而且解决方案非常开放。使用排序算法,您只有一种方法来排序一个列表。而在音乐创作中,您有数百万个令人愉悦的歌曲/任何您的目标。
因此,您需要一个算法,用于找到最优解而不是确定性解。我的建议是遗传算法或类似的算法。遗传算法非常好,因为它们可以创建各种最优解的池。
您需要将组成部分分解为旋律、节奏、结构等的遗传算法。并设计适合您需求的适应度函数。
当然,这只是解决问题的一种方法;还有许多其他方法,而维基百科上列出的链接是一个很好的开始。
我建议查看: GenJam:一种即兴爵士乐遗传算法,旨在交换独奏- http://www.it.rit.edu/~jab/GenJam.html 这本书非常启发人: http://www.springer.com/computer/information+systems/book/978-1-84628-599-8 我想另一种有趣的方法可能是使用神经网络……但是给它们提供数据集可能会有些问题……这需要更多的工作。
无论如何,祝你好运: P

此外,学习音乐作曲和和声将有助于您设计适合的健身功能:D - RyanCacophony

2

对现有音乐进行统计分析,得出的结果通常是平庸的。因为它往往会再现你所分析的所有共同特征,很少有令人感兴趣的东西。

音乐是多维的。你可以清楚地分析你感兴趣的任何或所有维度。音高、速度、音符序列、和声进展、音量变化,任何事物。一切都可以分析。

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

据我所知(我的儿子是一个作曲家),更有趣的是发明自己独特的算法来生成相对独特的音乐。

这里有一些我儿子指定的东西。它生成了一个由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

Spore上的音乐怎么样?我相信音乐是自动生成的。 - Spencer Ruport
嗯,这意味着你已经了解了流派规范,并且不会从其他歌曲中提取它们。 - janesconference
@janesconference:实际上我一窍不通。我是一个低音吉他手,所以我懂一点;我的儿子才是作曲家。 - S.Lott

1

尽管马尔可夫链通常用于处理比一个小节更长的序列,但它是一种简单而有效的生成类似于输入音乐的方法。有一个使用Python编写并使用RTcmix进行音频生成的示例,请参见我的实现此处

它基于《来自元层的笔记》中的马尔可夫链章节,这是一本关于算法作曲的优秀文本。


0

如果你了解音乐的惯例,阅读教人如何创作歌曲的书籍和文章会非常有帮助。你会得到很棒的创意。

时不时地加入一些踏板点来建立紧张感。使用古老的技巧,在两个不同的乐器之间进行呼应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接