编写程序会将吉他标签转换为音符

时间:2014-11-19 22:19:15

标签: python logic guitar

我正在努力了解吉他上的音符是什么,所以我希望能够键入字符串调整到的内容以及我正在播放的音符,并让程序告诉我它是什么音符或输入注意并回到我可以玩的所有不同的地方。

到目前为止,我有一个程序可以告诉我基于字符串和音品的注释是什么,但我只是编写了很长的路径并且它需要很多处理能力。根据用户输入字符串调整内容的内容,它会打开一个函数,该字符串会询问正在使用什么音品,然后根据音调运行我单独运行的elif个音色之一输入。

例如:

elif fret == '3':
    print('That note is E')

我知道有一种方法可以用尽可能多的代码完成它,但我对编程很新,并且不能完全提出逻辑。

1 个答案:

答案 0 :(得分:2)

构建一对将音符名称映射到音高编号并返回的dicts,您可以构建一个简单的函数来执行此操作,例如:

NOTES = {"C" : 0, "C#" : 1,  "D": 2, "D#" : 3, "E": 4, "F": 5, 
   "F#" : 6, "G":  7, "G#" : 8, "A": 9, "A#" : 10, "B": 11}


NAMES = dict([(v, k) for (k, v) in NOTES.items()])


def GetNote(stringNote, fretNum):
   baseNote = NOTES[stringNote]
   fretNoteNum = (baseNote + fretNum) % 12
   return NAMES[fretNoteNum]

>>> GetNote("E", 0)
'E'
>>> GetNote("E", 1)
'F'
>>> GetNote("A", 7)
'E'
>>> GetNote("G", 6)
'C#'