创建简单和弦进行的算法 [英] An algorithm to create a simple chord progression
问题描述
我正在制作一个程序,该程序基于C大调音阶的随机基本和弦进行,生成随机的简单旋律。
I'm making a program that generates random simple melodies, based an a randomized basic chord progression from the C Major scale.
有什么好方法可以从这个音阶产生4个三和弦的和弦进行?从音阶中生成4个完全随机的三合会(从现有的7个中)通常听起来不太好。
What would be a good way to generate a chord progression of 4 triads from this scale? Generating 4 completely random triads (from the 7 existing ones) from the scale usually doesn't sound very good.
我需要一种方法来产生听起来会很柔和的和弦进行好的还是好的,但是我不想简单地从现有的进度池中随机选择一个进度。我仍然希望程序使用一些简单的算法自行生成这4个三合会,以确保生成的进度听起来不错。
I need an approach to generate a chord progression that will sound good or okay, but I don't want to simply choose a progression randomly from an existing pool of progressions. I still want the program to generate these 4 triads by itself, using some simple algorithm to ensure that the generated progression sounds decent.
(正如我所说,这4个三合会会
(As I said, these 4 triads will each be taken from the 7 triads of the C Major scale).
请注意:这个问题与我之前关于创建方法的问题没有重复创造旋律的算法。这是关于找到一种产生和弦进行的方法。产生旋律是另一回事。
感谢您的帮助
编辑:一般指南
推荐答案
听起来像您需要的声音将其分为以下几个阶段:
Sounds like you need to break this into phases:
- 首先,从此键的所有可能性中随机生成一个三合会
- 第二,应用一个或多个过滤器以消除那些不听起来不错(*)的过滤器。
- 继续前进,直到有四个通过所有过滤器的三合会为止。
我认为此解决方案最终也可能会很令人愉快-您可以慢慢建立一个过滤器集合,每个过滤器简单的一件事-但是放在一起,您会逐渐得出定义体面的含义。
I think this solution might end up being pleasant to work on too - you can slowly build up a collection of filters, each which does one simple thing - but put together, you gradually work out what it is that defines "decent".
(*)听起来不错是定义了并参考了先前的三合会(如果有的话) ,在这里您可以编写以下过滤器:
(*) The sounds decent is defined in terms of with reference to the previous triad(s) (if there are any), and this is where you could write filters like:
-
黑社会的根音是否相对于先前的根音符合逻辑模式?;示例:
- 简单上升
- 简单下降
- 升至三分之二
- 等
- Simple ascending
- Simple descending
- Ascending in thirds
- etc
执行此三元组的音符
- 这可能会发现一些令人反感的倒置
上一个三合会的跳跃是否小于给定阈值?
- 避免在整个音阶上产生震荡跳跃
- 通过将三重奏的MIDI音符值相加并与上一个
这篇关于创建简单和弦进行的算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!