Esempio n. 1
0
        private void Normalize(int additionalBeats, bool trimToBeats = true)
        {
            TimeSpan tBegin = _marker1 < _marker2 ? _marker1 : _marker2;
            TimeSpan tEnd   = _marker1 < _marker2 ? _marker2 : _marker1;

            List <TimeSpan> beatsToEvenOut = Beats.GetBeats(tBegin, tEnd).ToList();

            List <TimeSpan> otherBeats = Beats.Where(t => t <tBegin || t> tEnd).ToList();

            if (beatsToEvenOut.Count < 2 && trimToBeats)
            {
                return;
            }

            TimeSpan first = trimToBeats ? beatsToEvenOut.Min() : tBegin;
            TimeSpan last  = trimToBeats ? beatsToEvenOut.Max() : tEnd;

            int numberOfBeats = (int)(beatsToEvenOut.Count + additionalBeats);

            if (numberOfBeats < 2)
            {
                numberOfBeats = 2;
            }

            TimeSpan tStart    = first;
            TimeSpan intervall = (last - first).Divide(numberOfBeats - 1);

            for (int i = 0; i < numberOfBeats; i++)
            {
                otherBeats.Add(tStart + intervall.Multiply(i));
            }

            Fadeout.SetText(intervall.TotalMilliseconds.ToString("f0") + "ms", TimeSpan.FromSeconds(4));

            SetAllBeats(otherBeats);
        }