public void Remove(SoundFileViewModel soundFileViewModel) { if (soundFileViewModel != null) { AudioFileManager.CloseFile(soundFileViewModel.FullName); SoundFiles.Remove(soundFileViewModel); } }
public void Dispose() { try { AudioFileManager.CloseAll(); } catch (Exception) { } }
public async void Start() { foreach (var file in SoundFiles) { file.ThrownException = null; if (file.IsSelected) { file.Status = Status.Pending; } else { file.Status = Status.Skipped; } } IsRunning = true; var overmodulatedFiles = await AudioFileManager.CheckForOvermodulation( ProgressChanged, BaseVolume, SoundFiles.Where(x => x.IsSelected).Select(x => x.FullName), SoundFiles.Where(x => x.IsSelectedBaseVolumeFile).Select(x => x.FullName) ); foreach (var file in overmodulatedFiles) { var soundFile = SoundFiles.First(x => x.FullName == file); if (soundFile != null) { soundFile.Status = Status.Warning; soundFile.IsSelected = false; } } await AudioFileManager.AdjustFiles( ProgressChanged, BaseVolume, SoundFiles.Where(x => x.IsSelected).Select(x => x.FullName), SoundFiles.Where(x => x.IsSelectedBaseVolumeFile).Select(x => x.FullName), FindFileOutputPath, FileSucceeded, FileFailed); IsRunning = false; foreach (var file in SoundFiles) { file.IsSelected = false; file.IsSelectedBaseVolumeFile = false; } }
static string GetFilter() { var formatInfos = AudioFileManager.GetFormatInfo(); var patterns = new List <string>(); var filterOptions = new List <string>(); foreach (var formatInfo in formatInfos) { var pattern = $"*{formatInfo.Extension}"; patterns.Add($"*{formatInfo.Extension}"); filterOptions.Add($"{formatInfo.Format} Files|{pattern}"); } return(new StringBuilder("All Audio Files|").AppendJoin(";", patterns).Append('|') .AppendJoin('|', filterOptions).ToString()); }
public void Drop(IDropInfo dropInfo) { var files = dropDataToFileList(dropInfo); if (!IsRunning && files.Count > 0) { var fileViewModels = files .Select(file => Path.GetFullPath(file)) .Where(fullName => !SoundFiles.Any(x => x.FullName.Equals(fullName, StringComparison.OrdinalIgnoreCase))) .Select(fullName => new SoundFileViewModel(fullName)) .ToList(); foreach (var fileViewModel in fileViewModels) { fileViewModel.IsSelected = true; fileViewModel.IsSelectedBaseVolumeFile = true; if (AudioFileManager.OpenFile(fileViewModel.FullName)) { SoundFiles.Add(fileViewModel); } } } }
protected override void OnExit(object sender, EventArgs e) { AudioFileManager.CloseAll(); }
/// <summary> /// The page load function /// </summary> /// <param name="sender">The sender object</param> /// <param name="e">The event args</param> protected void Page_Load(object sender, EventArgs e) { // // The route stuff is set up in Global.asax // string encryptedPlayerRequest = Page.RouteData.Values["encryptedId"] as string; //string soundId = string.Empty; PlayerRequestInfo requestInfo = new PlayerRequestInfo(encryptedPlayerRequest); // // Let's validate the ID and, while we're at it, grab some sound info from the DB // if (requestInfo.IsValid) // Functions.IsNumeric(soundId))re { theSound = DataManager.GetSoundDetails(requestInfo.SoundId); } else { // // Todo: put this into the event log or something? // string problem = requestInfo.InvalidReason; } if (theSound != null) { // // Interesting option for loading the sound data. Put it inline with the element. // Pros: mobile browser doesn't have to go to the server again to get the sound data. // Cons: the page will seem more sluggish to load. // // SoundSrcData = string.Format("data:{0};base64,{1}", MimeTypeFromFileName(theSound.FileName), theSound.Data); AudioFileManager files = new AudioFileManager(encryptedPlayerRequest, HttpContext.Current.Server.MapPath(Config.CacheSoundsDirectory)); files.CreateTempFiles(); if (files.HaveAtLeastOneFile()) { // // Tell the browser to load the data from this url. Pass the encrypted sound id to keep people from being able to easily // go through all the sounds. // SoundSrcDataMp3 = string.Format("{0}/handlers/soundbuilder.ashx?soundid={1}&type={2}", Config.ServerName, encryptedPlayerRequest, (int)PlayerRequestInfo.AudioFileTypeCode.Mp3); mp3LinkPlaceholder.Visible = files.HaveFileOfType(PlayerRequestInfo.AudioFileTypeCode.Mp3); SoundSrcDataWav = string.Format("{0}/handlers/soundbuilder.ashx?soundid={1}&type={2}", Config.ServerName, encryptedPlayerRequest, (int)PlayerRequestInfo.AudioFileTypeCode.Wav); wavLinkPlaceholder.Visible = files.HaveFileOfType(PlayerRequestInfo.AudioFileTypeCode.Wav); if (requestInfo.Type == PlayerRequestInfo.PlayerDisplayType.AllDetails) { // // Let's show all the sound details // SoundDetailsPlaceholder.Visible = true; JavascriptPlaceholder.Visible = true; Title = string.Format("{0} - Otamata Soundplayer", theSound.Name); if (theSound.HasIcon) { IconImage = string.Format("{0}/handlers/getsoundicon.ashx?soundid={1}", Config.ServerName, encryptedPlayerRequest); } else { IconImage = string.Format("{0}/images/default-icon1.png", Config.ServerName); } } else if (requestInfo.Type == PlayerRequestInfo.PlayerDisplayType.NoInfoButWithOptionToShowInfo) { // // Not showing info, but the user can click a link to more info // ViewSoundDetailsLinkPlaceholder.Visible = true; LinkToFullDetails = PlayerRequestInfo.SoundPlayerUrl(requestInfo.SoundId, requestInfo.Version, PlayerRequestInfo.PlayerDisplayType.AllDetails); } else { // // Default - no details // } /* * * Browser HTML5+WAV HTML5+MP3 Embed+MP3 Embed+WAV * Firefox N N Y Y * IE N Y N N * Safari Mac Y Y Y (weird) Y (fine) * Safari iOS N Y Y (new plyr) N (err msg) * Android N Y N N * */ if (CanPlayHTML5Sounds) { PlayerControlsMultiview.ActiveViewIndex = (int)PlayerControlsMultiviewEnum.HTML5Player; } else { if (files.HaveFileOfType(PlayerRequestInfo.AudioFileTypeCode.Mp3)) { EmbedSoundFileUrl = SoundSrcDataMp3; EmbedMimeType = "audio/mp3"; } else if (files.HaveFileOfType(PlayerRequestInfo.AudioFileTypeCode.Wav)) { EmbedSoundFileUrl = SoundSrcDataWav; EmbedMimeType = "audio/wav"; } PlayerControlsMultiview.ActiveViewIndex = (int)PlayerControlsMultiviewEnum.EmbedPlayer; } PlayerMultiview.ActiveViewIndex = (int)PlayerMultiviewEnum.ValidSound; } // HaveAtLeastOnefile else { PlayerMultiview.ActiveViewIndex = (int)PlayerMultiviewEnum.InvalidSound; } } else { PlayerMultiview.ActiveViewIndex = (int)PlayerMultiviewEnum.InvalidSound; } AboutOtamataLink = Functions.CombineUrlElements(Config.ServerName, string.Empty); }