static string NoteName(TuningStrings tuning, byte s, bool flats = false)
        {
            String[] notesNamesHi = { "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" };
            String[] notesNamesLo = { "C", "Db", "D", "Eb", "E", "F", "Gb", "G", "Ab", "A", "Bb", "B" };

            var id = Sng2014FileWriter.GetMidiNote(tuning.ToArray(), s, 0, false, 0)%12;
            return flats ? notesNamesLo[id] : notesNamesHi[id];
        }
 public string NameFromStrings(TuningStrings tuning, bool flats = true)
 {
     var t = tuning.ToArray();
     var noteNames = String.Empty;
     switch (GetTuningFamily(t))
     {
         case TuningFamily.Standard:
             noteNames = string.Format("{0} Standard", NoteName(tuning, 0, flats));
             break;
         case TuningFamily.Drop:
             noteNames = string.Format("{0} Drop {1}", NoteName(tuning, 5, true), NoteName(tuning, 0, flats));
             break;
         case TuningFamily.Open:
             break;
         default:
             for (Byte s = 0; s < 6; s++)
                 noteNames += NoteName(tuning, s, flats);
             break;
     }
     return noteNames;
 }