Add Jukebox Mode (#930)
* Add jukebox mode Songs can now be played without singing, e.g. as a break filler at parties. - New Jukebox button in the main menu next to Sing and Party, locked without a profile like both of them - Choose all songs, a category or a playlist, random or in order, and optionally only a part of each song (medley part, 30, 60 or 90 seconds) - Video in full screen, lyrics without notes and a short song info whenever a new song starts - Control bar with previous, pause, next, skip intro, audio mode (normal or instrumental), shuffle, repeat, lyrics on/off, queue and "Sing now" - Queue with search: Enter puts a song next, Enter again plays it right away, songs can also be removed and reordered - The queue adapts its size to the free space above the lyrics or the control bar - Control bar and queue fade out after a few seconds without input and come back with the next key press or mouse move - Works with keyboard, mouse and gamepad - Smooth transition between songs, the next song is loaded in advance - "Sing now" starts the current song with the player selection and returns to the jukebox afterwards - The logo in the main menu is now centered - New LyricsIcon and QueueRow textures in all Vocaluxe 2024 skins * Fix SonarCloud issues
This commit is contained in:
1 parent
bc4d2cf169
commit
522003a25f
27 files changed
+3612
-19
No files matched your search
@@ -141,11 +141,38 @@ namespace VocaluxeLib.Utils.Player
|
||||
throw new ArgumentNullException("song");
|
||||
}
|
||||
|
||||
Load(song, song.GetMP3(), true, position, autoplay);
|
||||
}
|
||||
|
||||
public void Load(CSong song, string audioFile, bool loadVideo, float position = 0f, bool autoplay = false)
|
||||
{
|
||||
if (song == null)
|
||||
{
|
||||
throw new ArgumentNullException("song");
|
||||
}
|
||||
|
||||
lock (_lock)
|
||||
{
|
||||
Load(song.GetMP3(), position, autoplay);
|
||||
Load(audioFile, position, autoplay);
|
||||
_Song = song;
|
||||
_LoadVideo();
|
||||
if (loadVideo)
|
||||
{
|
||||
_LoadVideo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void SetPosition(float position)
|
||||
{
|
||||
lock (_lock)
|
||||
{
|
||||
Position = position;
|
||||
var video = _Video;
|
||||
var song = _Song;
|
||||
if (video != null && !video.IsClosed() && song != null)
|
||||
{
|
||||
CBase.Video?.Skip(video, position, song.VideoGap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user