Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 制作旋律创作基本算法的简单方法?_Algorithm - Fatal编程技术网

Algorithm 制作旋律创作基本算法的简单方法?

Algorithm 制作旋律创作基本算法的简单方法?,algorithm,Algorithm,我在这里看到了一些关于音乐制作算法的问题。但它们都涉及复杂构图的算法以及不同的风格和方法 我正在做一个程序,从C大调音阶创作简单的旋律。我设计了一个简单的算法来实现这一点,但有点卡住了 我想知道我设计的这个算法是否是实现这类事情的一个好的“总体方向”。你觉得怎么样?这是一种正确的思维方式,还是您推荐另一种方法 我目前的方法涉及一个只有16个四分音符的旋律,分为四个小节(这会很无聊,因为它没有节奏,只是作为一个开始)。工作原理: 该计划将首先从音阶中随机抽取四个三和弦 (音阶有7个和弦可供选择)

我在这里看到了一些关于音乐制作算法的问题。但它们都涉及复杂构图的算法以及不同的风格和方法

我正在做一个程序,从C大调音阶创作简单的旋律。我设计了一个简单的算法来实现这一点,但有点卡住了

我想知道我设计的这个算法是否是实现这类事情的一个好的“总体方向”。你觉得怎么样?这是一种正确的思维方式,还是您推荐另一种方法

我目前的方法涉及一个只有16个四分音符的旋律,分为四个小节(这会很无聊,因为它没有节奏,只是作为一个开始)。工作原理:

  • 该计划将首先从音阶中随机抽取四个三和弦 (音阶有7个和弦可供选择)。然后为每个和弦指定一个和弦 四项措施之一

  • 之后,程序会为每个度量的第一个音符指定四分音符。那个 音符将是构成该和弦的三个音符之一 量。(从三个选项中随机选择一个)

  • 然后,程序将为每个度量值的剩余3个插槽分配注释。这些注释都是上一个注释上方的第二个注释、上一个注释下方的第二个注释、上一个注释上方的第三个注释或下方的第三个注释

这产生的旋律听起来不一定很好,但听起来并不特别“糟糕”。所以从某种意义上说,它“有效”

但正如我所说,我想知道是否有更好的方法来创建简单旋律制作算法,以及我目前的方法是否存在任何问题(当然,除了缺乏任何节奏多样性)


这不是一个不好的开始,但请考虑下面的批评和建议:

评论:

  • 第二步和第三步使第一步变得浪费。你基本上只是选择了一个随机音符来开始每一个测量——事实上,它是该音阶中三和弦的一部分,这一点在你允许程序完全偏离该三和弦的事实中丢失了。也许你是想通过确保它们是4个独特的三和弦的一部分来实现起始音符的独特性,但是三和弦之间有太多的重叠,这几乎不值得付出努力。此外,从音乐理论的角度来看,仅仅从三和弦的音符开始一个音阶并不足以让该音阶听起来像/代表某个三和弦
建议:

  • 开始时,你应该只弹奏所选三和弦的每个音阶的音符。这将产生更自然的旋律。然后,在这里或那里进行一个非和弦音符的实验——音乐理论的一个“规则”是,非和弦音调应该以半步接近或以半步进行。例如,如果一个给定的测量值被分配了一个C大调和弦,那么使用非和弦音调的安全序列将是G,G#,E,G(G#是可接受的非和弦音调,因为前面有半步)。如果你向上接近一个非和弦音调,你应该向下分解,反之亦然;但是你不必总是跟着它走就可以走。如果你想找到更多像这样的“规则”,可以在谷歌上搜索非和弦音调。你可能会遇到一些相当沉重的音乐理论。另一个简单的方法是在每个音阶中加入大调和小调7分,这样就可以很容易地注入听起来很好的非和弦音调

    • 你不应该选择任何旧的随机4三和弦,除非你希望你的旋律听起来非常实验性(读:坏)。你们可能知道,最简单和最安全的和弦进行式之一是I,IV,V,I;这就是所谓的滋补扩张。每个和弦都有一个或多个常规的替代品;例如,V和弦可以替换为vii减音,产生I,IV,viiDim,I。你会注意到C大调的V和弦是G B D,vii减音是B D F-它们共享两个相同的音符(B D);因此耳朵通常接受它们作为彼此的替代品。我会根据主音展开伪随机选择我的四个和弦,允许替换I、IV、V、I

    • 至少,你几乎可以肯定的是,旋律应该以主音开始,以主音结束,并以主音(第五个音符)作为倒数第二个音符。99%的西方音乐遵循这些“规则”


我不知道你知道多少音乐理论,但我已经研究了一点,如果你愿意,我很乐意指出一些更详细的相关观点;尽管如此,我认为我在这里包含的内容足以作为一个良好的开端。

在这个领域已经有大量的研究,通常称为算法合成。有一个合理的概述。根据您是否根据一组规则合成音乐,或者您是否分析了大量的源材料,以便根据之前的音符生成下一个音符的可能性编码,将此类系统分为几种不同的类型


我建议通读现有的许多论文,以便更多地了解这个问题。他们中的大多数人会引用经典著作,勒达尔和杰肯多夫的

谢谢你的详细回答:)两个问题:1-你是否建议只使用I、IV、V、I级数及其代词?如果是这样的话,有没有一种方法可以使用不同的、更多样化的和弦进行曲,而不让程序简单地从一些预先准备好的和弦进行曲中进行选择?2-你建议在构建和弦进行和旋律之前选择音阶吗?如果是这样的话,让我们假设程序选择了C大调音阶。例如,在这个音阶中,音符D没有一个接近它半步的音符。这是不是意味着我不能在CM上使用它