Jump to content

Rocksmith to Guitar Pro exporter (v0.9.9 released, now with Mac support and GUI!)


cabalistic
 Share

Recommended Posts

[update: The latest release is v0.9.9, visit the website: http://www.rocksmithtotab.de

This program can convert any official or custom DLC into Guitar pro tab files (either .gp5 or .gpx). All of Rocksmith's features are supported and mirrored in the tabs. There may still be a few bugs left, and the rhythm notation is occasionally weird or just plain wrong, but overall the output is very decent and usable. The program can now be used on a Mac.]

 

Hi all,

 

over the past week I've begun to write a small program that can convert Rocksmith 2014 arrangements to Guitar Pro .gpx files. While Rocksmith's way of showing songs has its advantages, I've always had difficulty to figure out certain things from it, particularly strumming rhythms and quick passages. So for a while now I had been searching for a way to extract tabs from Rocksmith's tracks, and from a quick look through the forum, I might not be the only one. Recently I stumbled upon the RSTabExplorer, which attempted to do just that. Unfortunately, it wasn't in a state where its output was really useful to me, but at least it was a starting point. I had a look at the code and decided that I might have a shot at creating my own attempt.

 

I have chosen to export the tabs to Guitar Pro, and specifically Guitar Pro 6. The reason is that I own Guitar Pro, and the gpx format was the quickest one for me to figure out (because at its core, it's just a very readable xml file, as opposed to the fully binary format of gp5). I also considered MusicXML, but it was a little more awkward to write, and more importantly, Guitar Pro's import is not advanced enough to capture all the relevant features.

 

Now, the program isn't fully finished, yet, but it is in a state where I think it is already useful, and also could benefit from getting some feedback from other users. The program is a basic command-line utility (no GUI, sorry), where you specify the .psarc file and an output directory, and it will process all arrangements found in the archive. It already exports most of Rocksmith's features and does a decent job at rhythm detection, so many arrangements (at least in part) look quite good in Guitar Pro.

 

There is one additional reason I'm releasing this now. Of the two major missing features (sustains and bends), I need help with the bends, specifically in understanding how Rocksmith interprets bends. I read the tutorial post about authoring bends in Eof, and that is all quite straightforward. However, in practice I found several tracks where a note has just a single bend value, yet sometimes Rocksmith interprets it as a simple bend, and sometimes as a bend/release. I can't figure out how Rocksmith differentiates between the two. For example, in Black Magic there is a bend/release on the 6th fret of the 5th string, but looking at the arrangement xml, I only see a single bend value for this note. Can anyone help me out here? Thanks :)

 

Other than that, well, just try it out and let me know what you think. Just a little heads-up: Slides are only semi-working at the moment. Unpitching slides are fine, but slides to a target note only work in some instances. I know why, I just haven't had the time to correct it, yet.

Also, the rhythm. Obviously, since Rocksmith has no direct notion of rhythm, it is quite a challenge to get an accurate rhythm representation out of Rocksmith's tracks. Basically not a single note maps 100% to its original rhythmic duration. I have experimented a bit with this, and my current approach is still quite basic, *but* it works surprisingly well in most instances. However, you have to expect the occasional oddity or error in the output, particularly in fast and "sloppy" solos. I have some ideas about cleverer approaches that I will try in the future, once all other features are implemented.

 

One final warning: By default, the program puts all arrangements of a song (e.g. lead, rhythm, bass) into a single .gpx file. This is generally fine, but one caveat in Guitar Pro is that all tracks share the master bars, which dictate tempo and time. This is almost never a problem, but I did find in "Red Fang - Number Thirteen" that at some points, the lead and rhythm arrangements use different time in some measures. So when you combine them into a single file, this distinction is lost, and the result is simply wrong. There's not much I can do about that. I have implemented a switch to the program (-t) that will split the arrangements into separate files, if you need it.

 

Now, finally, here is the link to the project: https://github.com/fholger/RocksmithToTab

And the first release is here: https://github.com/fholger/RocksmithToTab/releases

The program requires .NET 4.5. I hope I packaged everything correctly, please let me know if something isn't working. There are basic instructions on the GitHub page.

 

I hope you get some use out of it, and please do point out any errors you spotted (besides those already mentioned above) in conversions. Many thanks to all you guys here who created the Custom Toolkit, and also to the RSTabExplorer team, because without you this project wouldn't exist.

  • Like 17

Rocksmith to Guitar Pro exporter: http://www.rocksmithtotab.de

Link to comment
Share on other sites

  • Developer

I am working on something similar, except converting to MusicXml.  I forked your code and will take a look at it.  Thanks for release.

  • Like 1

Are you tired of AV False Positives???  Now accepting donations on my website (Click Here)  Your donation will be used towards buying a code signing certificate.   CGT is now compatible and safe to use with Rocksmith® 2014 Remastered ... 

 

Latest Build of Custom Game Toolkit (CGT) w/ Game Save Gigbox       Latest Build of Rocksmith Toolkit       Latest Build of Customs Forge Song Manager (CFSM)

 

All bug reports and help requests please include your: OS, CPU, AV, .NET Framework versions along with a description of the issue (include screenshots of error if possible).  It should go without having to say ... make sure you are using the latest build before submitting bug reports or asking for help.

 

*  Remember to use your magic words (please and thank you) if you would like a response.  Don't use phrases like 'thanks anyhow' as it is demeaning.

Link to comment
Share on other sites

This should come in handy. Now I can finally export all the changes that I usually make during the EoF process of custom creation. For that you have my sincere thanks and hopefully you'll be able to work out all the kinks and improve it even further.

  • Like 1
Link to comment
Share on other sites

I just figured out my confusion about how Rocksmith can differentiate between a normal bend and a bend/release if there is only one bendValue in either case. It turns out it's actually a bug in the Toolkit, because it swallows bendValues with a step of 0. So there is actually a second bendValue for the bend/release, only I didn't see it in the exported xml.

 

The offending line is in Song2014.cs:751

                if (bendData[i].Time > 0 && bendData[i].Step > 0) {

which should read Step >= 0. I should probably report this on GitHub?

 

Anyway, with that sorted out, I should now be able to implement bends in the exporter. :)

Rocksmith to Guitar Pro exporter: http://www.rocksmithtotab.de

Link to comment
Share on other sites

The toolkit has the capability to rebuild the XML file if it isn't actually bundled in, but if the original XML file is available as it usually should be for custom DLC, it should include bend definitions of 0.

 

I went ahead and opened a bug report because this definitely could use some consideration:

https://github.com/rscustom/rocksmith-custom-song-toolkit/issues/183

Link to comment
Share on other sites

I see, thanks. I guess I hit the bug because I was mostly working with the original game content.

 

Another quick question: Can anyone tell me what the "unk5" parameter in the bendValues is supposed to represent? I couldn't find anything here or in the code, and from a very brief experiment I did, it doesn't seem to have any visible effect in the game... I guess I can probably just ignore this for my purposes?

Rocksmith to Guitar Pro exporter: http://www.rocksmithtotab.de

Link to comment
Share on other sites

i converted a few of my songs and the results are quite good. Giving feedback is a little problem because i only have GP5 and the Tuxguitar version that can import .gpx files, not sure how correct Tuxgitar can import them.

 

The cmd window was showing me on a few .psarc files a warning like

 

Warning: ChordId 7 already present in templates list.
Warning: ChordId 8 already present in templates list.

 

In that .gpx file a few chords were wrong, the tab had a chord like this

 

-

-

7

7

2

0

 

but it should actually only be a 02 E chord, not sure why it added 77, i gues that it merged chords with the same id? not sure.

 

Same song/arrangement different chord

 

-

-

7

7

-

0

 

next example

 

-

-

7

7

3

1

 

Here again, it should be a 1/3 power chord but the pgx tab does have 77 added.

 

Next thing that i noticed is that empty space gets filled with an open E, same goes for sustains (you mentioned sustains not working)

 

Anyway i think that even raynebc had the issue with chords getting merged a few weeks ago when he added musicmidi support.

 

Besides those things your work looks so far excellent. Thanks for your effort.

Link to comment
Share on other sites

Thanks for the feedback. Would you mind sending me one of the psarc in question, so that I can take a look at what happens?

TuxGuitar's import is not perfect, it might explain the open E, which shouldn't happen.

 

As for the chords, yeah, it appears some ChordIds appear more than once. So far I'm ignoring the second occurence, but perhaps I need to merge them somehow.

 

Once I'm finished with all features and improved the rhythm detection further, I might look into exporting to GP5. I didn't use it for this version, because i didn't want to make my life harder by figuring out a binary format, but once the exporter itself works as expected, that would be less of a problem.

Rocksmith to Guitar Pro exporter: http://www.rocksmithtotab.de

Link to comment
Share on other sites

Thanks for working on it, this is a wanted feature for learning solos quicker ! My feedback is  : actually not working for me : gpx files are produced, but i can't open them with the gp6 version installed on my computer it says "error while loading" , i used release version v.05

Link to comment
Share on other sites

@raynebc: Thanks, this is definitely going to help!

 

@DrTutut: Can you point me to the song you were converting, so that I can try for myself? You could also try passing the parameter "-f gpif" to the program. It will output a .gpif file instead of .gpx, which you can still open in Guitar Pro 6. This *might* help if the bug is in creating the GPX container instead of the actual output. (Although I doubt it. Still, worth a try.)

Rocksmith to Guitar Pro exporter: http://www.rocksmithtotab.de

Link to comment
Share on other sites

I tried 5 files with same result error loading .gpx, i suppose this is due to an old (2010 trial ) version of gp6. But thanks a lot for  the .gpif output solution here, i can open generated tabs now.  Great work, this looks like a good starting point and a great help tool coming to complete the rocksmith learning path !

Link to comment
Share on other sites

As for the chords, yeah, it appears some ChordIds appear more than once. So far I'm ignoring the second occurence, but perhaps I need to merge them somehow.

 

 

Not sure if helpful but i think chordIDs are not unique for the whole custom, they only live inside the arrangement

 

If i remember correctly for example ChordId 5 in the Rhythm arrangement is not automatically the same chord as ChordId 5 in the Lead arrangement.

 

btw. i have converted a few more customs and they dont had the chord problem

Link to comment
Share on other sites

@DrTutut: Strange, but I'm glad to hear that the gpif are working, at least.

 

@MadMaxx: Each arrangement is converted separately, so that's not the issue. But there's definitely something wrong with my handling of chordids. I've seen a couple of songs in the official dlc where the opposite happens: A certain chordid is missing, resulting in silence where notes should be.

 

Anyway, I just pushed some changes that should now handle sustained notes, and also by default extend notes at the end of a bar into the next if the next one begins with silence. I'm working on bends and slides next, once that's done I'll upload a new release. After that, I really need to dig into the rhythm detection again. Although the current code works very well for about half of the arrangements I tested, the other half produces a lot of warnings about missed notes or unhandled note durations :)

Rocksmith to Guitar Pro exporter: http://www.rocksmithtotab.de

Link to comment
Share on other sites

Alright, I published a new version at https://github.com/fholger/RocksmithToTab/releases .
This one has support for sustains and bends, and also slides should be working better now.
 
Note that sustains are only handled in so far that a sustained note is let ring at least as long as its sustain value says, but it may happen that it's ringing longer. The reason is that it's not at all trivial to decide in which cases the end of a sustain should be followed by a pause, because the next note might come pretty soon after. I've decided not to be clever about this. After all, since Rocksmith doesn't supply accurate information about rhythm and pauses, it's all just an approximation, anyway.
 
Bends are also only supported in the form of normal bends, prebends and bend/release. This is all that gpx can handle directly (they dumbed it down from gp5), for more complicated bends I would have to split the note into appropriate pieces to approximate the bend. But I'm not sure it's worth the trouble, after all, the basic bend types cover most cases fairly well or at least approximately. If I do decide to add gp5 support in the future, then it won't be a problem there.
 
With that, I think that the release is pretty much feature-complete, in the sense that it's doing everything I ever intended it to do. As I said, the major thing left for me to do is improve the rhythm detection. After that, well, it's really up to you. There will certainly be bugs, so please do point me to arrangements that aren't working or contain mistakes. And do tell me what would be the most important missing feature for you. Is there sufficient interest in GP5 support? If so, I could put that up next on my agenda.

Rocksmith to Guitar Pro exporter: http://www.rocksmithtotab.de

Link to comment
Share on other sites

Thanks for the new version, i gave it a quick try and slides, sustains and bends are indeed much better now.

 

GP5 support would be great especially since its the most used version.

 

As suggestions it would be nice if the output file name would be the same as the input name. If you dont plan a gui it would be nice to just drag and drop the psarc over the exe and the default command gets executed to convert it to .gpx or eventually to .gp5, maybe a .bat can do that too.

 

Not sure if its a limitation of tuxguitar but i cant see section names.

Link to comment
Share on other sites

That's really impressive!

 

I was using https://github.com/andulv/RSTabExplorer but this is much better. It's the definitive complement to Rocksmith, for the same reasons you wrote. 

 

I've tried the program and it works (i'm using gpif too because i've DrTutut problem with gpx).

 

I've just checked Impossible Dreams because it's one of the songs I know better and it's almost perfect, also the solo (yes maybe when it's really fast it's not perfect but it's ok!).

 

Keep going on!

 

When you think it's near to stable, you can post it to reddit to reach a greater audience for feedbacks and (why not) glory  :D

Link to comment
Share on other sites

I only have TuxGuitar so I cannot test it yet, but your program sounds amazing!

 

+1 on this:

+1 for GP5 and rocksmithh toolkit integration when ready would be cool too.Thanks a lot

Check out my easy tutorial on how to add a metronome to your CDLC: Mute the original music, play only with the metronome and find out how good you really sound! Also: Find CDLCs that have the metronome enabled!

 

Want a USB-Footswitch that you can use to control the tone selection and all the menus in Rocksmith? Check out Rodman's Tutorial and my additions to that!  Footswitch_Logo.png

My CDLCs: Devin Townsend - Life, Deep Peace, Ih-Ah!, Deadhead; Farin Urlaub - Ok

My ideas for new features in Ignition, e.g. filters for Multitrack CDLC and Metronome CDLC.

Link to comment
Share on other sites

Link to comment
Share on other sites

Nice, TuxGuitar 1.3 is working :-) (Even though I had to run it through compability mode for Win 8 on Win 8.1 - wierd^^)

 

If you are interested, I can send you the original gp5 file from one of my songs, so that you can compare it to your output... there are a couple of mistakes (only talking about lead arrangement now):

I will number the bars like this: original/output (they are different because of e.g. repititions)

  • A random(?) note appears in all "silent" bars
  • 11/14: the note from the previous bar is just sustained, even though it should be played one more time and then sustained
  • 24/27: The first note appears as sustained from previous bar, even though it has not been played there (therefore it doesn't show up in the TAB)
  • 27/30: the first note is a sustain from the previous bar. It should be a pause instead.
  • 72/75: This is a very complicated bend (two half up, one half down, one half up, hold) which just becomes "two half up, hold"
  • 84/87: This is a slide 10/12 (originaly it was just noted as a grace note, because the beat is on the 12 and you just slide up to it). In your output it is just " /12", so there is no slide audible in midi playback
  • 94/97: The first note is a "prebend/release", and in the output it is just a normal bend

 

All in all, those are just tiny mistakes, given how much is acutally correct :-)

One idea: It would be neat to capture the section names from the psarc file

 

Again: Great work and many thanks!

Azrael

 

Original gp5:

https://www.dropbox.com/s/s5xe671t6sm32sj/devin_townsend_life_joris_6.gp5

psarc:

https://www.dropbox.com/s/ood47orn029or4z/Devin-Townsend_Life_v1_2_DD_p.psarc

output: (Version 0.7)

https://www.dropbox.com/s/9sm3j47lq1w76aj/devintownsendlife.gpx

Check out my easy tutorial on how to add a metronome to your CDLC: Mute the original music, play only with the metronome and find out how good you really sound! Also: Find CDLCs that have the metronome enabled!

 

Want a USB-Footswitch that you can use to control the tone selection and all the menus in Rocksmith? Check out Rodman's Tutorial and my additions to that!  Footswitch_Logo.png

My CDLCs: Devin Townsend - Life, Deep Peace, Ih-Ah!, Deadhead; Farin Urlaub - Ok

My ideas for new features in Ignition, e.g. filters for Multitrack CDLC and Metronome CDLC.

Link to comment
Share on other sites

Hi all,

 

thanks for your comments, appreciate it :) I'm still working on the rhythm detection, I think I have figured out a fairly sensible way to do it which is not overly complicated. (Score programs which let you input music from a keyboard apparently use fairly sophisticated algorithms for rhythm detection, which are well beyond the scope of this small tool.) It may still output some weird rhythm durations at times, and I can't prevent that, because it really depends on the accuracy of play in the specific arrangement, but at least it should always take care that all notes in a bar sum up to the correct length (in some cases they don't, currently). I'll post an update once this is done, it will also have a bugfix for the chord issues @@MadMaxx.

 

 

As suggestions it would be nice if the output file name would be the same as the input name. If you dont plan a gui it would be nice to just drag and drop the psarc over the exe and the default command gets executed to convert it to .gpx or eventually to .gp5, maybe a .bat can do that too.

Unfortunately, I can't easily default the output filename to match the input filename. The input is a container and could potentially contain several songs (as is the case for the official songs), which is why I'm using the song identifier as the output filename. I could, in principle, make a special case if there's only one song in a container, but as a programmer I don't like special cases :) Of course, if you all think it'd be a good idea, I may think about it.

What I can and will do, however, is to default the output directory to the input filename. I think that would help, too? You'll get a separate output directory for each psarc conforming to its name, unless you override the output directory.

The drag and drop approach should be doable, I'll look into it. It's basically a matter of how the psarc is passed into the program.

 

@avastreg: Haha, thanks! Not sure about reddit, although I guess a bit more publicity wouldn't hurt. I guess not many people read these development forums :)

 

@Azrael: Thanks a lot for the comparison. Here's my initial take on the mistakes:

  1. This is a TuxGuitar problem, actually. Either it cannot handle pauses in .gpx import, or I'm doing it differently than it expects, I'll try to clear that up. In Guitar Pro, the pauses are there.
  2. There seem to be several mistaken sustains, as you point out. Strange, I'll have to look into this.
  3. Again, strange. I'll have to look at the arrangement xml in detail to figure out why my program would even think to put a tie there.
  4. Can't do much about that. Since Rocksmith doesn't have a way to indicate pauses, I chose as the default to sustain all notes to the beginning of the next measure, if that measure begins with a pause. I think this is generally the better default, but obviously it can be wrong. If the note before the pause has a (small) sustain, my program might take that as a hint to leave the pause at the beginning of the next bar, but otherwise that is one thing I just cannot determine due to missing info.
  5. This is a limitation in the gpx format. For whatever reason, they decided to dumb down the bend tools in Guitar Pro 6, so the most you can author in the bend tool for a single note is a bend/release. For more complicated bends you'd have to split the note into several smaller ones and tie them. But this is not at all trivial to do automatically, so I'm not doing that currently. Instead, I just try to approximate the bend as best as possible with the bend release. If I do implement .gp5 output, then this problem should solve itself, because gp5 has much more powerful bend support.
  6. Actually, in Guitar Pro it does indicate the slide 10/12, however the 10 is again incorrectly tied to the previous note, which is probably why TuxGuitar doesn't show it. I really have to find out why it's adding these ties.
  7. Now, a prebend it should actually be capable of handling, so I don't know what's wrong here. Will investigate

Again, thanks. I'll let you know once the next version is done.

Rocksmith to Guitar Pro exporter: http://www.rocksmithtotab.de

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. - Privacy Policy