8

我正在制作一个生成随机简单旋律的程序,该程序基于 C 大调音阶的随机基本和弦进行。

什么是从这个音阶生成 4 个三和弦的和弦进行的好方法?从音阶生成 4 个完全随机的三和弦(从现有的 7 个三和弦)通常听起来不太好。

我需要一种方法来生成听起来不错或没问题的和弦进行,但我不想简单地从现有的进行库中随机选择一个进行。我仍然希望程序自己生成这 4 个三和弦,使用一些简单的算法来确保生成的进程听起来不错。

(正如我所说,这 4 个三和弦将分别取自 C 大调音阶的 7 个三和弦)。

请注意:这个问题与我之前关于创建旋律创建算法的方法的问题不是重复的。这是关于找到一种产生和弦进行的方法。生成旋律是一个不同的话题。

谢谢你的帮助

编辑:关于如何知道一个三合会在另一个三合会旁边听起来是否还可以的一般指南,也会很棒。

4

3 回答 3

3

听起来你需要把它分成几个阶段:

  • 首先,从这个密钥的所有可能性中随机生成一个三元组
  • 其次,应用一个或多个过滤器来消除那些不“听起来不错”(*)的过滤器。
  • 继续,直到你有 4 个通过所有过滤器的三元组。

我认为这个解决方案最终也可能会令人愉快——你可以慢慢地建立一组过滤器,每个过滤器都做一件简单的事情——但是放在一起,你会逐渐弄清楚是什么定义了“体面”。

(*)听起来不错的定义是参考之前的三元组(如果有的话),你可以在这里编写过滤器,例如:

  • 三和弦的根音是否符合与先前根音相关的逻辑模式?; 例子:

    • 简单的上升
    • 简单降序
    • 三分之二上升
    • ETC
  • 这个三和弦的音符是否与前一个三和弦至少有一个共同的音符?

    • 这可以找到一些听起来不错的倒置
  • 前一个三元组的“跳跃”是否“小于”某个给定的阈值?

    • 为了避免整个规模的不和谐跳跃
    • 简单地通过将三和弦的 MIDI 音符值相加并与之前的比较来实现
于 2014-01-15T21:59:06.337 回答
1

你可以检查这些文件

使用申克分析和和弦空间中的概念生成音乐

和弦 进行的概率模型

但是这个主题很复杂,例如,让我们说音乐信号的准确和紧凑表示是基于内容的大规模音乐应用程序的关键组成部分,例如音乐内容管理和近似重复音频检测。在这种情况下,您正在使用 C 大调音阶,如下所示:

C - D - E - F - G - A - B

有间隔

C - STEP - D - STEP - E - HALF STEP - F - STEP - G - STEP - A - STEP - B - HALF STEP - C - 

现在一个和弦是由音符之间的距离形成的,例如

C major chord is formed by C-E-G
D minor chord is formed by D-F-A
E minor chord is formed by E-G-B
F major chord is formed by F-A-C
G major chord is formed by G-B-D
A minor chord is formed by A-C-E
B dim   chord is formed by B-D-F

尽管在该领域进行了许多研究,但您描述的问题仍未得到很好的解决。例如,看看其他论文,他们建议根据和弦进行对音乐信号进行中级总结。因此,基于监督学习模型从音乐信号中识别和弦进行,并通过局部探测 n-best 候选来提高识别精度。

因此,您可以研究和弦进行的属性,然后从探测的和弦进行计算直方图,作为音乐信号的摘要。然后通过基于和弦进行的总结,您可以描述音乐信号的谐波进行和音调结构。

但是怎么做呢?,你需要音乐数据集(> 70,000首歌曲??),这样你就可以检索相关信息......

于 2014-01-15T22:05:10.847 回答
0

其实这是一个很有趣的问题。

我想说,这里还需要考虑和理解一件事:你想对你的和弦进行说什么(即表达)?我假设你想用你的旋律和支持的和弦进行来表达“有意义的东西”。

现在,“有意义的东西”并不是一个确切的术语。就我个人而言,我会将这个术语描述为一个完整的、完整的东西,作为一个短篇小说。它可以像 4 个和弦一样简短,但它应该能说明一些事情,并且应该加起来一个完整的故事。如果我们接受这一点,那么我会说你的 4 和弦应该从头到尾“引导”,我们应该“感受”最后一个和弦,因为它是“故事”的令人满意的结局(解决)。

困难的部分是,对于每个人来说,“令人满意”、“体面”等术语可能意味着完全不同的东西,对你来说令人满意的东西可能对另一个人来说并不令人满意。虽然在音乐理论中有一些基本的指导方针(在上面的答案和评论中链接),这些都是伟大的作曲家通过数百年的音乐测试的,所以我想你应该尝试其中的一些提示。

于 2014-04-24T15:14:56.127 回答