Exemplo n.º 1
0
        public MixItemViewModel(
            IMessenger messenger, 
            IMixItem mixItem,
            PlayPauseTrackCommand playPauseCommand,
            IMix mix,
            MixViewModel mixViewModel) : base(messenger)
        {
            this.mix = mix;
            this.mixViewModel = mixViewModel;
            if (messenger == null) throw new ArgumentNullException("messenger");
            if (mixItem == null) throw new ArgumentNullException("mixItem");
            if (playPauseCommand == null) throw new ArgumentNullException("playPauseCommand");
            if (mix == null) throw new ArgumentNullException("mix");
            if (mixViewModel == null) throw new ArgumentNullException("mixViewModel");
            MixItem = mixItem;
            PlayPauseCommand = playPauseCommand;
            messenger.Register<TransitionChangedEvent>(this, OnTransitionChanged);
            messenger.Register<PlaybackSpeedAdjustedEvent>(this, OnPlaybackSpeedAdjusted);
            messenger.Register<TrackUpdatedEvent>(this, OnTrackUpdated);

            messenger.Register<MixLockedEvent>(this, _ => RaisePropertyChanged(() => IsPitchFaderEnabled));
            messenger.Register<MixUnlockedEvent>(this, _ => RaisePropertyChanged(() => IsPitchFaderEnabled));

            // Required for play/pause status
            messenger.Register<PlayerPlayingEvent>(this, _ => RaisePropertyChanged(() => Track));
            messenger.Register<PlayerStoppedEvent>(this, _ => RaisePropertyChanged(() => Track));
            messenger.Register<ConfigSavedEvent>(this, _ => RaisePropertyChanged(() => ActualKey));
        }
Exemplo n.º 2
0
        public IEnumerable<Tuple<Track, Transition>> GetRecommendations(IMixItem mixItem)
        {
            if (mixItem == null) throw new ArgumentNullException("mixItem");

            return tracks
                .Values
                .Except(new[] {mixItem.Track}) // don't recommend itself!
                .Select(t => Tuple.Create(t, GetTransition(mixItem, t)))
                .Where(t => t.Item2 != null);
        }
Exemplo n.º 3
0
        static JsonMixItem ToJsonItem(IMixItem item)
        {
            return new JsonMixItem
                       {

                           Id = item.Track.Id,
                           Artist = item.Track.Artist,
                           OriginalBpm = item.Track.OriginalBpm,
                           Duration = item.Track.Duration,
                           Filename = item.Track.Filename,
                           Genre = item.Track.Genre,
                           OriginalKey = item.Track.OriginalKey,
                           Label = item.Track.Label,
                           Title = item.Track.Title,
                           Year = item.Track.Year,
                           PlaybackSpeed = item.PlaybackSpeed.Speed
                       };
        }
Exemplo n.º 4
0
        public AutoMixingContext(
            IEnumerable<IMixItem> tracksToMix,
            IMixItem preceedingTrack = null,
            IMixItem followingTrack = null)
        {
            if (tracksToMix == null) throw new ArgumentNullException("tracksToMix");

            if (preceedingTrack != null && preceedingTrack.IsUnknownKeyOrBpm)
                throw new ArgumentException("Boundary track cannot have an unknown key or BPM. Please specify null as the starting track instead and try again.", "preceedingTrack");

            if (followingTrack != null && followingTrack.IsUnknownKeyOrBpm)
                throw new ArgumentException("Boundary track cannot have an unknown key or BPM. Please specify null as the starting track instead and try again.", "followingTrack");

            if (!tracksToMix.Any())
                throw new ArgumentException("Must provide at least one track to mix.", "tracksToMix");

            PreceedingTrack = preceedingTrack;
            TracksToMix = tracksToMix;
            FollowingTrack = followingTrack;
        }
 public MixItemViewModel CreateFor(IMix mix, IMixItem item, MixViewModel mixViewModel)
 {
     return new MixItemViewModel(messenger, item, playPauseCommand, mix, mixViewModel);
 }
 public TransitionChangedEvent(IMixItem mixItem)
 {
     if (mixItem == null) throw new ArgumentNullException("mixItem");
     MixItem = mixItem;
 }
Exemplo n.º 7
0
 public TrackAddedToMixEvent(IMixItem item, int insertIndex)
 {
     if (item == null) throw new ArgumentNullException("item");
     Item = item;
     InsertIndex = insertIndex;
 }
 public PlaybackSpeedAdjustedEvent(IMixItem item)
 {
     if (item == null) throw new ArgumentNullException("item");
     MixItem = item;
 }
Exemplo n.º 9
0
 Transition GetTransition(IMixItem mixItem, Track track)
 {
     return transitionDetector.GetTransitionBetween(mixItem.PlaybackSpeed,
                                                    track.GetDefaultPlaybackSpeed());
 }
 void IgnoreIfUnknownKeyOrBpm(ref IMixItem track)
 {
     if (track != null && track.IsUnknownKeyOrBpm)
         track = null;
 }
 public TrackRemovedFromMixEvent(IMixItem item, int index)
 {
     if (item == null) throw new ArgumentNullException("item");
     Item = item;
     Index = index;
 }