生成密钥中所有笔记的一般方法是什么?

时间:2018-02-08 17:10:45

标签: python

我在python中设计一个软件来帮助我构图并在我玩的时候提出有用的建议。目前,密钥的定义方式如下:

noteDict = {"R":"C",  #root
        "m2":"Db",    #minor 2nd
        "M2":"D",     #major 2nd
        "m3":"Eb",    #etc
        "M3":"E",
        "P4":"F",
        "A4":"F#",
        "D5":"Gb",
        "P5":"G",
        "A5":"G#",
        "m6", "Ab",
        "M6", "A",
        "m7", "Bb",
        "M7", "B"}

#stores noteDict, and adds entries for notes in a different format:
#ex: knows that a m6 is the same as a b13 and a D5 is the same as a b5
C = key(noteDict)  

这可以按预期工作,但是能够拥有一组规则来定义一个键的构造而不是手工编码就很好。存在明显的规则,例如"增强的第4个是具有尖锐"的完美第4个,但是我仍然需要一种方法来产生基本尺度(即在C大调:R M2 M3 P4 ... - CDE F ...)然后将修改应用于基本比例。

这样做的一个显而易见的方法是维护一个基于半音的间隔表,所以如果你被告知一个根(例如C),你可以向根添加3个半音以达到次要的第三个(C - > ; Db - > D - > Eb)。

在处理诸如Cb major之类的键时会出现此方法的问题。找到Cb正确拼写的小三分之一将添加三个半音并吐出D而不是正确的Ebb。如何为任意键生成拼写正确的noteDict?

0 个答案:

没有答案