Ejemplo n.º 1
0
 /// <summary>
 ///   Plays a <see cref="CachedSound" /> instance.
 /// </summary>
 /// <param name="sound">The sound to play.</param>
 /// <param name="additionalOnPlaybackEndedHandler">
 ///   An event handler raised when the playback ends.
 /// </param>
 public void PlaySound(CachedSound sound, EventHandler additionalOnPlaybackEndedHandler)
 {
     //if (!playingSoundFileNames.Contains(sound.Name))
     //{
     CachedSoundSampleProvider provider = new CachedSoundSampleProvider(sound);
     playingSoundFileNames.Add(sound.Name);
     provider.PlaybackEndedEvent += (sender, e) => playingSoundFileNames.Remove(sound.Name);
     provider.PlaybackEndedEvent += additionalOnPlaybackEndedHandler;
     AddMixerInput(provider);
     //}
 }
Ejemplo n.º 2
0
        /// <summary>
        ///   Plays a <see cref="CachedSound" /> instance that fades in and/or out.
        /// </summary>
        /// <param name="sound">The sound to play.</param>
        /// <param name="additionalOnPlaybackEndedHandler">
        ///   An event handler raised when the playback ends.
        /// </param>
        /// <param name="beginFadeInAction">
        ///   An action called when the fade-in begins.
        /// </param>
        /// <param name="beginFadeOutAction">
        ///   An action called when the fade-out begins.
        /// </param>
        public void PlayFadeableSound(CachedSound sound, EventHandler additionalOnPlaybackEndedHandler, out Action<double> beginFadeInAction, out Action<double> beginFadeOutAction)
        {
            if (!playingSoundFileNames.Contains(sound.Name))
            {
                CachedSoundSampleProvider provider = new CachedSoundSampleProvider(sound);
                playingSoundFileNames.Add(sound.Name);
                provider.PlaybackEndedEvent += (sender, e) => playingSoundFileNames.Remove(sound.Name);
                provider.PlaybackEndedEvent += additionalOnPlaybackEndedHandler;

                FadeInFadeOutSampleProvider fadeSampleProvider = new FadeInFadeOutSampleProvider(provider);
                beginFadeInAction = fadeSampleProvider.BeginFadeIn;
                beginFadeOutAction = fadeSampleProvider.BeginFadeOut;

                AddMixerInput(fadeSampleProvider);
            }
            else
            {
                beginFadeInAction = beginFadeOutAction = (value) => { };
            }
        }