92 Commits
Author SHA1 Message Date
McSchneidarandFlorian Ostertag 4ee6689ff4 Seamless audio loops and own credits music (#945)
Loops
- Looping is now done by the playback backends instead of restarting
  the stream with Stop/Play. Loop can be toggled at runtime (SetLoop in
  ISound/IPlayback/IAudioStream), so the repeat button keeps working.
- GStreamer: gapless loops via playbin's about-to-finish signal.
- PortAudio/OpenAL: the decoder is reopened at the end of the file
  (Acinerella's seek does not reset FFmpeg after EOF) while the buffered
  data keeps playing, so the loop has no gap. The reported position wraps
  correctly.

Credits screen
- New event music player in CBackgroundMusic that replaces the current
  background music and resumes it afterwards.
- The credits screen loops Sounds/CreditsMusic.mp3
  ("Atmosphere Calm Background" by lvymusic, Pixabay Content License).
- As the credits screen was touched anyway, its content was updated as
  well.

Fixes for PortAudio/OpenAL playback found on the way
- Acinerella delivers 32 bit float samples for mp3, so every file was
  rejected with "Unsupported BitDepth". Float samples are converted to
  16 bit now.
- Acinerella reports a missing frame (EAGAIN) like the end of the file,
  so decoding is retried a few times before treating it as the end.
- OpenAL stopped after half a second because the decoder thread was
  never woken up to refill its buffer. A source that ran out of data is
  restarted as well.

Part of #677

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
2026-10-27 09:43:02 +01: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 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 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
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
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
Stefan 819ce3bb57 Implementing more CRecord stuff
Needed for equalizers in the VocaluxeLib namespace.
2021-10-18 21:50:03 +02:00
Stefan ce5dabc849 Add possibility to get playlist ids 2020-02-08 10:27:49 +01:00
lukeIam c907ec0f44 Refactor logging 2018-01-16 11:57:15 +01:00
lukeIam b930588556 Introduced serilog in Vocaluxe 2018-01-13 18:33:33 +01:00
Florian Küpper d140c2311a Merge branch 'develop' of github.com:Vocaluxe/Vocaluxe into player-guid 2017-11-23 16:35:16 +01:00
Jiiniasu 2fbb600272 Code move and delay made configurable
Moved code to CSongMenuFramework and made autoplay-delay configurable in
config.xml as suggested in code review.
2017-11-08 21:24:11 +01:00
Jiiniasu c31fdb7839 Make option to autoplay previews on song selection 2017-11-06 19:33:03 +01:00
Florian Küpper 86dc259c17 Merge branch 'develop' into player-guid 2017-11-05 23:32:30 +01:00
Jiiniasu 53d22b1082 Merge remote-tracking branch 'refs/remotes/Vocaluxe/develop' into Multimonitor
Modify CProgressBar to transfer properties to code-generated progressbars that does not exist in the screen xml
2017-09-23 15:28:25 +02:00
Florian Küpper 5c6267d397 Merge branch 'playlist-filter' of github.com:derivator/Vocaluxe into develop 2017-09-11 12:36:01 +02:00
Florian Küpper c5bfd46865 Removed outdated xml loading stuff 2017-09-02 18:00:06 +02:00
Jiiniasu bf5205b080 Add Inital Multi-Monitor Support
Initial support for multimonitor setups.
Support for up to 6 monitors with 1-6 players on screen 1 and 0-6
players on screen 2-6.
Currently the max amount of players is unchanged and participating
players are spread across all available screens.

Screens are extended horizontally. For fullscreen use with multiple
physical monitors one will have to use some kind of
surround-configuration. (AMD Eyefinity/nVidia Surround/etc.)
2016-12-18 18:51:51 +01:00
derivator 6799768e35 Make CScreenSong, CSongFilter able to show only songs that are in
a specified playlist
2016-10-21 22:46:20 +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
Florian Küpper e3497641dd Use GUID instead of int for player-ids; ID is now unique and saved to player.xml-file 2015-12-23 14:23:55 +01:00
Florian Küpper 45d0091161 Merge pull request #2 from flokuep/komadoc-develop
Komadoc develop
2015-12-06 09:25:35 +01:00
Flamefire df82690cd0 Refactor background music to fix some possible issues and smooth out transitions 2014-12-26 22:39:44 +01:00
Flamefire 903c4fc182 Remove proxy songmenu class 2014-12-10 21:45:27 +01:00
Flamefire 84694ccbe0 Allow ingame changing of songmenu 2014-12-10 21:11:59 +01:00
Flamefire 4a63180600 Fix a case where no songs will be available
Also some cleaner structure (no double storing of values)
2014-12-07 23:45:16 +01:00
Flamefire 4a78dd4b31 Fix missing song length and wrong volumes (int=0-100, float=0-1)
Also fade in preview music
2014-11-27 23:06:01 +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 33618b4c97 Use extra class for xml exception
Add handler class for xml errors
Fix testcases
2014-11-17 19:27:43 +01:00
Flamefire 61a0d4fdf1 Serialize Profiles
All writings now done through new serializer
2014-10-29 01:29:02 +01:00
Flamefire fe07a2f926 Generate Covers for songs 2014-10-23 17:05:57 +02:00
Flamefire 2f99cd2560 Make CSingNotes also implement Draw()
Also a bit refactoring
2014-10-22 22:00:25 +02:00
Flamefire defb2ca6c7 Rewrite Theme Engine 2014-10-08 22:29:02 +02:00
Flamefire 9e5011374f Rename CTheme to CThemes 2014-10-05 17:27:45 +02:00
Flamefire 355d7b4b5f Merge branch 'develop' into Better_Graphics_Handling
Conflicts:
	VocaluxeLib/Menu/CNameSelection.cs
	VocaluxeLib/Menu/CPlaylist.cs
	VocaluxeLib/Menu/CText.cs
	VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs
	VocaluxeLib/Structs.cs
	VocaluxeLib/VocaluxeLib.csproj
	VocaluxeLib/Xml/CXMLReader.cs
2014-10-05 15:09:52 +02:00
Flamefire 6a3bf7b2c0 Introduce CVideoStream for easier video handling (already includes a texture, important for common usage of streams) 2014-10-05 14:20:57 +02:00
Flamefire 89e528c2a6 Factor out CSkin class
Replace usages of GetColor and remove GetColor(..., skinIndex,...)
2014-10-05 13:36:11 +02:00
Flamefire 31863a7788 Speed up slideshow loading 2014-10-04 11:15:37 +02:00
Flamefire 2e25bf6610 Merge branch 'Better_Graphics_Handling' into develop
Conflicts:
	Vocaluxe/Base/Fonts/CFontStyle.cs
2014-10-02 20:46:04 +02:00
Flamefire 19f81943d6 Introduce RenderRect for easy access to the full screen rect 2014-09-26 15:05:19 +02:00
Flamefire dd1231ad34 Merge branch 'Better_Graphics_Handling' into Automatic_Covers
Conflicts:
	Vocaluxe/Base/CCover.cs
	Vocaluxe/Base/CGraphics.cs
	Vocaluxe/Base/Fonts/CFontStyle.cs
	Vocaluxe/Base/Fonts/CGlyph.cs
	VocaluxeLib/Menu/CText.cs
	VocaluxeLib/Structs.cs
2014-09-25 19:43:21 +02: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
Flamefire 926dda7350 Remove DrawLines (was not working in D3D and can actually be replaced by narrow DrawRects) 2014-09-24 18:54:58 +02:00
Flamefire db4096d57f Improve background drawing
Don't convert to RectangleF for rescaling
Add function for colored fitting of a texture in bounds
Add DrawLine in IDrawing
2014-09-24 16:36:18 +02:00
Flamefire f5f1a91481 Remove bounds from DrawTextureReflection because it was never used 2014-09-22 15:55:31 +02:00
Florian Küpper c07441bc63 Load complete theme-date with de-serialization. 2014-09-18 15:35:52 +02:00
Flamefire 7f8e974fe1 Rename CTexture to CTextureRef to reflect it is only a reference 2014-09-13 17:51:55 +02:00
Flamefire 76ededf9f3 Unify as much of D3D and OpenGL as possible 2014-09-11 21:58:30 +02:00
Flamefire 445d50bcaf Merge branch 'develop' into Font_Rewrite 2014-09-07 10:49:21 +02:00
Flamefire a5ddeeee95 Merge branch 'develop' of git://github.com/flokuep/Vocaluxe into develop 2014-09-07 10:37:37 +02:00