public AudioCanvasViewModel(ILiveDescribePlayer mediaPlayer, ProjectManager projectManager,
            UndoRedoManager undoRedoManager)
        {
            _projectManager = projectManager;
            _undoRedoManager = undoRedoManager;
            _player = mediaPlayer;

            //TODO: Just refer to MediaPlayer?
            mediaPlayer.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName.Equals("CurrentState"))
                    CurrentVideoState = mediaPlayer.CurrentState;
            };

            _projectManager.ProjectLoaded += (sender, args) => Waveform = args.Value.Waveform;

            GetNewSpaceTime = new RelayCommand(
                canExecute: () => CurrentVideoState != LiveDescribeVideoStates.VideoNotLoaded,
                execute: () =>
                {
                    var s = new Space();
                    OnRequestSpaceTime(s);
                    projectManager.AddSpaceAndTrackForUndo(s);
                });
        }
        public AudioCanvasViewModel(ILiveDescribePlayer mediaPlayer, ProjectManager projectManager)
        {
            _projectManager = projectManager;

            AudioCanvasMouseDownCommand = new RelayCommand<MouseEventArgs>(AudioCanvasMouseDown, param => true);
            AudioCanvasMouseRightButtonDownCommand = new RelayCommand<MouseEventArgs>(AudioCanvasMouseRightButtonDown, param => true);
            mediaPlayer.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName.Equals("CurrentState"))
                    CurrentVideoState = mediaPlayer.CurrentState;
            };

            GetNewSpaceTime = new RelayCommand(
            canExecute: () => CurrentVideoState != LiveDescribeVideoStates.VideoNotLoaded,
            execute: () =>
            {
                var s = new Space();
                OnRequestSpaceTime(s);
                projectManager.AddSpaceAndTrackForUndo(s);
            });
        }