51 Commits
Author SHA1 Message Date
McSchneidar cf2fa796e2 .NET10 Migration (#946)
Runtime and build
- Move all projects to .NET 10 with SDK-style project files and a shared
  Directory.Build.props (WIN/LINUX, x86/x64 defines)
- Load managed and unmanaged dependencies from libs/managed and
  libs/unmanaged through assembly and native library resolvers
- Compile party modes with Roslyn instead of CodeDom
- Update AppVeyor to the .NET 10 SDK and dotnet test
- Download the FFmpeg and gstreamer runtimes from the dependencies
  repository during the build
- Remove the VC++ 2015-2022 runtime check, no dependency needs it anymore

Graphics and windowing
- Replace the Direct3D 9 renderer with Direct3D 11 (Vortice)
- Pace Direct3D 11 frames with a frame latency waitable swap chain
- Move window, input and message boxes to SDL3
- Replace System.Drawing with SkiaSharp and WinForms with SDL3 and a
  software renderer

Video and audio
- Replace Acinerella with FFmpeg 8.1.3 (FFmpeg.AutoGen)
- Add hardware accelerated video decoding (D3D11VA, DXVA2, VideoToolbox,
  VAAPI, VDPAU) with software fallback
- Convert YUV video frames to RGB on the GPU in Direct3D 11 and OpenGL
- Add the video options HardwareDecoding, GpuColorConversion,
  DecoderThreads and VideoDownscaleResolution
- Update OpenAL to OpenTK 4 and NAudio recording to WasapiRecorder

Fixes
- Fix the song preview start and shorten the reporter buttons
- Fix a crash when opening the highscore without a selected song
- Use the options slide highlight in the party mode screens to avoid
  brightness flicker on VRR displays
- Disable GameInput in the x86 build, SDL3 crashes in GameInputCreate
  on 32-bit systems with the GameInput runtime installed
- Fix a truncation warning in PitchTracker
2026-11-02 08:11:20 +01:00
McSchneidarandFlorian Ostertag 336d08040e New Webserver and WebApp (#942)
* Replace the WCF webserver with an ASP.NET Core webserver (VocaluxeWeb)

- New project VocaluxeWeb: ASP.NET Core 2.3 (Kestrel) on .NET Framework 4.8.1, HTTP or HTTPS
  with a self-signed certificate, REST API (/api/v1) with Swagger, live events (Server-Sent Events)
- Access to the game only through IVocaluxeRemote; requests run on the main thread once per frame
- Sessions with roles (guest, player, admin) and configurable permissions, PINs hashed with PBKDF2
- Queue as a playlist with requesters and singers, fair order (one song per person and round)
- Admin: settings, server status, logged-in devices, activate/deactivate and delete profiles
- Profile pictures: own photo or one of the Vocaluxe avatars
- Game: WebApp queue screen (song options, playlist group) to start the next song with the chosen
  singers, return to it after singing, warning when the webserver is off, remote keyboard
- Old WCF server, WebserverInitalConfig and URL reservations removed; libraries moved to libs/managed
- Unit tests for PIN hashing, settings and permissions, queue order and device names
- AppVeyor: Visual Studio 2022 image and Node.js 24 (the build compiles the WebApp)
- Documentation in VocaluxeWeb/README.md

* New WebApp (Vue 3, TypeScript, Vite) replacing the old jQuery Mobile website

- Login with profile and PIN, create profiles
- Songs with search, filters, sorting and 30 second previews
- Queue: add songs with game mode, audio and singers, edit, reorder, start in the game
- Playlists: create, edit, add to the queue
- Now playing with live updates, remote control and keyboard
- Players: own profile with picture (photo or Vocaluxe avatar), roles for admins
- Admin settings: permissions, server status, devices, profiles
- Help page, responsive layout for phones, tablets and desktops, light and dark mode
- Texts in WebApp/src/locales/en.json, translated with Transifex
- Old website and PhoneGap config removed

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-26 05:40:11 +01:00
McSchneidar 73a24ad930 Vortice (#940) 2026-10-22 19:41:30 +02:00
McSchneidarandFlorian Ostertag 6601f41aac Redesign option screens (#931)
* Redesign and improve option screens

- Open the options directly from the main menu with the focus on the navigation, all option screens share a navigation with all categories, song folders and credits
- Navigation and settings use rounded backgrounds like the party mode selection, the current category and setting are highlighted with the selection color of the skin
- Categories can be clicked or switched with Tab, Escape moves the focus to the navigation and leaves the options from there, choosing a category moves the focus to its first setting
- Place the action buttons (delay test, adjust screen, server address, add folder) and the webcam preview inside the settings background
- Center the restart and microphone warnings below the settings background
- Move song folder management to its own screen with a list of all folders, add and remove buttons, a scrollbar and a restart warning
- Add the tile caption option to the game options (only selectable when the song menu is set to tiles)
- Remove the old options selection screen (ScreenOptions)
- Fix configured song folders being ignored when the first entry of the config is empty
- Show the folder dialog in front of the game window
- Fix background music source being overwritten by the karaoke effect setting
- Keep the webcam configuration when no webcam is connected
- Warn when several players are assigned to the same record channel
- Show a warning when no microphone is found
- Remove cover sizes 32 and 64 and keep unknown cover sizes until changed
- Play warning sounds again each time an option screen is shown
- Ignore key pressed events in graphics and server options
- Keep the background music volume in sync in the sound options

* Fix SonarCloud issues

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-21 09:12:04 +02:00
McSchneidar 522003a25f 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
2026-10-21 08:49:50 +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
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 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 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
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
Florian Ostertag d3a49bc69e Merge branch 'develop' into feature/642-read-tags 2024-01-01 12:09:06 +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
Gary Kertopermono 612c18326d Merge branch 'develop' into rap 2021-06-28 10:44:22 +02:00
Stefan dc98e13da5 Added PillarBox EAspect 2020-02-18 10:12:08 +01:00
Stefan 0f504a1015 Added Automatic at EAspect 2020-01-12 21:33:23 +01:00
Gary Kertopermono efead3615c Added basic support for rap notes and golden rap notes 2019-04-08 15:16:00 +02:00
Florian Küpper 52c58bd7a7 Updated and added some translation strings 2017-09-12 10:10:59 +02:00
Florian Küpper 06657b9346 Added generic party mode song selection screen 2017-09-11 22:27:47 +02:00
Jiiniasu d413765178 Add Highscore Style Setting
Add ability to select whether the highscore screen should display all
scores or only the best score for each player, difficulty and
duet-track.
2016-09-04 18:32:24 +02:00
Jiiniasu 1826959cb9 Make lyric styles translatable 2016-03-26 20:16:22 +01:00
Florian Küpper 45d0091161 Merge pull request #2 from flokuep/komadoc-develop
Komadoc develop
2015-12-06 09:25:35 +01:00
lukeIam e48d719662 Added support for gamepads 2015-02-25 19:24:15 +01:00
Florian Küpper 247bff132b Added BackgroundPreview as music source 2015-01-16 17:29:22 +01:00
Stephan Sundermann fadfb497e8 Webcam: Remove OpenCV configs 2014-12-23 14:55:17 +01:00
Flamefire 20b2e735ec Merge branch 'develop' of git://github.com/KoMaDoctors/Vocaluxe into SongListView
Conflicts:
	Vocaluxe/Base/CConfig.cs
	VocaluxeLib/Menu/SongMenu/CSongMenu.cs
2014-12-09 21:49:33 +01:00
Flamefire 26484ad137 Fix blank screen issue
Also fix some other bugs and improvements (easier party modes, volume fixes, new fields for screens to control volume and popups)
2014-11-27 21:47:02 +01:00
Flamefire 8ae1ff3e57 Move enum to enums 2014-10-23 17:06:44 +02:00
Flamefire 8c3a50c18f More improvements for objectinteractions
Also removes highlight textures and colors
2014-10-22 13:46:34 +02:00
mephasor 17a2801492 Changed the xml definition of list view to use the already existing one. 2014-10-16 15:17:20 -03:00
mephasor ef111fde2f Added a list style song menu which can be activated in the game menu screen 2014-10-16 13:57:34 -03:00
Flamefire c156fa69ab Merge branch 'develop' of git://github.com/flokuep/Vocaluxe into Better_Graphics_Handling
Conflicts:
	Vocaluxe/COSFunctions.cs
	VocaluxeLib/CHelper.cs
	VocaluxeLib/Menu/CStatic.cs
	VocaluxeLib/Structs.cs
2014-09-25 18:49:18 +02:00
Florian Küpper e915e72ce6 Added to zoom-levels to VideoAspect. Toogle on ScreenSing with 'V', saved to song-text if saving is enabled in config.xml. 2014-09-19 16:15:53 +02:00
Flamefire 46c3353e08 Add better border and alignment handling 2014-09-13 17:44:46 +02:00
Florian Küpper 6dda1a38d0 Added background-music-option: "Only selected song". bg-music is played on name/score/highscore screen with selected song. 2014-08-22 21:22:03 +02:00
Florian Küpper 3612b9244b Added sound- and song-player to VocaluxeLib. Use it for Background-Music. 2014-08-05 10:54:34 +02:00
Flamefire dd6503c911 Removed Gst Wrapper 2014-05-07 19:56:57 +02:00
Flamefire cb328c3209 Remove GStreamer audio (replaced by GStreamer# and outdated)
Also some cleanup
2014-05-06 21:40:13 +02:00
Flamefire eba5deba2b Make CSettings contain only constant values to avoid accidental misuse. Everything changeable is in CConfig 2014-03-19 19:54:55 +01:00
Flamefire e1f8bf4843 Better structure for song sorter and bugfix for "DateAdded" sorting 2014-03-18 02:20:21 +01:00
Flamefire 898819fcf5 Fix code issues (naming, unused stuff) 2014-03-12 09:41:34 +01:00
Florian Küpper 9f6618c77e Added screen for screen-adjustments. 2013-12-22 23:27:52 +01:00
Stephan Sundermann abad5fca23 Added initial gstreamer-sharp audio backend (just a preview) 2013-12-22 01:02:30 +01:00
Florian Küpper 0c807862a8 Patch WebserverFlokuepDevelopTest 2013-12-19 09:02:40 +01:00
Florian Küpper 352b0181fa Changed GuestProfile-option on profiles to UserRole. UserRole could now be set from Vocaluxe. 2013-12-19 08:54:27 +01:00
Florian Küpper ae0e63d193 Added Popup with QR-Codes for easier server-connection and app-download (open with F11) 2013-12-19 08:54:20 +01:00
Flamefire 370964ee99 Fix file headers and indentations 2013-09-20 18:09:32 +02:00
Florian Küpper 6e3d0ab28f Added new sort-option: Date added. 2013-09-02 12:50:41 +02:00
Alexander Eckart ed3047314b finished moving around 2013-05-06 23:18:02 +02:00