#Vocal Range Shifts don't occur until the next lyric

41 messages · Page 1 of 1 (latest)

grave root
#

More specifically, if a vocal range shift is not at the same time as another note, it won't occur until the next lyric is played.

ember storm
#

that shouldn't be the case, there's no direct correlation made between note position and shift position

#

unless this is an issue with the % lyric marker specifically

#

for the [range_shift] text event and the range shift MIDI note, the shift happens exactly at the event's position, and will use any length that's specified

#

do you have a specific song or .mid file that reproduces this issue?

grave root
#

I have been messing around with it in a few charts, but one example I can definitely give is in the RB3 chart of Bohemian Rhapsody. The second shift for Harmonies has this problem, causing a weird visual issue where the notes shrink without moving.

ember storm
#

more examples and a video of the problem would be helpful if you're certain there's an issue

grave root
ember storm
#

hmm

#

i really don't understand why it would be doing that, range change handling is not tied to notes whatsoever

grave root
#

Lemme go through an improvised list.

  • Are the ranges checked before or during the song?
ember storm
#

before

#

but the starting tick is taken from the shift itself, not from the notes

grave root
#
  • Is "_nextRangeIndex" the same as "the range of the next set of notes"?
#
  • And is "ranges.count" the same as "the range of the current set of notes"?
ember storm
#
  • _nextRangeIndex is for the next upcoming range shift, yes
  • ranges.Count is the total number of range shifts in the song
#

the index for the current shift isn't tracked, its data is read and prepared once, and it doesn't need to be tracked after that

grave root
#

Okay, a range shift counter. Now since this is a while statement, I'll assume it works like GML does and look at the second statement.

#

Dumb question, though. Is that a variable attached to an array?

ember storm
#

it's a property of the array, sort of like variables but they're actually functions when you go beyond the syntax

#

and more specifically, it's not an array, it's a List<VocalsRangeShift>, which is a dynamic array

#

but arrays do still have properties and functions in C#

#

i need to do some debugging when i get back home

grave root
#

I'll try lookin' at it and bother ya about it when you aren't busy lol. I'm just trying to figure out what ".Time" is for...

ember storm
#

it's the time into the song that the shift happens at

#

which is compared against the current uncalibrated (Real) visual time

#

something is most likely wrong in the YARG.Core part

#

it's nothing to do with this code

#

but first i need to figure out if i have the song in the video lol

#

i'm not familiar with Ween, what song is it?

grave root
#

Tried and True.

ember storm
#

and is it from any of the game setlists?

grave root
#

It is a C3 chart.

ember storm
#

alright, i'll have to snag it for debugging

ember storm
#

oh nice, it's the only range shift marker in the chart lol

#

that'll be easy to debug with

grave root
#

You're welcome lol.

ember storm
#

found the bug

#

it was using the tick for the next text event instead of the one for the phrase here