/// <summary>
        /// </summary>
        /// <param name="tp"></param>
        public void RemoveTimingPointLine(TimingPointInfo tp)
        {
            if (tp == null)
            {
                return;
            }

            if (TimingPointLines.ContainsKey(tp))
            {
                TimingPointLines[tp].Destroy();
                TimingPointLines.Remove(tp);
            }

            Container.ForceRecache();
        }
        /// <summary>
        /// </summary>
        /// <param name="tp"></param>
        public void MoveTimingPointLine(TimingPointInfo tp)
        {
            if (tp == null || !TimingPointLines.ContainsKey(tp))
            {
                return;
            }

            TimingPointLines[tp].Y = Height - Height * (float)(tp.StartTime / AudioEngine.Track.Length);

            if (TimingPointLines[tp].Y < 0)
            {
                TimingPointLines[tp].Y = 0;
            }

            Container.ForceRecache();
        }