YouTube sync not adjusted for truncated HP1 tabs

This tab was created in Hookpad 1 and intentionally contained 2 beats of silence at the end, because they are not part of the pre-chorus and HP1 did not support truncated measures. However, the end sync marker is now moved to the newly truncated end, so the whole tab gradually desynchronizes even though it had no issues before the HP2 player switch.

Not fixed as of 2.4.2.

2.9.7 makes this clear: the sync marker is placed at the end of all notes and chords, not at the end of the entire Theorytab.

Same analysis as OP.

Hey @HertzDevil, fixed in 2.10.6, pushed at 16:45 today. Let me know if you find any other issues when loading Hookpad 1 projects.

Note: I retroactively changed the minor version of 2.9.7 and up to 2.10.x

The remaining issues I could identify right now:

  • Hookpad 2 imports HP1 line breaks incorrectly
  • The few altered chords from HP1 (♯5 and add11) aren’t imported.
  • The piano lead instrument is transposed 3 semitones higher than usual when a HP1 band is loaded in the band editor (this doesn’t affect existing HP1 tabs).

The sync is fixed only in the editor, not on public analyses created in HP1 (again see link in OP for example), because they actually truncate the last measure rather than leaving some beats blank like in the editor.

Fixed this issue for public analyses and hookpad player today. Thank you for pointing it out!

I think this breaks HP2 tabs now. See chorus. The edit was made a few minutes ago and looks like this in the editor:
So I think the HP1 fixes also need to ensure that the analysis was actually made in HP1.

The code I added to fix this (see screnshot) does only run when HP2 pulls in the HP1 XML.

Is it possible that this scenario you are showing above was one that you opened in HP2 before I had the bug fixed, then saved with HP2 and thus created a HP2 JSON with the end key frame incorrectly placed? And now when you open, it isn’t pulling the HP1 XML, but the HP2 JSON?

// Reset KeyFrames on HP1 XML 
  state = state.set(
      new KeyFrame({
        beat: 1
      new KeyFrame({
        beat: beatEndOfLastLine

Judging from this tab, I think perhaps something else is going on. The verse and pre-chorus were both made in HP1, and only the verse is fixed, the pre-chorus isn’t. (The chorus was edited in HP2 once, but its last measure was flush anyway.) Could it be related to the recent line skip stuff?

Public analyses that have been edited in 2.11.x should remove or ignore $.youtube.syncStartAbsoluteHookpad1 and $.youtube.syncEndAbsoluteHookpad1, as can be seen in the JSON export of this analysis I edited a few minutes ago, because any sync issues should have been fixed in that edit. The analysis uses an offsetted start marker rather than an end one, but the same should apply to both markers.

When the chorus is opened in the editor, the keyframes show 01:39.05 and 02:08.22 until the YouTube video finishes loading, after which they abruptly become 01:38.14 and 02:08.17. There is no way to remove these fields from the editor, so the old values always overwrite any new start / end times. (This is especially an issue if the YouTube video has been replaced.)

@HertzDevil, wow, good find! working on this now. It will be in an upcoming 2.12.x build. Unbelievable how many little details have to be just right to make new stuff work w/ old.

Fixed in 2.12.1, release moments ago. Thank you for the fantastic bug report!

I looked at a few more of my HP1 submissions, and it seems the remaining sync issues are indeed related to the line skips; only the player but not the editor has this issue, and it only happens to HP1 tabs whose last row is 8 measures long but isn’t completely filled. Some screenshots:

image (note the rest chord at the end of the tab)

image (half a beat is missing at the end, as the rest chord only spans 1.5 beats)

In those desynced examples, the end sync marker is moved to the truncated end of the tab, while it’s at the end of the complete measure when opened in the editor. Are the player and the editor separate codebases?