private void SetSamplerMarkers()
        {
            if (Wave == null)
            {
                return;
            }

            for (var i = 1; i <= 2000; i++)
            {
                Wave.RemoveMarker("S" + i + "S");
                Wave.RemoveMarker("S" + i + "E");
            }

            if (Samples != null)
            {
                for (var i = 1; i <= Samples.Count; i++)
                {
                    var sample = Samples[i - 1];

                    if (sample == CurrentSample)
                    {
                        continue;
                    }

                    if (sample.Start == 0 && sample.Length == 0)
                    {
                        continue;
                    }

                    Wave.AddMarker("S" + i + "S", sample.Start);
                    Wave.AddMarker("S" + i + "E", sample.Start + sample.Length);
                }
            }

            Wave.RemoveMarker("CSS");
            Wave.RemoveMarker("CSE");
            Wave.RemoveMarker("CSO");

            if (CurrentSample == null)
            {
                return;
            }

            Wave.AddMarker("CSS", CurrentSample.Start);

            if (CurrentSample.Offset != 0D)
            {
                Wave.AddMarker("CSO", CurrentSample.Offset);
            }

            Wave.AddMarker("CSE", CurrentSample.Start + CurrentSample.Length);
        }
        private void SetShufflerMarkers()
        {
            if (Wave == null)
            {
                return;
            }

            Wave.RemoveMarker("PFI");
            Wave.RemoveMarker("FIS");
            Wave.RemoveMarker("FIE");
            Wave.RemoveMarker("FOS");
            Wave.RemoveMarker("FOE");
            Wave.RemoveMarker("SKS");
            Wave.RemoveMarker("SKE");

            var attributes = AutomationAttributesHelper.GetAutomationAttributes(BassTrack.Description);

            foreach (var trigger in attributes.TrackFXTriggers)
            {
                Wave.RemoveMarker("TS" + attributes.TrackFXTriggers.IndexOf(trigger));
                Wave.RemoveMarker("TE" + attributes.TrackFXTriggers.IndexOf(trigger));
            }

            for (var i = 1; i <= 2000; i++)
            {
                Wave.RemoveMarker("S" + i + "S");
                Wave.RemoveMarker("S" + i + "E");
            }

            Wave.AddMarker("PFI", BassTrack.SamplesToSeconds(BassTrack.PreFadeInStart));
            Wave.AddMarker("FIS", BassTrack.SamplesToSeconds(BassTrack.FadeInStart));
            Wave.AddMarker("FIE", BassTrack.SamplesToSeconds(BassTrack.FadeInEnd));
            Wave.AddMarker("FOS", BassTrack.SamplesToSeconds(BassTrack.FadeOutStart));
            Wave.AddMarker("FOE", BassTrack.SamplesToSeconds(BassTrack.FadeOutEnd));

            if (BassTrack.HasSkipSection)
            {
                Wave.AddMarker("SKS", BassTrack.SamplesToSeconds(BassTrack.SkipStart));
                Wave.AddMarker("SKE", BassTrack.SamplesToSeconds(BassTrack.SkipEnd));
            }

            if (TrackSamples != null)
            {
                for (var i = 1; i <= TrackSamples.Count; i++)
                {
                    var trackSample = TrackSamples[i - 1];

                    if (trackSample.Start == 0 && trackSample.Length == 0)
                    {
                        continue;
                    }

                    Wave.AddMarker("S" + i + "S", trackSample.Start);
                    Wave.AddMarker("S" + i + "E", trackSample.Start + trackSample.Length);
                }
            }

            if (!ShowTrackFx)
            {
                return;
            }

            foreach (var trackFx in attributes.TrackFXTriggers)
            {
                Wave.AddMarker("TS" + attributes.TrackFXTriggers.IndexOf(trackFx), trackFx.Start);
                Wave.AddMarker("TE" + attributes.TrackFXTriggers.IndexOf(trackFx), trackFx.Start + trackFx.Length);
            }
        }