public override int Parse(PlaineAndEasieParser parser, string s) { var matchingKey = octaves.Keys.OrderByDescending(k => k.Length).First(k => s.StartsWith(k)); parser.CurrentOctave = octaves[matchingKey]; return(matchingKey.Length); }
public override int Parse(PlaineAndEasieParser parser, string s) { parser.IsGroupingEnabled = false; parser.GroupSize = 0; //TODO: Implement return(s.IndexOf(")") + 1); }
public override int Parse(PlaineAndEasieParser parser, string s) { var matchingKey = barlineTypes.Keys.OrderByDescending(k => k.Length).First(k => s.StartsWith(k)); parser.AddBarline(barlineTypes[matchingKey]); parser.PendingAlter = 0; parser.PendingNatural = false; parser.LastAddedStep = default(char); return(matchingKey.Length); }
public override int Parse(PlaineAndEasieParser parser, string s) { if (s[0] == 'x') { parser.PendingAlter++; } else if (s[0] == 'b') { parser.PendingAlter--; } else if (s[0] == 'n') { parser.PendingNatural = true; } return(1); }
public override int Parse(PlaineAndEasieParser parser, string s) { var hasTrill = false; var hasSlur = false; var i = 0; var step = s[i++]; for (; i < s.Length; i++) { if (s[i] == 't') { hasTrill = true; } else if (s[i] == '+') { hasSlur = true; } else { break; } } if (parser.LastAddedStep != default(char) && parser.LastAddedStep != step) { parser.PendingAlter = 0; parser.PendingNatural = false; } parser.AddNote(step, parser.PendingAlter, parser.PendingNatural, hasTrill, hasSlur); parser.LastAddedStep = step; if (parser.IsGroupingEnabled) { parser.GroupSize++; } return(i); }
public override int Parse(PlaineAndEasieParser parser, string s) { var matchingSignature = specialSignatures.OrderByDescending(ss => s.Length).FirstOrDefault(ss => s.StartsWith(ss)); if (matchingSignature != null) { parser.AddTimeSignature(matchingSignature, 0, 0); return(matchingSignature.Length); } var length = DetermineLength(s); var substring = s.Substring(0, length); var parts = substring.Split('/') ?? new string[0]; if (parts.Length != 2) { if (substring.Trim() == "3") { parser.AddTimeSignature(substring, 3, 4); //Case when 3/4 is written as '3' } else { parser.AddTimeSignature(substring, 0, 0); } } else { if (!int.TryParse(parts[0], out int numerator) || !int.TryParse(parts[1], out int denominator)) { parser.AddTimeSignature(substring, 0, 0); } else { parser.AddTimeSignature(null, numerator, denominator); } } return(length); }