From c64d7c5bab5747f5c15562823ff163442dc9607a Mon Sep 17 00:00:00 2001 From: Flamefire Date: Mon, 22 Dec 2014 12:22:22 +0100 Subject: [PATCH] Fade also volume during screen fading --- Vocaluxe/Base/CGraphics.cs | 9 ++++++--- Vocaluxe/Screens/CScreenSing.cs | 5 ++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs index 5d4ea1c6..df3bcddf 100644 --- a/Vocaluxe/Base/CGraphics.cs +++ b/Vocaluxe/Base/CGraphics.cs @@ -228,12 +228,12 @@ namespace Vocaluxe.Base if (_Fading != null) { + Debug.Assert(NextScreen != null); bool finished; float newAlpha = _Fading.GetValue(out finished); if (!finished) { - GlobalAlpha = 1f; ZOffset = CSettings.ZFar / 2; _DrawScreen(CurrentScreen); @@ -242,6 +242,9 @@ namespace Vocaluxe.Base _DrawScreen(NextScreen); GlobalAlpha = 1f; + int oldVol = CConfig.GetVolumeByType(CurrentScreen.CurrentMusicType); + int newVol = CConfig.GetVolumeByType(NextScreen.CurrentMusicType); + CSound.SetGlobalVolume((int)((newVol - oldVol) * newAlpha + oldVol)); } else { @@ -305,8 +308,8 @@ namespace Vocaluxe.Base { if (screen == null) throw new ArgumentNullException("screen"); - Debug.Assert(NextScreen==null || NextScreen!=screen, "Don't fade to currently fading screen!"); - if(screen==NextScreen) + Debug.Assert(NextScreen == null || NextScreen != screen, "Don't fade to currently fading screen!"); + if (screen == NextScreen) return; // Make sure the last screen change is done _FinishScreenFading(); diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs index 24584cd1..3d487675 100644 --- a/Vocaluxe/Screens/CScreenSing.cs +++ b/Vocaluxe/Screens/CScreenSing.cs @@ -96,8 +96,7 @@ namespace Vocaluxe.Screens private int _CurrentBeat; private int _CurrentStream = -1; private float _Length = -1f; - //private int _NextStream = -1; - private const int _Volume = 100; + private CVideoStream _CurrentVideo; private EAspect _VideoAspect = EAspect.Crop; private CTextureRef _CurrentWebcamFrameTexture; @@ -528,7 +527,7 @@ namespace Vocaluxe.Screens _Texts[_TextSongName].Text = songname; _CurrentStream = CSound.Load(song.GetMP3(), false, true); - CSound.SetStreamVolume(_CurrentStream, _Volume); + CSound.SetStreamVolume(_CurrentStream, 100); CSound.SetPosition(_CurrentStream, song.Start); _CurrentTime = song.Start; _FinishTime = song.Finish;