Commit Graph
789 Commits
Author SHA1 Message Date
McSchneidar e665e31f4a Improved animations (#907)
* Smoother countdown and new menu and in-game animations

- Countdown digits pop in and fade out each second, with a ring of dots showing the remaining part of the second
- Medley countdown uses a smoothed timer and no longer stutters
- Rating popups scale in from below and drift upwards while fading out
- Player scores pulse briefly at the end of a line
- Pause menu fades and scales in and out
- Buttons and select slides pulse briefly when they get selected
- Shared easing functions and a draw transform for animations

* Retrigger CI
2026-10-17 12:39:18 +02:00
McSchneidarandFlorian Ostertag 602417e773 Add statistics screens (#910)
* Add statistics screens

- New statistics dashboard with four tiles: overview, recently sung, best list per difficulty and players
- Each tile opens a detail screen with longer lists, filters (left/right) and scrolling
- Detail lists show ranks for places 1-3, avatars, bars and alternating row backgrounds
- Players can be ranked by most songs or by best average
- Overview details: most sung songs, genres, languages and songs never sung
- Navigation help at the bottom of both screens
- New Statistics button in the main menu
- English and German texts

* Address code analysis findings in statistics screens

* Retrigger CI

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-17 05:17:36 +02:00
McSchneidarandFlorian Ostertag d03224f29b Audio mode for each playlist entry (#909)
- Playlist entries get a second select slide for the audio mode (normal, instrumental, vocals, karaoke)
- The slide is only shown if the song has an instrumental file, otherwise normal is used
- The audio mode is saved in the playlist file and used for each round
- Sing, score and highscore screens use the audio mode of the current round
- Song options select the audio mode by mode instead of position
- ScreenSong theme version 15

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-17 04:46:28 +02:00
McSchneidarandFlorian Ostertag 611591be1d Fix overlapping EHeaderFlags values (#902)
Instrumental (5) and Vocals (6) overlapped with Title|MP3 and
Artist|MP3 in the [Flags] enum. A song file with #INSTRUMENTAL or
#VOCALS therefore passed the mandatory-tag checks even when #TITLE,
#ARTIST or #MP3 were missing, leaving Audio empty.

Give each flag its own bit (Instrumental = 64, Vocals = 128).

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-16 07:33:40 +02:00
McSchneidarandFlorian Ostertag df412b6d33 Two small fixes (#904)
* Fix index check in CSelectSlide.RenameValue

The check used && instead of ||. An index cannot be negative and out
of range at the same time, so the check never returned early and an
invalid index caused an ArgumentOutOfRangeException.

* Allow textures to be disposed more than once

CTextureBase.Dispose threw ObjectDisposedException on a second call.
Dispose must be safe to call multiple times, otherwise freeing a
texture twice crashes the game.

Return early instead. CD3DTexture and COGLTexture also check
IsDisposed first, so a second call does not free the GPU texture
again. This matters for OpenGL, where the texture name may already
belong to another texture.

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-16 05:53:10 +02:00
McSchneidar d48426b04d Fixes for progress bar and applause sounds (#906)
* Control score sounds from UpdateGame instead of the thread pool

_PlayProgressBarSound started a Task that waited for the progress bar
duration and then closed whatever stream was stored in
_ProgressBarSoundStream. When switching rounds on the score screen
before that time had passed, an old task closed the progress bar
sound of the new round too early and played the applause of the
previous round, while the applause of the new round never played.

Remember when the progress bar sound was started and check it in
UpdateGame on the main thread instead. Starting a new progress bar
sound and leaving the screen now also stop a running applause.

* Sync progress bar sound with the score bar animation

The sound duration was computed from the points (10,000 points =
5 seconds), while the bar animation duration depends on the bar size
in the theme and only starts when the bar is first drawn. Both only
matched approximately and drifted apart with other themes.

Add CProgressBar.AnimatesMovement and CProgressBar.IsAnimating. The
score screen now stops the progress bar sound and starts the applause
as soon as no visible score bar is animating anymore. If the theme
has no movement animation, the previous duration is used.

* Make stream id allocation in CPlaybackBase thread-safe

Load assigned stream ids with _NextId++ outside of the lock. Load is
also called from other threads, so two streams could get the same id
and a later Close or Play could hit the wrong stream.

Use Interlocked.Increment instead. Ids still start at 0.

* Do not play the progress bar sound for 0 points

With 0 points the score bars do not move, so the progress bar sound
started and stopped again right away, which could be heard as a short
click. Do not start it at all if the highest score is 0.
2026-10-16 05:21:34 +02:00
McSchneidar e7fc959def Fix possible crashes and glitches when playing song previews (#898)
* Add AutoplayPending

* Add locks

* Add Base Update

* Add Base Update

* Add locks
2026-10-06 05:20:14 +02:00
Quentin Bray 1bba340cf8 Better handle multiple tags respecting US format (#878)
* Better handle multiple tags respecting US format

Based on unversioned, V1 & V2 of US formats : https://github.com/UltraStar-Deluxe/format
Should address #623
Creator now takes multiple values
Maintain backward compatibility

* Update file path properties to match US formats
2026-06-23 21:04:59 +02:00
Quentin Bray cae67eb4ab Remove ReloadSongMethod (#879)
Seems to not be usefull since song is cloned is others game mode
Improve performance by stop reloading TXT file
Didn't see any difference with and without instead of just song load perfs imrpovement
Maybe that I miss a point ?
2026-06-22 20:41:53 +02:00
Quentin Bray 6ffa63b923 Apply R# clean-up for reliability (#877)
* Apply R# clean-up for reliability

- Migrate to NUnit4 Assert.That
- Update dependencise versions
- Fix LangVersion to 9.0 (until net core migration)
- Reformat code
- Apply 'var' style (easier for refactoring)
- Remove redundant parentheses
- Add braces on every condition blocks (1 line)
- Uses new null checking patterns
- Uses AutoProperties when possible
- Uses string scalar type instead of class
- Clean usings
- Add .orig files in git ignore
- Rename some properties to respect defined conventions and US format definition
	- ID -> Id
	- BPM -> Bpm
	- Finish -> End

* Update R# settings according to the clean-up made
2026-06-22 19:52:06 +02:00
Edi316 718f284c82 Small improvement to List View (#873)
* Improve ListView

* Improve ListView
2026-05-07 19:32:01 +02:00
Edi316 5af73e8c00 Expand Options Screen (#856)
* Remove Graphics Options (new screen)

* Remove Graphics Options (new screen)

* Remove Graphics Options (new screen)

* Remove Graphics Options (new screen)

* Screen Version 4

* Screen Version 1

* Create Screen

* Create Screen

* Create Screen

* Add Graphics Screen

* Add Graphics

* Add Graphics

* Add Graphics

* Add Graphics

* Remove Graphics Options (new screen)

* Remove Graphics Options (new screen)

* Remove Graphics Options (new screen)

* Create Screen

* Add Graphics

* Add OptionsGraphics Screen

* Remove Graphics Options (new screen)

* Add OptionsServer

* Add creenOptionsServer

* Add ScreenOptionsServer

* Create Screen

* Add Server options

* Add Server options

* Add Screen

* Version 1

* Add Server Options

* Add Server Options

* Add Server Options

* Add Screen

* Add Screen

* Add Screen

* Add Server Options

* Add Screen

* Remove Graphics Options (new screen)

* Add Screen

* Add Screen

* Add Server Options

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Screen

* Add Server options

* Add SongFolder

* Add Song Folder

* Update Options

* Add Song Folder

* Remove Song Folder & Server Buttons

* Remove Song Folder & Server Buttons

* Version 6

* Remove Song Folder & Server Buttons

* Add Song Folder

* Add Song Folder

* Add Song Folder

* Add Song Folder

* Add Song Folder

* Add Song Folder

* Add Song Folder

* Version 4

* Remove Song Folder & Server Buttons

* Add Song Folder

* Add Song Folder

* Create Screen

* Create Screen

* Create Screen
2026-04-26 20:50:43 +02:00
Edi316 76d26239bd Grid overview for profile screen (#858)
* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Version 4

* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Fix Out of Bounds Index & Player Selector Cursor

* Add Profile Grid

* Fix Out of Bounds Index & Player Selector Cursor
2026-04-26 20:50:15 +02:00
Edi316 038c5165e1 Fix missing player profiles in Challenge Mode (#865)
* Fix Missing Profiles

* Fix Missing Profiles
2026-04-26 20:49:00 +02:00
Edi316 6deb5acbc8 Remember selected position for each folder/tab (#859)
* Remember Last Tab Position

* Remember Last Tab Position

* Remember Last Tab Position

* Remember Last Tab Position

* Remember Last Tab Position
2026-04-02 10:26:23 +02:00
McSchneidar a46c7d5f09 Fix x64 build creation (#845)
* Update Serilog Version

* Update Serilog Version
2026-03-16 20:16:24 +01:00
Edi316 ff26565143 Update to .NET Framework 4.8.1 (#834)
* Update to .NET Framework 4.8.1

* Update to .NET Framework 4.8.1

* Update to .NET Framework 4.8.1

* Update to .NET Framework 4.8.1

* Update to .NET Framework 4.8.1

* Update to .NET Framework 4.8.1

* Update to .NET Framework 4.8.1

* Update to .NET Framework 4.8.1

* Update to .NET Framework 4.8.1

* Revert change
2026-01-27 21:23:56 +01:00
Edi316 12d06d8111 Instrumental & Vocals Icons (#833)
* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icons

* Screen Version 14

* Screen Version 14

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon

* Add Instrumental & Vocals Icon
2026-01-26 14:53:59 +01:00
MSchneidar 4c984d9f7c Two small fixes (#832)
* Fix for CNameSelection

* Fix for CPlaybackBase
2026-01-25 07:03:58 +01:00
Metin Celik 9fbcc077ff Modernize NuGet dependencies and migrate to PackageReference (#823)
* Add .vscode to .gitignore

* Update copyright year

* Update Newtonsoft.Json package to version 13.0.4

* Migrate NuGet to PackageReference

* Replace vocaluxe.dependencies.sqlite with Microsoft.Data.Sqlite

* Update Serilog package references to latest versions

* Fix typo
2025-12-29 14:09:03 +01:00
Jeff Dolan 1e19e2928c Adding a regex based solution for enumerating files looking for multiple extensions at same time (#811)
* Adding a regex based solution for enumerating files looking for multiple extensions at same time. This should give better performance than enumerating over the same files multiple times looking for different patterns

* Adding a timeout value for regex per security recommendation

* Store the regex directly so we don't have to keep constructing it, also adding some logging and handling for exceptions when enumerating files
2025-11-03 17:11:31 +01:00
Edi316 53e82284ac Gameplay support for #VOCALS (#788)
* Add Vocals Volume

* ScreenVersion 13

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add HasVocals

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add AudioMode Vocals

* Headers for Song Options

* Add AudioMode Vocals

* Screen Version 13

* Headers for Song Options

* Headers for Song Options

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add AudioMode Vocals

* Add Audio Mode Vocals
2025-05-09 06:46:58 +02:00
Edi316andFlorian Ostertag f6e56f70b9 Elevating sound for Progress Bar on Score screen (#772)
* Speed Fix

* Add Elevating Sound

* Add Elevating Sound

* Add Elevating Sound

* Add Elevating Sound

* Add Elevating Sound

* Add Elevating Sound

* Add Elevating Sound

* Update Applause Sound

* Update Applause Sound

* Update Applause Sound

* Update Applause Sound

* Add Elevating Sound

* Add Elevating Sound

* Add Elevating Sound

* Speed Fix

* Add Elevating Sound

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2025-04-21 07:54:29 +02:00
Edi316 b971e3ba7e Default tone for Rap notes (#771) 2025-04-21 07:36:31 +02:00
360c6ae2fa Feature/rating pop up (#760)
* WIP

* WIP

* Add text

* Cleanup

* More Cleanup

* Update Changelog

* Fix layout

---------

Co-authored-by: Florian Schulze <flori.schulze@yahoo.de>
Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2025-03-25 06:26:37 +01:00
Edi316 480cdd9864 Option to skip Player Selection Screen (#762)
* Add Player Select Option

* Add Player Select Option

* Add Player Select Option

* Add Player Select Option

* Theme System Version 9

* Theme System Version 9

* Theme System Version 9

* Add Player Select Option

* Add Player Select Option

* Theme System Version 9

* Theme System Version 9

* Theme System Version 9

* Add Player Select Option
2025-03-24 20:26:45 +01:00
Edi316andFlorian Ostertag 18d6dba40e Audio Mode for Instrumental & Karaoke (#749)
* Add AudioMode

* Update Theme System Version

* Update Theme System Version

* Version 11

* Version 8

* Update Theme System Version

* Add AudioMode

* Update Theme System Version

* Add AudioMode

* Add AudioMode

* Add AudioMode

* Add AudioMode

* Add AudioMode

* No effect for Instrumental

* Instrumental Check

* Add HasInstrumental Check

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2025-01-09 06:10:07 +01:00
Jiiniasu 68129ec451 Fix tone helper drawn on wrong octave (#746)
* Add GetCurrentBeat()

* Clamp tone helper to the octave of target note

Prevent tone helper from being off by an octave
2025-01-06 06:38:38 +01:00
Rap-Voca 8dde27426c Preparations for Song Format 1.1.0 (#734)
* Add missing Song Format 1.1.0 Tags

* Add Instrumental & Vocals

* Add Instrumental & Vocals
2024-11-24 07:14:23 +01:00
Florian Ostertag 4fd752c3cc fix: wrong size for bg video (#729) 2024-11-19 08:28:56 +01:00
GRaff844 4b253c2c8d Reset Animation (#726) 2024-11-14 20:54:53 +01:00
GRaff844 160fbac07c Fix Animation for Progress Bar (#725) 2024-11-13 06:01:21 +01:00
Rap-VocaandFlorian Ostertag 451b97acbf Basic Rap Note Support (#708)
* Differentiate between Rap and Freestyle Notes

* Render Rap Notes

* Treat Rap notes as own notes

* Update CLyric.cs

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2024-10-11 19:42:36 +02:00
Rap-Voca 958121a252 Support for #AUDIO (#709) 2024-10-11 15:35:31 +02:00
Jiiniasu 8023b61a41 Fix delayed perfect line effect (#704)
* Fix delayed perfect line effect

* Address Sonarcloud issues for CNoteBars.cs

* Fix out of range bug caused by removing last()
2024-08-18 14:53:25 +02:00
Florian Ostertag d3a49bc69e Merge branch 'develop' into feature/642-read-tags 2024-01-01 12:09:06 +01:00
Florian Ostertag ec74136a78 Merge branch 'develop' into rap 2023-12-31 11:14:10 +01:00
Florian Ostertagandtransifex-integration[bot] 990707d678 Transifex integration (#655)
* Add: Transifex file and renamed lang files

* Translate Vocaluxe/Website/locales/en.json in tr

100% translated source file: 'Vocaluxe/Website/locales/en.json'
on 'tr'.

* Translate Vocaluxe/Website/locales/en.json in es

100% translated source file: 'Vocaluxe/Website/locales/en.json'
on 'es'.

* Rename all language files to match transifex.

* Manual sync of translations

* Another manual sync of translations

* Adjust pr branch name

* Translate Output/Languages/en.xml in pt

97% of minimum 90% translated source file: 'Output/Languages/en.xml'
on 'pt'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate Output/Languages/en.xml in cs

96% of minimum 90% translated source file: 'Output/Languages/en.xml'
on 'cs'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format

* Translate Output/Languages/en.xml in it

100% translated source file: 'Output/Languages/en.xml'
on 'it'.

* Translate Output/Languages/en.xml in ru

100% translated source file: 'Output/Languages/en.xml'
on 'ru'.

* Translate Output/Languages/en.xml in sv

100% translated source file: 'Output/Languages/en.xml'
on 'sv'.

* Translate Output/Languages/en.xml in de

100% translated source file: 'Output/Languages/en.xml'
on 'de'.

* Translate Output/Languages/en.xml in fr

100% translated source file: 'Output/Languages/en.xml'
on 'fr'.

* Translate Vocaluxe/Website/locales/en.json in hu

100% translated source file: 'Vocaluxe/Website/locales/en.json'
on 'hu'.

* Translate Vocaluxe/Website/locales/en.json in ru

100% translated source file: 'Vocaluxe/Website/locales/en.json'
on 'ru'.

* Fix: Unescape String during xml reading

* Translate Output/Languages/en.xml in ru

100% translated source file: 'Output/Languages/en.xml'
on 'ru'.

* Translate Output/Languages/en.xml in ru

100% translated source file: 'Output/Languages/en.xml'
on 'ru'.

* Translate Output/Languages/en.xml in ru

100% translated source file: 'Output/Languages/en.xml'
on 'ru'.

* Translate Output/Languages/en.xml in ru

100% translated source file: 'Output/Languages/en.xml'
on 'ru'.

* Fix: Seperate handling of unescaping

* Fix: Typo

* Fix: Typo

---------

Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
2023-12-28 20:58:13 +01:00
Florian Ostertag ebba72af1e #642: Fix merge conflict 2023-11-23 14:22:35 +01:00
Florian Ostertag db55aa0eb4 Merge branch 'feature/642-tags' into feature/642-read-tags 2023-11-23 14:18:54 +01:00
Florian Ostertag 90a0d77586 #642: Implemented reading of tags 2023-11-23 14:06:08 +01:00
Florian Ostertag 8bd55b3ef2 Fix: Syntax error 2023-03-30 11:18:34 +02:00
Florian Ostertag f550a22740 Change: Default encoding to UTF-8 without bom 2023-03-30 11:03:04 +02:00
BuildTools b7b736a49d Merge branch 'develop' into rap 2022-11-14 23:26:27 +01:00
Stefan 819ce3bb57 Implementing more CRecord stuff
Needed for equalizers in the VocaluxeLib namespace.
2021-10-18 21:50:03 +02:00
Gary Kertopermono 95f74f5b37 Fixed: Merge added double case for rap notes 2021-06-28 10:51:17 +02:00
Gary Kertopermono 612c18326d Merge branch 'develop' into rap 2021-06-28 10:44:22 +02:00
Gary Kertopermono daec506445 Rap notes will use the rap notes graphics 2021-06-18 10:58:55 +02:00
Gary Kertopermono 7781cd8fa9 Added the rap icon 2021-06-15 15:01:09 +02:00
Stefan 552f6ca257 SongMenuList - Show song title first if title letter sorting is active (#531)
Change for #531
2020-09-13 09:08:01 +02:00