namespace T3.Core.Animation; public static class TimeFormat { private static int GetBeatTimeBar(double timeInBars, int startCountFrom) { return (int)(timeInBars) + startCountFrom; // NOTE: We count bars from Zero because it matches the current time } private static int GetBeatTimeBeat(double timeInBars, int startCountFrom) { return (int)(timeInBars * 4) % 4 + startCountFrom; } private static int GetBeatTimeTick(double timeInBars, int startCountFrom) { return (int)(timeInBars * 16) % 4 + startCountFrom; } public static string FormatTimeInBars(double timeInBars, int startCountFrom) { return $"{GetBeatTimeBar(timeInBars, startCountFrom):0}.{GetBeatTimeBeat(timeInBars, startCountFrom):0}.{GetBeatTimeTick(timeInBars,startCountFrom):0}."; } public static double ToSeconds(double timeInBars, double bpm) { return timeInBars * 240 / bpm; } public enum TimeDisplayModes { Secs, Bars, F30, F60, } }