コード例 #1
0
 public void Remove(SoundFileViewModel soundFileViewModel)
 {
     if (soundFileViewModel != null)
     {
         AudioFileManager.CloseFile(soundFileViewModel.FullName);
         SoundFiles.Remove(soundFileViewModel);
     }
 }
コード例 #2
0
 public void Dispose()
 {
     try
     {
         AudioFileManager.CloseAll();
     }
     catch (Exception)
     {
     }
 }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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);
                    }
                }
            }
        }
コード例 #6
0
 protected override void OnExit(object sender, EventArgs e)
 {
     AudioFileManager.CloseAll();
 }
コード例 #7
0
    /// <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);
    }