FunkinCrew / Funkin

A rhythm game made with HaxeFlixel
https://www.newgrounds.com/portal/view/770371
Other
2.97k stars 2.29k forks source link

Enhancement: Set Global Audio Offest Option For Charts (Or At Cut The Dead Space Out Of The Charting Grid) #3807

Open Average-FNF-Modder opened 2 weeks ago

Average-FNF-Modder commented 2 weeks ago

Issue Checklist

What is your suggestion, and why should it be implemented?

      Currently, if a song has deadspace at the start of the track before anything can be heard, the engine automatically skips ahead of it. You can view this easily by going to say... DadBattle Erect, pressing 7 and setting your playback rate very low. Press play and then pause shortly after and you'll notice the play head jumping. This is the deadspace getting skipped. BUT, this deadspace isn't removed from the actual charting grid itself, meaning that if you attempt playing DadBattle Erect with that same low playback rate, you will immediately notice that the notes on the chart, setup as if this deadspace didn't exist, actually are hit slightly before the notes are played. It can be hard to hear at full speed, but once I hear it in a song, I can never unhear it. One solution is to move your notes down to wherever the playhead jumps to, and that works!- but what you can't fix is the camera bop events being permanently off-time, a problem made much more obvious when the notes don't line up with them, so it's usually best to just leave the small gap.

      But this is a real shame. If there was simply a section in metadata called, millisecond audio offset or whatnot (Maybe it could even have it's own window I don't know), players could offset the audio so that it's beat line up perfectly with the charting grids as intended. You could even have an automatic option that sets the offset right to the edge of where the game detects deadspace. Supporting this, I'm also suggesting a "Show Inst Waveform" toggle in view, so if that deadspace ending comes first in the inst it'll be easier for the player to find that starting point (Plus a waveform of the Inst would just be a nice thing to have in general I think).

KoloInDaCrib commented 2 weeks ago

But this is a real shame. If there was simply a section in metadata called, millisecond audio offset

But there is? That's what the offset toolbox is for. You know, this thing: image

If you mean global offsets for all songs then Input Offsets should do the job just right (since they affect the audio offsets in the calculation)

(also I feel like adding more offsets would just break the game in some way shape or form idk most of the major gameplay related bugs recently stemmed from offsets/resyncVocals function somehow)

Hundrec commented 2 weeks ago

I couldn't replicate the playhead skip you described on DadBattle Erect. Though I think Kolosaki mentioned an existing solution to your problem, I'd like to see what you mean "deadspace" so I can investigate this further.

Videos would be really helpful in cases where you find yourself typing out long passages of text to describe the issue.

Average-FNF-Modder commented 2 weeks ago

But this is a real shame. If there was simply a section in metadata called, millisecond audio offset

But there is? That's what the offset toolbox is for. You know, this thing: image

If you mean global offsets for all songs then Input Offsets should do the job just right (since they affect the audio offsets in the calculation)

(also I feel like adding more offsets would just break the game in some way shape or form idk most of the major gameplay related bugs recently stemmed from offsets/resyncVocals function somehow)

I've tried that thing and as far as I can tell it legit does nothing, and it's buggy to boot.

Average-FNF-Modder commented 2 weeks ago

I couldn't replicate the playhead skip you described on DadBattle Erect. Though I think Kolosaki mentioned an existing solution to your problem, I'd like to see what you mean "deadspace" so I can investigate this further.

Videos would be really helpful in cases where you find yourself typing out long passages of text to describe the issue.

Here is an example of the deadspace jumping effect in action:

https://github.com/user-attachments/assets/52797901-2f62-4006-b2d6-c99324173fd8

Here are short examples of both the opponents and players notes in song being heard before the actual note press in action, easily hearable at slow playbacks, but once I hear it, I can't unhear it at normal speeds either:

https://github.com/user-attachments/assets/97ddb605-8ba4-4bdd-bd2a-27b71aa084ea

https://github.com/user-attachments/assets/b215b405-3aa5-4488-85a2-d56a3704c2f7

Hope these clear things up. Since the offset is by exactly 2 steps for the notes, it still appears like the notes are being hit in time, but if you'll notice the sounds don't match the notes and if you try this yourself it'll be easier to see aswell.

Hundrec commented 2 weeks ago

Thank you, these videos demonstrate it perfectly! What's strange is that this doesn't happen to me. Are your offsets 0ms or something else?

Hundrec commented 2 weeks ago

With some testing, I was able to replicate this effect by setting any non-zero value for my input offsets. Seeing the notes jerk forward or backward at the beginning of the song can be jarring, but it's just the game applying the offsets after the countdown is finished.

20ms

https://github.com/user-attachments/assets/a86e4539-a5d7-4de4-8f33-33ab2b62d450

200ms

https://github.com/user-attachments/assets/eef30248-0849-4937-84d9-95489db73a39

-200ms

https://github.com/user-attachments/assets/6e4c7eb5-8763-4f8f-8f51-19756d956376

Average-FNF-Modder commented 2 weeks ago

With some testing, I was able to replicate this effect by setting any non-zero value for my input offsets. Seeing the notes jerk forward or backward at the beginning of the song can be jarring, but it's just the game applying the offsets after the countdown is finished.

20ms

20ms.input.offset.mp4

200ms

200ms.input.offset.mp4

-200ms

-200ms.input.offset.mp4

Oh brother... I had my visual offsets at 150ms without realizing it. I feel a little silly now. Honestly, this was just my excuse to get off my ass and write this suggestion, and I've been wanting these features anyways regardless, so I think I'll leave the issue open, maybe I'll edit it some in a bit (I need to go to sleep), but yea I feel a preeety dumb.

Hundrec commented 2 weeks ago

Wouldn't this mean your suggestion is already present in the game in the form of either visual/input offsets or song offsets?

Average-FNF-Modder commented 1 week ago

Wouldn't this mean your suggestion is already present in the game in the form of either visual/input offsets or song offsets?

As far as I can tell, the currently implemented audio offset window does literally nothing + is buggy, and having the ability to see the instrumental waveform would still be nice.

Lenancha commented 1 week ago

No wonder somethings to me felt a bit off sync when trying to mess with the song in the chart editor. I honestly thought that was something on my end but no lol.