/// <summary> /// Converts a string into an accidented diatonic interval /// </summary> /// <param name="s"> /// The string. /// </param> /// <returns> /// The <see cref="Interval" />. /// </returns> public new static Interval Parse(string s) { s = Regex.Replace(s.Trim(), "[()]", string.Empty); var accidentalString = Regex.Match(s, "^[^0-9]*").ToString(); var intervalString = Regex.Match(s, "[0-9]*$").ToString(); var accidental = Accidental.Parse(accidentalString); var interval = (DiatonicInterval)Enum.Parse(typeof(DiatonicInterval), intervalString); var result = new Interval(interval, accidental); return(result); }
public static Note Parse(string s) { var sNote = s.Substring(0, 1); if (!Enum.TryParse <DiatonicNote>(sNote, out var diatonicNote)) { throw new InvalidOperationException(); } if (s.Length == 1) { var result = new Note(diatonicNote); return(result); } else { var sAccidental = s.Substring(1, 1); var accidental = Accidental.Parse(sAccidental); var result = new Note(diatonicNote, accidental); return(result); } }