Example #1
0
        public IntervalPattern Pattern()
        {
            var pattern = new IntervalPattern();

            var previous = this.Root();

            foreach (var note in this.chord.Skip(1))
            {
                var interval = note - previous;

                pattern.Add(interval);
                previous = note;
            }

            return(pattern);
        }
Example #2
0
        public static IntervalPattern FromString(string pattern)
        {
            if (string.IsNullOrEmpty(pattern))
            {
                throw new ArgumentNullException("pattern");
            }

            string[] words = pattern.Split(new char[] { ',' });

            var ip = new IntervalPattern();

            foreach (string word in words.Where(w => !String.IsNullOrWhiteSpace(w)))
            {
                string candidate = word.Trim();

                Accidental accidental = Accidental.FromString(candidate);

                if (accidental != null)
                {
                    candidate = candidate.Substring(1);
                }

                int value = Convert.ToInt32(candidate, CultureInfo.CurrentCulture);

                if (value > 0)
                {
                    if (accidental != null)
                    {
                        value += accidental.Value;
                    }

                    ip.Add(new Interval(value));
                }
            }

            return(ip);
        }