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