private void LookForMatches(Action <BeatsMatch> matchFound)
        {
            if (patternBeats.Beats.IsEmpty || playedBeats.IsEmpty)
            {
                return;
            }
            var diff = playedBeats.Next.T - patternBeats.Beats.Next.T;

            if (Math.Abs(diff) > settings.MaxMatchingTime)
            {
                return;
            }
            var match = new BeatsMatch(patternBeats.Beats.RemoveNext(), playedBeats.RemoveNext(), Accuracy(diff));

            matchFound(match);
            LookForMatches(matchFound);
        }