public static string GetToneSolfageNameFromMidiIndex(int aMidiIdx, KeySignatureEnum aKeySignature = KeySignatureEnum.CMaj_AMin, char separator = '/') { aMidiIdx += (int)aKeySignature * 7; while (aMidiIdx > 11) { aMidiIdx -= 12; } string result = ""; switch (aMidiIdx) { case 0: result = "Do"; break; case 1: result = "Di" + separator + "Ra"; break; case 2: result = "Re"; break; case 3: result = "Ri" + separator + "Me"; break; case 4: result = "Mi"; break; case 5: result = "Fa"; break; case 6: result = "Fi" + separator + "Se"; break; case 7: result = "Sol"; break; case 8: result = "Si" + separator + "Le"; break; case 9: result = "La"; break; case 10: result = "Li" + separator + "Te"; break; case 11: result = "Ti"; break; } return(result); }
public static string GetToneNameFromMidiIndex(int aMidiIdx, char separator = '/', TheorySystemEnum aTheorySystem = TheorySystemEnum.EnglishNames, KeySignatureEnum aKeySignature = KeySignatureEnum.CMaj_AMin) { string result = ""; switch (aTheorySystem) { case TheorySystemEnum.EnglishNames: result = GetToneEnglishNameFromMidiIndex(aMidiIdx, separator); break; case TheorySystemEnum.FixedSolfege: result = GetToneSolfageNameFromMidiIndex(aMidiIdx, KeySignatureEnum.CMaj_AMin, separator); break; case TheorySystemEnum.MovableSolfege: result = GetToneSolfageNameFromMidiIndex(aMidiIdx, aKeySignature, separator); break; } return(result); }