Exemplo n.º 1
0
        private async void Initialize(string filePath)
        {
            Workspace.Instance.SetStatus(TaskStatusType.Loading, $"Loading a file... ({filePath})"); // Set status.

            // Load file.
            string loadedFilePath = await FileLoadAsync(filePath);

            try
            {
                if (loadedFilePath == null)
                {
                    OnClose();
                    return;
                }
                else
                {
                    // Initialize AudioPlayback and Visualizations.
                    _visualizations        = ReflectionHelper.CreateAllInstancesOf <IVisualizationPlugin>().ToList();
                    _selectedVisualization = _visualizations.FirstOrDefault();

                    _audioPlayback = new AudioPlayback();
                    _audioPlayback.MaximumCalculated += OnAudioGraphMaximumCalculated;
                    _audioPlayback.FftCalculated     += OnAudioGraphFftCalculated;

                    string extension = Path.GetExtension(filePath).ToLower();

                    if (extension == ".ogg" || extension == ".rpgmvo" || extension == ".ogg_")
                    {
                        _audioPlayback.Load(loadedFilePath, true); // Load audio file using Ogg Vorbis wave reader.
                    }
                    else
                    {
                        _audioPlayback.Load(loadedFilePath);
                    }

                    // Initialize track bar.
                    _trackBarTimer          = new Timer();
                    _trackBarTimer.Interval = 500;
                    _trackBarTimer.Elapsed += new ElapsedEventHandler(OnTrackBarTimerElapsed);

                    _trackBarMaximumValue = _audioPlayback.GetTotalTime();

                    TimeSpan current = TimeSpan.Zero;
                    _trackBarString = $"{current.ToString(@"hh\:mm\:ss")} / {_trackBarMaximumValue.ToString(@"hh\:mm\:ss")}";

                    // Load file properties.
                    _fileProperties = new FileProperties(filePath);
                }
            }
            catch (Exception ex)
            {
                Workspace.Instance.Report.AddReportWithIdentifier($"{ex.Message}\r\n{ex.StackTrace}", ReportType.Warning);
            }
            finally
            {
                Workspace.Instance.SetStatus(TaskStatusType.Completed, $"Completed."); // Set status.
            }
        }