UltraStar-Deluxe / USDX

The free and open source karaoke singing game UltraStar Deluxe, inspired by Sony SingStarâ„¢
https://usdx.eu
GNU General Public License v2.0
846 stars 161 forks source link

add karaoke mode via #INSTRUMENTALS or #KARAOKE tag, key to toggle karaoke mode is K while playing. #850

Open dgruss opened 4 months ago

dgruss commented 4 months ago

add karaoke mode via #INSTRUMENTALS or #KARAOKE tag, key to toggle karaoke mode is K while playing.

dgruss commented 4 months ago

I was not sure what counts on that page as it also lists

INSTRUMENTALS: Artist - Title of the song [INSTR].mp3

dgruss commented 4 months ago

changed it to #INSTRUMENTAL only @bohning, config is reset, language - the help is not translated for any language, so I'd keep that as is for now

dgruss commented 3 months ago

anything still to do here?

bohning commented 3 months ago

Not from my side. I think @barbeque-squared hasn't had time to review and merge it.

dgruss commented 3 months ago

actually found one more subtle bug while testing this a bit more (mp3 tag after karaoke tag overwrote the karaoke tag), fixed with this commit

dgruss commented 3 months ago

and another one found while playing 😇

bohning commented 2 months ago

So this toggles the use of the normal audio (#MP3) and the instrumental version (#INSTRUMENTAL), right? I just learned that Melody Mania has implemented a slider where you can set the amount of vocals from 0 % (pure karaoke) to 100 % (pure sing-along. Of course that's quite a bit harder to implement, but that would be awesome. image

barbeque-squared commented 2 months ago

I was testing this branch but could not get it to work. I suspect it's due to a merge conflict from some other change, git is giving me

$ git apply 850.diff
error: patch failed: src/screens/UScreenEditSub.pas:4933
error: src/screens/UScreenEditSub.pas: patch does not apply

But before that (probably 46cf3f1) it did apply the diff but gave me EAccessViolation when starting a song. It just shows me the video or the background image for a fraction of a second, then crashes. Without this patch it works fine, so I've ruled out config.ini at this point.

what bohning mentions should probably be more of a stretch goal, though shorter-time we can do what we do with A: just cycle through a few predefined presets (ie full mp3, full karaoke, 50/50) (but as a follow-up PR please)?

dgruss commented 2 months ago

That's quite odd. I've used this one on several occasions already over multiple hours without a crash. Not sure what might cause this? I can try to see what it does on the most recent version.

DeinAlptraum commented 2 months ago

The crash was my fault, fix PR is open in #874. This only occurs after ./autogen.shing again Edit: this was a different problem that may occur when starting the game, not when starting a song. Sorry for the confusion

barbeque-squared commented 2 months ago

Took me a while to remember ./configure --enable-debug so it prints stacktraces instead of only "Access violation", but with that I get this output:

Exception class: EAccessViolation
Message: Access violation
  $00000000004E2C4E  APPEND,  line 796 of base/UPath.pas
  $0000000000519C93  ONSHOWFINISH,  line 865 of screens/controllers/UScreenSingController.pas
  $000000000045FF0F  DRAW,  line 448 of menu/UDisplay.pas
  $000000000047A3D2  MAINLOOP,  line 344 of base/UMain.pas
  $000000000047A166  MAIN,  line 269 of base/UMain.pas
  $0000000000407487  main,  line 414 of ultrastardx.dpr

This only happens on songs that DO NOT have the #INSTRUMENTAL tag! Songs that have it are indeed fine, but it's an optional tag. 865 is the AudioPlayback.Open call. I'm assuming CurrentSong.Karaoke is nil there (which it should be if the song doesn't have it!) but it's basically getting passed a folder now or something.

dgruss commented 2 months ago

Ah, yes that's possible. I don't have any in my library without the tag. I'll fix that this week.

Cheers, Daniel

On 21.07.2024 19:25, barbeque-squared wrote:

Took me a while to remember |./configure --enable-debug| so it prints stacktraces instead of only "Access violation", but with that I get this output:

|Exception class: EAccessViolation Message: Access violation $00000000004E2C4E APPEND, line 796 of base/UPath.pas $0000000000519C93 ONSHOWFINISH, line 865 of screens/controllers/UScreenSingController.pas $000000000045FF0F DRAW, line 448 of menu/UDisplay.pas $000000000047A3D2 MAINLOOP, line 344 of base/UMain.pas $000000000047A166 MAIN, line 269 of base/UMain.pas $0000000000407487 main, line 414 of ultrastardx.dpr |

This only happens on songs that DO NOT have the #INSTRUMENTAL tag! Songs that have it are indeed fine, but it's an optional tag. 865 is the AudioPlayback.Open call. I'm assuming CurrentSong.Karaoke is |nil| there (which it should be if the song doesn't have it!) but it's basically getting passed a folder now or something.

— Reply to this email directly, view it on GitHub https://github.com/UltraStar-Deluxe/USDX/pull/850#issuecomment-2241719233, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAN2M6UQAVGZO2RZW76ECXLZNPVHBAVCNFSM6AAAAABH7VDESGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBRG4YTSMRTGM. You are receiving this because you authored the thread.Message ID: @.***>

dgruss commented 2 months ago

alright. fixed the bug, rebased to new master and squashed the commits