Esempio n. 1
0
        private Track GetClosestTrack(Track currentTrack, Direction direction)
        {
            if (currentTrack == null)
            {
                return(null);
            }

            var track = this.Library.GetTracks().OrderBy(t => BassHelper.AbsoluteBPMPercentChange(currentTrack.EndBPM, t.StartBPM)).FirstOrDefault();

            if (track != null)
            {
                return(track);
            }

            throw new NotImplementedException();
        }
Esempio n. 2
0
        private Track GetRandomWorkingTrack()
        {
            var excludeTracks = new List <Track>();

            excludeTracks.Add(this.CurrentTrack);
            excludeTracks.AddRange(_history);

            var preferredTracks = this.MixLibrary.GetPreferredTracks(this.CurrentTrack);
            var forbiddenTracks = this.MixLibrary.GetForbiddenTracks(this.CurrentTrack);

            excludeTracks.AddRange(forbiddenTracks);
            excludeTracks.AddRange(preferredTracks);

            Track randomTrack = null;

            if (this.WorkingTrack != null && this.CurrentTrack != this.WorkingTrack && this.CurrentTrack != null)
            {
                randomTrack = this.WorkingTrack;
            }
            else if (this.WorkingTrack != null)
            {
                var currentTrack = this.CurrentTrack;
                if (currentTrack == null)
                {
                    currentTrack = this.WorkingTrack;
                }

                randomTrack = BassHelper.GetTracksInBPMRange(currentTrack.EndBPM, 5M, this.Library.GetTracks())
                              .Union(BassHelper.GetTracksInEndBPMRange(currentTrack.StartBPM, 5M, this.Library.GetTracks()))
                              .Distinct()
                              .Except(excludeTracks)
                              .OrderBy(t => BassHelper.AbsoluteBPMPercentChange(currentTrack.EndBPM, t.StartBPM))
                              .FirstOrDefault();
            }
            if (randomTrack == null)
            {
                randomTrack = this.WorkingTrack;
            }

            return(randomTrack);
        }
Esempio n. 3
0
        /// <summary>
        /// Gets the mix level for mixing track 1 into track 1
        /// </summary>
        /// <param name="track1">The track 1.</param>
        /// <param name="track2">The track 2.</param>
        /// <returns>A mix level from 0 to 5</returns>
        public int GetMixLevel(Track track1, Track track2)
        {
            if (track1 == null || track2 == null)
            {
                return(0);
            }

            var mixTracks = GetMixTracks(track1);
            var mixTrack  = mixTracks.GetToTracks()
                            .Where(mt => mt.TrackDescription == track2.Description)
                            .FirstOrDefault();

            if (mixTrack != null)
            {
                return(mixTrack.MixLevel);
            }

            if (BassHelper.AbsoluteBPMPercentChange(track1.EndBPM, track2.StartBPM) > 5M)
            {
                return(0);
            }
            return(1);
        }