private DanceSequence readSequenceDetails(int startMeasure, String[] scriptSource) { DanceSequence sequence = new DanceSequence(startMeasure); Song.MusicTime lastMusicTime = Song.MusicTime.QUARTER; bool isTriplet = false; foreach (String _step in scriptSource) { String step = _step.Trim(); Match m = regexStep.Match(step); if (m.Success) { String mtPart = m.Groups[1].Value.Trim(); String mtFraction = m.Groups[2].Value.Trim(); String mtDotted = m.Groups[3].Value.Trim(); String tripletStart = m.Groups[4].Value.Trim(); String move = m.Groups[5].Value.Trim(); String tripletEnd = m.Groups[6].Value.Trim(); if (!"".Equals(mtPart) && !"".Equals(mtFraction)) { float fraction = ParserUtil.toFloat(mtPart) / ParserUtil.toFloat(mtFraction); bool dotted = !"".Equals(mtDotted); lastMusicTime = Song.FractionsInMusicTime(fraction, dotted); } if (!"".Equals(tripletStart)) isTriplet = true; sequence.addInput( InputState.moveFromString(move), lastMusicTime, isTriplet); if (!"".Equals(tripletEnd)) isTriplet = false; } } return sequence; }