Overview of work this week

The two main items that I’ve been working on this week are concerned with the playback that happens in Guitar Pro files, and dealing with chord diagrams as described in bug #21927.

Firstly, I re-factored the implementation concerning the GPX format. As implementation develops it’s always nice to do this so that things don’t get untidy. Things have been moved around a bit, and there’s likely further improvements to be made here, but as the GPX implementation is still undergoing quite a few changes I’ll likely be doing this again in a few weeks’ time.

After this, work on the playback was started (initially, this is for the GPX format only). I’m attempting to take the instruments that Guitar Pro uses, and find Musescore equivalents for playback. In order that something is working, I’ve focused on the test case I’ve been using (Black or White), which has 10 instruments in it. Now that I’ve worked out the best way to do that for the instruments in the part, applying that to the rest of the Guitar Pro instruments should not be difficult. I plan to implement some kind of complete mapping from Guitar Pro instruments to Musescore instruments, which can be done by creating a Guitar Pro file with one part per available instrument (there will likely be quite a number of these) and then finding equivalents for each. In most cases this is working well, but playback of percussion parts is quite poor, as several bugs are open which are flagged as Guitar Pro import issues. These are bugs that I will be taking a look at in the near future, likely next week. This is not the case for all percussive parts (for example, the Bell instrument works perfectly fine as written), but this issue likely pertains only to the drum kit instrument.

The other main part of the implementation that I’ve been looking at is chord diagrams, as there is currently no support for importing these as described in bug #21927. This has effectively been completed, and support has been done for all the previous versions of Guitar Pro, but also the Guitar Pro 6 format also. I have a pull request in for that at the moment, so I would imagine support for that will appear in the repository sometime in the next week or so. There is a possible area of improvement here so I may revisit this, and that’s to do with barre chords. These are represented in the Guitar Pro files with distinct string identifiers with common fret and fingering numbers. In its current state, we do not draw the horizontal line that is sometimes drawn in this case to indicate a barre chord. It would likely be a few minor edits in the way that we paint fret diagrams, so that’s something I can do at the start of next week if we want that drawn in Musescore. It’s largely a matter of taste, so whether or not we want to draw that yet I’m not sure, if any others want that then I’m happy to implement it.

I’ve also spent a few hours debugging the support for the fade symbol at the tail end of this week, which is progressing albeit slowly. The unicode codepoint for the fade in symbol was specified incorrectly which accounted for an absence of anything happening when the symbol was applied to the score, and now we hThe other main part of the implementation that I’ve been looking at is chord diagrams, as there is currently no support for importing these as described in bug #21927. This has effectively been completed, and support has been ave an empty box. The empty box does seem to indicate to me that the font used for drawing symbols in the score does not support that symbol, but certainly this does work in the palette, and I have toyed with the fonts used with no effect, so on reflection I don’t think that can be the source of the error here. On the upside the layout of the “symbol” look to be fine, perhaps there is another codepoint somewhere that needs to be updated. I’ll spend a bit more time on this next week and try to narrow that down.

All the changes that I’ve mentioned that have been done to the GPX format, both this week and I think last week also, are yet to be submitted as a pull request. I’ll do this once the pull request for chord diagrams has been resolved and merged, as there’s a growing number of changes there.

Key tasks that stalled

Support for the fade symbol is somewhat stalling, I’m not sure how long it will take to find the erroneous code point / font / internal representation that is being used. Perhaps the box I’m now seeing is a red herring, but I doubt that’s the case as I double checked the codepoint is now correct in the various places where it’s specified. I’ll spend another hour or two on this this week.

Overview of work for next week

If we choose to have the representation for barre diagrams with the line connecting the common frets/fingers across distinct strings, then that’s something I’ll get working. Another few hours debugging the font issues with fade symbols also has to be done, and then hopefully that will be the end of that. Those aside, I think the next thing to look at will be the issues with the drum kit in Guitar Pro files, both the notes that we use and the playback of those notes. Perhaps that would be a variation on libmscore/drumset.cpp, I’ll need to look into that. Such a change will affect all versions of Guitar Pro import, and it would be nice to have something working for that. It’s quite possible all that will be completed, in which case I’ll either continue on Guitar Pro instrument playback (though I may wait until all drum issues are fixed first), or continue adding support for GPX import in the form of importing dynamics and articulations on notes.