filoe / cscore

An advanced audio library, written in C#. Provides tons of features. From playing/recording audio to decoding/encoding audio streams/files to processing audio data in realtime (e.g. applying custom effects during playback, create visualizations,...). The possibilities are nearly unlimited.
Other
2.14k stars 450 forks source link

FadeStrategy does not fade after WasapiOut has been resumed. #442

Open agaertner opened 3 years ago

agaertner commented 3 years ago

LinearFadeStrategy does not fade after I pause and resume WasapiOut.

I pause like this:

        public void Fade(float? from, float to, TimeSpan duration)
        {
            _fadeInOut?.FadeStrategy.StartFading(from, MathHelper.Clamp(to, 0, 1), duration);
        }
        private void PauseOnFadeFinished(object o, EventArgs e)
        {
            if ((o as LinearFadeStrategy)?.CurrentVolume > 0.01f)
                return;
            _fadeInOut.FadeStrategy.FadingFinished -= PauseOnFadeFinished;

            _outputDevice.Pause();
        }
        public void Pause()
        {
            _paused = true;
            if (!_initialized) return;
            _fadeInOut.FadeStrategy.FadingFinished += PauseOnFadeFinished;
            Fade(1, 0, TimeSpan.FromSeconds(_fadeSeconds));
        }

and resume like this:

        public void Resume()
        {
            _paused = false;
            if (!_initialized) return;
            _outputDevice.Resume();
            Fade(0, 1, TimeSpan.FromSeconds(_fadeSeconds));
        }
filoe commented 3 years ago

Could you provide a small sample project to reproduce the issue? Thanks!