Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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);
            }
        }