13 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
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
Florian Küpper 336376a1af Fixed starting next bg-music-track. 2015-02-05 19:57:12 +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 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 d208f9d7b9 Reformatting
Also adds license headers
2014-10-19 18:51:14 +02:00
Florian Küpper 46544aee82 Fix repeating of bg-music. 2014-08-24 17:38:37 +02:00
Florian Küpper 6c4fe011bf Some improvements. 2014-08-24 12:42:05 +02:00
Florian Küpper b30efb1913 some fixes. 2014-08-22 21:01:24 +02:00
Florian Küpper 04c2b85e2b Close stream when finished (*-player) 2014-08-09 17:16:51 +02:00
Florian Küpper 4c01396e46 Added preview-player which is used for playing preview in song-menu. 2014-08-09 17:12:27 +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