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