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
863 stars 162 forks source link

[Feature Request] Karaoke mode on/off #146

Open fredmontier opened 8 years ago

fredmontier commented 8 years ago

Would be nice to create a simple karaoke mode. When the player press one key (K for instance, before or during the music playing back) it would switch to "karaoke mode" removing scores and bars from the music screen remaining only the lyrics bar.

Or it could be set a whole mode game playing at the configurations. I think that a simple toggle like visualization on music display would be enough. The screen should be pretty much like the jukebox mode.

bohning commented 8 years ago

The CMD version offered the key "N" to incrementally hide individual elements, I think on first key stroke, the points were hidden, second stroke the notes, third key stroke the lyrics, fourth stroke back to displaying all elements. I found this quite useful.

fredmontier commented 8 years ago

What is/Where is CMD version ?

RattleSN4K3 commented 8 years ago

What's the difference/advantage from/to the Jukebox mode? IMO if a specific feature is misssing, it should be added to the Jukebox mode and not make the general "play" mode a Jukebox-like mode (or at least have the option to do so).

What is/Where is CMD version ?

It was/is an (inofficial) fork/mod by brunzel which is called UltraStar Deluxe CMD Edition as the abbreviation of (challenge, medley and duet).

fredmontier commented 8 years ago

Same reason why there is a jukebox mode: sometimes in a party, people just want to use the program as real karaoke program (instead of a game) without a lot of distracting gizmos poping out on the screen.

I have/known a lot of real karaoke goers and everyone sings one or two times with the score to soon get annoyed by it and only wants to sing with the music. Most of my library every music has a real karaoke version giving a new experience to the karaoke fan. And its a problem on the concept of the game similar to guitar hero, or rockband. The player dont play for real on those games. But karaoke, the singer, sings for real as good as the artist, at least is what he thinks.

And as REAL KARAOKE does not have a vocal on music track and we just want so sing along with the videoclip. Is much more visually pleasant for karaoke performances browse the musics that way instead the jukebox format. In the jukebox mode, everytime you open it it plays the first music. That also should be fixed. I fixed mine already but was the old version World Party.

That solution (pressing N) seems to be very elegant but should exists a real karaoke mode. I don´t know if you enjoy going in karaoke bars but i have been in 3 continents and in a lot of them. And only in japan the singers are crazy for scores but they don´t performe for an audience like in US, UK , Australia, Brazil (where i´m) but in a private room and much smaller crowd. So, like me, using the programa as karaoke program, I like practicing in private and give performances in public to my friends (without distracting scores).

And thanks for the tip. I will take a look and return with something to the Community.

And it was not my intention to post the text that big and bold. Sorry if it looks like i´m shouting.

RattleSN4K3 commented 8 years ago

tl;dr: If in your proposed idea the screen should be pretty much like the jukebox mode, why not using the Jukebox instead? If the Jukebox is missing features, we should optmize/adjust the Jukebox and not adapting distinct features from the Jukebox (to the regular mode). And vice versa.

In case you want to practice, you likely still need the notes bar. Otherwise, you won't see whether you or the lyric itself (the ini) is bad at a given segment/line. So why is either the Jukebox not sufficient enough? ... or the regular modes with the option "Scores on Singing" disabled (config under [Advanced]: SingScores=Off)? That way it will be like a real karaoke program [...] without a lot of distracting gizmos poping out on the screen.

I see the reason in your previous post, but I don't see why you're not using the options you already have. Having in option, to toggle such UI elements on the fly, might work and could be added someday, but in general these are better suited for the Jukebox mode and/or configurable through settings/options before starting a game/party settings. The lyrics and notes bars (and what not) are kind of game relevant (for instance used in party to hinder the game (its difficulty). That's why it is kept for the game mode (yet, who knows).

Also as a workaround, you could use the party mode with the specific plugin selected "Total darkness", "No lyrics", or "Blind mode".

Btw. the key 'K' is currenty used for switching to a karaoke mode which is playing the audio track without the vocal track. It can be triggered (currently only) in the song selection screen (and is still active when playing any song afterwards). This is an experimental feature. It only works for stereo audio and may not even work well for every songs. But it is actually good enough to use it.

fredmontier commented 8 years ago

I like the selective display idea from the CMD version and just implemented in my current project. Adding also the K key to switch between modes. I Studied all the code from the new version and implementations and knew that in the current version is, K, used for voice suppression. I tried and was not convinced by the feature. Did not work well in many tests i´ve done and I do prefer get a real karaoke track from CDGs and make a real song version.

As I said before, and as an user, I also do prefer the interaction on Song Selection. And it is also the preference of the majority of my friends when we use it in a karaoke bar. Maybe it is just a brazilian preference.

Currently my project is moving away from the UltraStar standards and worst, I created new tags and added support to CDG, Videoke, real Karaoke beside the regular game mode. And soon KAR/MIDI. That is the main reason why I need a real karaoke mode.

But I understand you point of view and you´re are right. My needs that are a little drifted from the project.

basisbit commented 8 years ago

As I wrote already previously, please do create a pull request with you current changes. More features usually equals a better game. We just have to figure out how to best do the user interface.

RattleSN4K3 commented 8 years ago

@fredmontier The reason why I asked why you need it, it's not because I want to argue whether your use case is irrelevant to this project, the game or useless as such. The reason of asking is simply, evaluating what has been done, what could be done, what should have deen done, what shouldn't be done or what didn't work at all. It's not that your idea of removing is bad as such, it is just conflicting in some way and additionally redundant to the Jukebox mode. From your idea, I don't see any reason for. But that doesn't mean we shouldn't add it to the project. As you mentioned you implemented it, you likely have valid reasons for that feature. But it is not (fully) portrayed here.

So in short these are my questions about this specific feature.

(please evaluate the feature, answering the questions, without taking known issues into account such as the first song is always played in Jukebox, or the voice suppression isn't good, or support of CDG/KAR/MIDI is limited, ...)

The "Sing" and "Party" modes are generally used as competiton (respectively as game, a way to either have fun singing a song, and eventually compare each other). These modes can be used as "karaoke" (in the old meaning). Jukebox is exactly good for what you portrayed as "sing with the music", "practicing in private" or "give performances in public".

fredmontier commented 8 years ago

Answering in sequence 1- Because there are some musics and occasions that people like to sing along and watch the video, and should be visually clean as possible. I´m talking about using it as a possible "karaoke mode". I´ve been taking the game for a lot of parties and currently using in a karaoke bar. Trust me, people complains about visual distraction and even the size of the lyrics. For home use with a big screen just 3 feet away, it´s fine.

And the timebar (time and progress bar) is not present in Jukebox mode (haven´t seen it in the 1.3.2 either). Is more readable the lyrics with a whiter background against a moving picture. So, the regular song mode is perfect to karaokes. Not the jukebox. I also modified the game to play CDG and Videokes (its just a regular video downloaded from karaoke channels from youtube) and there is no need of any visual elements on those formats. I´m planning extend to show lyrics from KAR/MIDI due to the large amount of musics in those formats. Here, in Brazil, we speak portugueses and is very time consuming to build a library in converting and sincronizing to the original game format. Its gonna take some time. That´s why SingStar IS NOT a big hit here. Due to the lack of musics in portuguese available in SingStar.
2- Vide item 1 3- Vide item 1 4- Don´t know what you mean by that. 5- As a regular karaoke bars and parties goer myself, sing along with the real video and a real karaoke track has been a novelty in my country and I imagine that for legal copyrights reasons is not very common in other places and countries that i came to know. People get really very exciting and is a much more involving experience to the audience and the singer when there is a video playing back. Even more if is the REAL VIDEO to the music. I´ve seen people "bringing the house down" to Bon Jovi, U2 AC/DC and the singer are all full of shit. Buts the crowd responds in a very particular way. Its the future of karaoke.

I´ve seen all the kinds and types of karaokes softwares, midia formats, systems boxs, jukebox (real ones), websites based services, communities and all. The UltraStar(SingStar) interface is very pleasant and is up to the best Japaneses karaoke systems i´ve came across (they play very strange videos in background and some times very annoying and childish, but not the videoclips due to legal specs). IF you never seen one of them, there are tons of softwares and multiplataform devices integrated. Connecting by Wi-fi tablets, smartphone providing the user access to select, preview and queue musics and even to control of lights in the room. UltraStar provides a good start for me to reach this level and I´ve been working in the UltraStar World party for more than a year implementing new features. And now there is this new version that is way better than mine. I have no time to correct mine but give back some twerks i´ve done.

fredmontier commented 8 years ago

And more for your 5º item: I get it that the demographics specs for the SingStar was the teenagers (see the unicorn/pink poney people ...lol). As the rockband and guitar hero are . Sorry but real guitar player don´t give a shit about those games. I play guitar and keyboards and they look very silly to me at the least. With some mods it will be very attractive to the karaoke fanbase that is in general a much older crowd. And most of the time, they like to sing for real, or at least think that can do it. The UltraStar-Vocalux/SingStar format stands as a category of its own and none of the leading softwares works like that. Just make a quick search.

I see a gigantic potential for a lot of things on it.

basisbit commented 7 years ago

@fredmontier any chance to be able to take a look at your code-changes already?

fredmontier commented 7 years ago

Hi my friend

Sure...

As I said before. I´m using the WorldParty Deluxe version. Since the new version only compiles in lazarus/fpc, as I understood and i´m using Delphi7 for UDX WP. I planing migration to your current version only after the new years´s eve, when I will have time to code again for some few days. I finishing also the http server for access the UltraStar music catalog and queue musics for party/karaoke mode. But that will/should change completely the game. And obviously, It´s not practical to just one person take care of selecting (hundreds, thousands) songs, browse musics... while other want to do the same and at the same time. So, in a little local Wi-fi network, they will be able to select their song, put it in a queue and wait for their turn using theirs mobile device. I definitely don´t find useful the current party mode due to reasons explained before.

There are two little caveats: a - I defined additional types of musics as I said before. Although it will not affect using you regular catalog it might seems a little odd in some parts. Depending on the type of music the program put it in karaoke mode or less info on the screen mode. Karaoke mode can be active/deactivated pressing [K] (since removing vocals will never work properly and I think its a good idea but a waste of time). And [N] removes progressively the elements on the screen until a clean video.

b - My karaoke files with kxk extension are encrypted. They will only play in my version. So i´m not releasing the public key although any one can use the same code and do the same thing with a new key inserted in the code, I´m doing this way and I think its fair. After all, I´ve made those files, synchronized, got the mp3 with real karaoke for each and every one etc. Don´t know how the community would feel about it but for me is business that I invested a lot of my time already. It only will be a issue for those whom try to get the content in my website and use it in a different version of mine. As I said before, I will NOT charge for the software but for the download service provided by me.

A third item: there is a download and importer manager but it only works in portuguese for now. Planing to go multilingual but not for this moment. So, in [Editor] item you will find [Download] button instead.

So i´m puting in mega with examples using regular ultrastar files, encrypted files, CDG files, Videoke files ... so you can see the whole picture. I´m trying to do it today.

Abouit the Code:

In UScreenSing: ... function TScreenSing.ParseInput(PressedKey: Cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; ...

// on the key catcher loop SDLK_K: begin If ShowNotes = pKaraokeModeOn then Begin ShowNotes := pKaraokeModeOff; WriteMessage('Karaoke MODE OFF'); End Else begin ShowNotes := pKaraokeModeOn; WriteMessage('Karaoke MODE ON'); end;

  end;

  SDLK_N:
  begin
   if (ScreenSong.Mode <> smNormal) and (ScreenSong.Mode <>

smMedley)then Exit;

    Inc(ShowNotes);

    if (ShowNotes>pVideokeModeOn) then
    ShowNotes:=pKaraokeModeOff;

    case ShowNotes of
        pKaraokeModeOff: WriteMessage('Game MODE on');    // 0
        pKaraokeModeOn: WriteMessage('Karaoke MODE on');  // 1
        pVideokeModeOn: WriteMessage('Videoke MODE on');  // 2
    end;

  end;

function TScreenSing.Draw: boolean;

... // Background das letras e icnoe do avatar if (ShowNotes <= pKaraokeModeOn) then DrawFG; // Oly draw if karaoke mode on , remember that are 3 states. ...

// always draw custom items except in pvideokemode
if (ShowNotes <pVideokeModeOn) then
 SingDraw;
    // draw time-bar

    // goldennotestarstwinkle if not in karaoke mode
 if (ShowNotes <pKaraokeModeOn) then  GoldenRec.SpawnRec;

    // draw scores if note in karaoke mode
 if (ShowNotes <pKaraokeModeOn) then  Scores.Draw;

... UMain.pas

const MAINTHREAD_EXEC_EVENT = SDL_USEREVENT + 2; pKaraokeModeOff =0; // 0=show all; pKaraokeModeOn =1; // 1=don't show notes+rating; score+score bar; pVideokeModeOn =2; // 2=Hide Lyrics

...

UScreenSong // thats wher you play the song selected. Here a placed the code to select accordingly to the songtype (new property)

procedure TScreenSong.StartSong; Var mFileCDG, mFileMIDI, mCDGPLayer, mMIDIPlayer: string; // MeuTempForm : TForm; begin

// Mode := smPartyJukebox; CatSongs.Selected := Interaction; if (Mode = smPartyFree) then Party.SaveSungPartySong(Interaction); StopMusicPreview(); // Ponto da seleção da musica CurrentSong := CatSongs.Song[CatSongs.Selected];

mFileCDG := ChangeFileExt( CurrentSong.Path.Append(CurrentSong.Mp3).ToNative, '.CDG'); mCDGPLayer := ExtractFilePath(ParamStr(0))+'CDGPlayer.exe'; mMIDIPlayer := ExtractFilePath(ParamStr(0))+'MIDIPlayer.exe'; mFileMIDI := CurrentSong.Path.Append(CurrentSong.Mp3).ToNative;

If CurrentSong.SONGTYPE = psGU Then Begin ShowNotes := pKaraokeModeOff; FadeTo(@ScreenSing); // Exibe a tela de musica } end Else if CurrentSong.SONGTYPE = psKK then Begin ShowNotes := pKaraokeModeOn; FadeTo(@ScreenSing); // Exibe a tela de musica } end Else if CurrentSong.SONGTYPE = psKF then Begin ShowNotes := pKaraokeModeOn; FadeTo(@ScreenSing); // Exibe a tela de musica } End Else if CurrentSong.SONGTYPE = PsKG then begin StopMusicPreview(); ShellExecute(hWnd(nil), 'open', pchar(mCDGPLayer), pchar('"'+mFileCDG+'"'),nil,SW_SHOWMAXIMIZED ); End Else if CurrentSong.SONGTYPE = PsKV then Begin ShowNotes := pVideokeModeOn; FadeTo(@ScreenSing); end Else if CurrentSong.SONGTYPE = psKM then Begin StopMusicPreview(); ShellExecute(hWnd(nil), 'open', pchar(mMIDIPlayer), pchar('"'+mFileCDG+'"'),nil,SW_SHOWMAXIMIZED ); end Else Begin ShowNotes := pKaraokeModeOff; FadeTo(@ScreenSing); // Exibe a tela de musica } end; end;

// psKK and etc are constants defining the type of the song. .. eof

It takes more time to figure out where to change thing and what units relates to their´s propose in the project. It would be nice to have at the beginning of the project a text explaining the key units and functions.

I will prepare the whole package and some examples and send to you in next few day.

How turned out the midi thing compatibility ? I´m making an external midi player. Not using the native screen to play the midi/lyrics. If you found out a better solution, let me know.

And i will be honest with you. The whole thing on Github, fork, version etc.... i never used and haven´t time to see how it work properly. That is the main reason a did not placed the code there yet.

Bye...

Atenciosamente,

Frederico Monteiro Cetera Softwares

Telefone: 11-2016-3558 Atendimento: 14:00hs até 18:00hs Skype: ceterasoftwares

ceterasoftwares@hotmail.com

2016-11-28 22:59 GMT-02:00 basisbit notifications@github.com:

@fredmontier https://github.com/fredmontier any chance to be able to take a look at your code-changes already?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/UltraStar-Deluxe/USDX/issues/146#issuecomment-263444353, or mute the thread https://github.com/notifications/unsubscribe-auth/AH52Q9p6EU7pgCQcamIY6whmKVE4HAvUks5rC3jigaJpZM4KT-2v .

basisbit commented 7 years ago

that all sounds ok and in compliance to the GPLv2 license. That key is only required for your content, not the software itself, so there is no need for you to publish that key. When compiling using delphi 7, the output doesn't work correctly on Windows 8.1 and newer windows kernel versions. I tried RAD Studio 10.1 Berlin, but it seemed too buggy and thus not worthy the additional work. If anyone else gets the current code to work well in other IDEs, please create pull requests and thus help improve this game. CDG and Videoke supports sounds really nice! Am really happy to see this improvement.

fredmontier commented 7 years ago

Hi my friend...

I will give you and to the community the full source. Even the possibility to make a version with the same properties. Of course, better wait for my update/adaptation to the current version. Because the many the user the many the standard will succeed. And the simple fact that the real job is in getting the the files and musics in sync. The cost in space and bandwidth is too big to be ignored. My collection is 350 GB !

I will try my best to make a package and send you the latest version with some examples in all formats. Also an account with no limits to my service. I would really appreciate if you take a closer look to my ideas and see the full potential to a worldwide service, based in Brasil ... We could build a partnerships.

Look, i think that this path (support to all kinds of formats) and the single fact that karaoke will never migrate to mobile (in the sense that is a coming together experience and demands a big screen aka computer) has a lot of potential.

Since yesterday i´m having problems with my Windows 10 and all versions of the game. As soon a figure out the problem, I will make the package and send you.

Bye...

PS: I could not find you direct e-mail. [private information deleted]

henry74 commented 7 years ago

I would love the CDG+MP3 support. Any updates on this?

fredmontier commented 7 years ago

HI...

And I would love to give the CDG player code to the project BUT it would make a lot of changes on the file format and I think Basibit and others more active developers SHOULD carefully approve that decision.

Decisions like implementing new file types like CDG, MIDI, Plain Video (Without the mp3), Real karaokê (professional tracks without vocals). The other solution would be rendering the CDG graphic output directly on the game player, that´s is the hardest option but the correct one. A just made a external CDG player that fires based on the song type. The same i´m doing to MIDI files that plays KAR, MIDI, MID etc.

The changes in the code are minimal and even silly. But the possibilities to the game are huge. I´m waiting for the basibit´s feed back on my modification.

Atenciosamente,

Frederico Monteiro Cetera Softwares

Telefone: 11-2016-3558 Atendimento: 14:00hs até 18:00hs Skype: ceterasoftwares

ceterasoftwares@hotmail.com

2017-01-10 1:56 GMT-02:00 Henry Hwangbo notifications@github.com:

I would love the CDG+MP3 support. Any updates on this?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/UltraStar-Deluxe/USDX/issues/146#issuecomment-271480259, or mute the thread https://github.com/notifications/unsubscribe-auth/AH52Q7d9YNwQR1EO2CEUgAbwKs2ePPlWks5rQwFngaJpZM4KT-2v .

fredmontier commented 7 years ago

Forgot to mention: Windows only. Don´t forget it uses BASS DLL !

I don´t know shit about porting CDG player to Linux, so it is obviously a very lame solution (mine solution, i mean) to a good idea. I will not even consider make it to other platforms since the majority here in Brazil use Windows and those whom use Apple products certainly could care less.

Atenciosamente,

Frederico Monteiro Cetera Softwares

Telefone: 11-2016-3558 Atendimento: 14:00hs até 18:00hs Skype: ceterasoftwares

ceterasoftwares@hotmail.com

2017-01-10 11:31 GMT-02:00 Fred Montier fredmontier@gmail.com:

HI...

And I would love to give the CDG player code to the project BUT it would make a lot of changes on the file format and I think Basibit and others more active developers SHOULD carefully approve that decision.

Decisions like implementing new file types like CDG, MIDI, Plain Video (Without the mp3), Real karaokê (professional tracks without vocals). The other solution would be rendering the CDG graphic output directly on the game player, that´s is the hardest option but the correct one. A just made a external CDG player that fires based on the song type. The same i´m doing to MIDI files that plays KAR, MIDI, MID etc.

The changes in the code are minimal and even silly. But the possibilities to the game are huge. I´m waiting for the basibit´s feed back on my modification.

Atenciosamente,

Frederico Monteiro Cetera Softwares

Telefone: 11-2016-3558 Atendimento: 14:00hs até 18:00hs Skype: ceterasoftwares

ceterasoftwares@hotmail.com

2017-01-10 1:56 GMT-02:00 Henry Hwangbo notifications@github.com:

I would love the CDG+MP3 support. Any updates on this?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/UltraStar-Deluxe/USDX/issues/146#issuecomment-271480259, or mute the thread https://github.com/notifications/unsubscribe-auth/AH52Q7d9YNwQR1EO2CEUgAbwKs2ePPlWks5rQwFngaJpZM4KT-2v .