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. } }