Написание программы преобразует вкладки гитары в заметки

Я пытаюсь узнать, какие ноты находятся на гитаре, поэтому я хочу иметь возможность набирать то, на что настроена струна и на каком ладе я играю, и заставить программу сказать мне, что это за нота или напечатать в ноте и вернуть все разные места, где я могу играть.

Пока у меня есть программа, которая говорит мне, что примечание основано на струне и раздражении, но я только написал это долго, и это требует большой вычислительной мощности. Основываясь на том, что пользователь вводит для настройки строки, он открывает функцию для этой строки, которая спрашивает, какой раздражитель используется, а затем на основе раздражения он запускает один из многих elifс, что я индивидуально напечатал.

Например:

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

Я знаю, что есть способ сделать это не так много кода, но я действительно плохо знаком с программированием и не могу придумать логику.

1 ответ

Решение

Создайте пару кодов, которые отображают имена заметок на номера тона и обратно, и вы можете создать простую функцию для этого, например:

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#'
Другие вопросы по тегам