- VocaluxeSongServer: ASP.NET Core server that scans an UltraStar library and
serves the song list (ETag), single files (Range) and zip bundles; optional
API key; Dockerfile and Gitea workflow for git.disi.dev/projects/vocaluxe-song-server
- Game: config section SongServer (Url, ApiKey). At song loading, the song text
files are mirrored into a local cache that is loaded like a song folder;
without connection the last library is used
- VocaluxeLib: CSongFiles hook for all song file access; media are downloaded on
demand (covers in the background, preview audio, everything before singing
with progress in the sing screen)
- Tests for scanner, API and downloads (incl. resume); AGENTS.md for the fork
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* 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
* 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
Read R (RAP) and G (Golden RAP) notes as Freestyle notes currently. Final implementation needed!
As mentioned in #479 this fix the song loading of songs, which contains R or G notes. But Vocaluxe still don't support these kind of notes, so the final implementation is needed. If someone wants to work on it, feel free.
NO functional changes. If you have problems merging your changes, merge/rebase on previous commit then merge this. Conflicts can easily be resolved (take yours if in doubt)
After that merge next commits