Пример #1
0
        public double ToMilliSeconds(double tick)
        {
            if (_tick != null && _tick.Value == tick)
            {
                return(_toMilliSecCache);
            }
            if (tick < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(tick));
            }
            ScoreTempo scoreTempo = TempoMap.FindLast(obj => obj.Tick <= tick);

            _tick = tick;
            return(_toMilliSecCache = scoreTempo.MilliSeconds + GetMilliSeconds(tick - scoreTempo.Tick, scoreTempo.Tempo, _resolution));
        }
Пример #2
0
        public double ToTick(double msec)
        {
            if (_msec != null && _msec.Value == msec)
            {
                return(_toTickCache);
            }
            if (msec < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(msec));
            }
            ScoreTempo scoreTempo = TempoMap.FindLast(obj => obj.MilliSeconds <= msec);

            _msec = msec;
            return(_toTickCache = scoreTempo.Tick + GetTickLength(msec - scoreTempo.MilliSeconds, scoreTempo.Tempo, _resolution));
        }