diff --git a/Vocaluxe/Base/CBackgroundMusic.cs b/Vocaluxe/Base/CBackgroundMusic.cs index 51014f58..954692e0 100644 --- a/Vocaluxe/Base/CBackgroundMusic.cs +++ b/Vocaluxe/Base/CBackgroundMusic.cs @@ -333,6 +333,12 @@ namespace Vocaluxe.Base Play(); } + public static void StopPreview() + { + _PreviewPlayer.Close(); + _PlaysPreview = false; + } + /// /// (Re-)Starts the _CurrentPlaylistElement /// diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs index 9e724f2f..c0629d36 100644 --- a/Vocaluxe/Base/CMain.cs +++ b/Vocaluxe/Base/CMain.cs @@ -395,6 +395,11 @@ namespace Vocaluxe.Base CBackgroundMusic.PlayPreview(start); } + public void StopPreview() + { + CBackgroundMusic.StopPreview(); + } + public CTexture GetVideoTexture() { return CBackgroundMusic.GetVideoTexture(); diff --git a/VocaluxeLib/IBasic.cs b/VocaluxeLib/IBasic.cs index e59634d7..699a4152 100644 --- a/VocaluxeLib/IBasic.cs +++ b/VocaluxeLib/IBasic.cs @@ -135,6 +135,7 @@ namespace VocaluxeLib void LoadPreview(CSong song, float start = 0f); void PlayPreview(float start = -1f); + void StopPreview(); } diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs index e2ad5ae6..eaeee46b 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs @@ -500,7 +500,9 @@ namespace VocaluxeLib.Menu.SongMenu private void _PlaySong(int nr) { - _ResetPreview(); + _PreviewNrInternal = -1; + + CBase.BackgroundMusic.StopPreview(); CSong song = CBase.Songs.GetVisibleSong(nr); if (song == null) diff --git a/VocaluxeLib/Songs/CSong.cs b/VocaluxeLib/Songs/CSong.cs index 26d1d6fd..665beac4 100644 --- a/VocaluxeLib/Songs/CSong.cs +++ b/VocaluxeLib/Songs/CSong.cs @@ -458,7 +458,10 @@ namespace VocaluxeLib.Songs if (Preview.Source == EDataSource.None) { if (Medley.Source != EDataSource.None) + { Preview.StartTime = CBase.Game.GetTimeFromBeats(Medley.StartBeat, BPM); + Preview.Source = EDataSource.Calculated; + } } } diff --git a/VocaluxeLib/Songs/CSongLoader.cs b/VocaluxeLib/Songs/CSongLoader.cs index 0e06ab45..cd4cf834 100644 --- a/VocaluxeLib/Songs/CSongLoader.cs +++ b/VocaluxeLib/Songs/CSongLoader.cs @@ -416,7 +416,7 @@ namespace VocaluxeLib.Songs { //PreviewStart is not set or <=0 _Song.Preview.StartTime = (headerFlags & EHeaderFlags.MedleyStartBeat) != 0 ? CBase.Game.GetTimeFromBeats(_Song.Medley.StartBeat, _Song.BPM) : 0f; - _Song.Preview.Source = EDataSource.Calculated; + _Song.Preview.Source = _Song.Preview.StartTime == 0 ? EDataSource.None : EDataSource.Calculated; } if ((headerFlags & EHeaderFlags.MedleyStartBeat) != 0 && (headerFlags & EHeaderFlags.MedleyEndBeat) != 0)