alphaTab icon indicating copy to clipboard operation
alphaTab copied to clipboard

The file generated by Gp7Exporter cannot show multiple tracks in Guitar Pro 8

Open Jeswang opened this issue 1 year ago • 9 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

When a score conrtains multiple tracks, Guitar Pro 8 cannot open the file.

With an exported score with one track, Guitar Pro 8 cannot visualize multiple tracks.

There seems to be memory leak in Guitar Pro 8 when it deals with files without ScoreViews or LayoutConfiguration.

image Screenshot 2023-08-04 at 1 39 36 PM

Expected Behavior

The exported file should be able to add more tracks, and enable mutiple track view in Guitar Pro.

Screenshot 2023-08-04 at 1 31 56 PM

Steps To Reproduce

You can create a file from Guitar Pro 8 which shows multiple tracks fine, and then import and export the file. Now the file is broken.

const alphaTab = require("@coderline/alphatab");
const fs = require("fs");

const fileData = fs.readFileSync("Example.gp");
const settings = new alphaTab.Settings();
const score = alphaTab.importer.ScoreLoader.loadScoreFromBytes(
	new Uint8Array(fileData),
	settings
);

const exporter = new alphaTab.exporter.Gp7Exporter()
const data = exporter.export(score, settings);

fs.writeFile("Example-output.gp", data, (err) => {
	if (err) {
		console.log(err);
	} else {
		console.log('File written successfully!');
	}
});

console.log(score.title);

reproduce_files.zip

Link to jsFiddle, CodePen, Project

No response

Found in Version

1.3-alpha

Platform

Node.js

Environment

- **OS**: macOS, 13.5 (22G74)
- Guitar Pro 8: 8.1.0 Build 48

Anything else?

No response

Jeswang avatar Aug 04 '23 20:08 Jeswang

Thanks for reporting this problem and the detailed analysis. It is a bit unfortunate that Guitar Pro still has some special proprietary binary files in their format. But even if it might be a bug in GP8 (which we could report) I guess it should be possible to write files which makes GP7 and 8 happy. It is a bit a gray zone with the reverse engineering of file formats but as we talk about interopability here it should be fine. Maybe Arobas would be even willing to share some insights about their format like they did in the old days with publishing the GP4 file format description.

Danielku15 avatar Aug 05 '23 11:08 Danielku15

Intermediate findings: The problem seems to be in the PartConfiguration the LayoutConfiguration seems optional and not making a difference (e.g. when deleting the file in the GP-zip). But it seems the way we generate the PartConfiguration is rather wrong compared to what GP8 is doing. Will have to do some deeper reverse engineering there because the file is mandatory. But if we write it wrong that's not good.

Danielku15 avatar Aug 05 '23 21:08 Danielku15

Problems identified and fixed.

Danielku15 avatar Aug 05 '23 22:08 Danielku15

Thanks for the quick responses! Now I can open a multi-track score from the generator (with the new change, it's by default rendering one track)! But I think it still have the same issue when clicking the button to "Switch single track / multitrack".

Screenshot 2023-08-07 at 8 04 53 AM

reproduce.zip

Jeswang avatar Aug 07 '23 15:08 Jeswang

@Jeswang Do you still experience a bug? I opened your provided example files and it works fine for me with Guitar Pro 8 (8.1.0 Build 48) on Windows. I see you are on a Mac.

I re-created your testfile with GP8 on windows and sent it through alphaTab to export it and also it works fine. Can you try following two files on your environment and check what happens? multi-track-win.zip

Danielku15 avatar Dec 24 '23 16:12 Danielku15

Yep, confirmed that Guitar Pro 8 still cannot render mutlipe tracks with the files attached in the above comment.

image

Jeswang avatar Dec 25 '23 22:12 Jeswang

@Jeswang Do I understand you correctly that you also get an error when you try to open multi-track-win.zip/Example.gp? Or does it only happen with multi-track-win.zip/Example-output.gp?

Example.gp has been created with Guitar Pro 8 and was not touched by alphaTab at all. This would mean Guitar Pro 8 has a bug and we cannot do much from our side.

Danielku15 avatar Dec 27 '23 22:12 Danielku15

Ping @Jeswang any feedback on my last question?

Danielku15 avatar Jan 21 '24 10:01 Danielku15

Sorry for the slow response.

@Jeswang Do I understand you correctly that you also get an error when you try to open multi-track-win.zip/Example.gp? Or does it only happen with multi-track-win.zip/Example-output.gp?

I can open multi-track-win.zip/Example.gp fine without any error when showing multiple tracks, and only encounter issues with multi-track-win.zip/Example-output.gp.

Example.gp has been created with Guitar Pro 8 and was not touched by alphaTab at all. This would mean Guitar Pro 8 has a bug and we cannot do much from our side.

Jeswang avatar Jan 27 '24 21:01 Jeswang

@Jeswang: I double checked now many things again and I cannot reporduce the problem with Guitar Pro 8.1.1 Build 17. I took the files from reproduce.zip and multi-track-win.zip but I can open all files and switch tracks without problems.

https://github.com/CoderLine/alphaTab/assets/674916/42325af6-ab28-4e0f-bfee-f2af044d4d6b

From the screenshot I realized that there might be something else important: The example files have two tracks one with an empty name and one with "Stell Guitar" but in your screenshot you have two empty strings and one track is muted.

Are there more details you can share about your environment? I tested on macOS Sonoma using the files we have shared until now.

Danielku15 avatar Mar 10 '24 15:03 Danielku15

Closing this bug as it is not reproducible for me. Tested the same files under the same Reported version and everything is find. If you have more input on how to reproduce this let me know.

Danielku15 avatar Apr 28 '24 19:04 Danielku15