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); }
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); }