以下の私の回答のコードは、 や などの文字列の音符を対応する MIDI ノート値に変換しC#-4
ますF-3
。
必要になるたびにオンラインで掘り下げるのにうんざりしているので、これを投稿しています。使い道を見つけられるのは私だけではないと確信しています。私はこれを書いたところです - それはテストされ、正しいです。これは Python で書かれていますが、普遍的に理解できるものにかなり近いと感じています。
#Input is string in the form C#-4, Db-4, or F-3. If your implementation doesn't use the hyphen,
#just replace the line :
# letter = midstr.split('-')[0].upper()
#with:
# letter = midstr[:-1]
def MidiStringToInt(midstr):
Notes = [["C"],["C#","Db"],["D"],["D#","Eb"],["E"],["F"],["F#","Gb"],["G"],["G#","Ab"],["A"],["A#","Bb"],["B"]]
answer = 0
i = 0
#Note
letter = midstr.split('-')[0].upper()
for note in Notes:
for form in note:
if letter.upper() == form:
answer = i
break;
i += 1
#Octave
answer += (int(midstr[-1]))*12
return answer