public static BarrePosition AutoBarrePosition(int[] marks, BarreTypeOption barreTypeOption = BarreTypeOption.None, bool leftToRight = false) { if (barreTypeOption != BarreTypeOption.None) { MarkAnalysis ma = ChordAnalysis(marks); int targetFret = ma.MinFret; int startString = -1; int endString = -1; if (targetFret > 0) { if (leftToRight) { startString = 0; endString = 0; for (int i = startString; i < marks.Length; i++) { if (marks[i] < targetFret) { break; } if ((barreTypeOption == BarreTypeOption.Full && marks[i] >= targetFret) || (barreTypeOption == BarreTypeOption.Partial && marks[i] == targetFret)) { endString = i; } } } else { startString = marks.Length - 1; endString = marks.Length - 1; for (int i = endString; i >= 0; i--) { if (marks[i] < targetFret) { break; } if ((barreTypeOption == BarreTypeOption.Full && marks[i] >= targetFret) || (barreTypeOption == BarreTypeOption.Partial && marks[i] == targetFret)) { startString = i; } } } if (endString > startString) { return(new BarrePosition(targetFret, startString + 1, endString + 1)); } } } return(null); }
public static string GetFriendlyValue(BarreTypeOption value) { switch (value) { case BarreTypeOption.None: return(Strings.BarreTypeOptionNoneFriendlyValue); case BarreTypeOption.Partial: return(Strings.BarreTypeOptionPartialFriendlyValue); case BarreTypeOption.Full: return(Strings.BarreTypeOptionFullFriendlyValue); } return(GetFriendlyValue((object)value)); }
public void Parse(string s) { if (string.IsNullOrWhiteSpace(s)) { throw new ArgumentNullException("s"); } s = s.Trim(); string[] vals = s.Split('\t'); marks = TestUtils.ParseIntArray(vals[0]); barreTypeOption = (BarreTypeOption)Enum.Parse(typeof(BarreTypeOption), vals[1]); rightToLeft = bool.Parse(vals[2]); ExpectedResult = BarrePosition.Parse(vals[3]); }