Guitar harmonics in tablature: I'm interested in working on this

• Mar 28, 2021 - 12:49

I'm relatively new to MuseScore, with my first score recently completed and a second in progress. Both are works for solo guitar, and the second one relies on an open tuning and makes extensive use of harmonics from the first (12th fret) through the fifth (fret 3.2), on several strings. I know that a decent mechanism for notating harmonics in tablature has been an open feature issue for MuseScore for almost six years (https://musescore.org/en/node/81366), and I'm finding the "workaround" (hide tablature number, superimpose brackets and text on top) to be close to unusable with this many of them. I apologize for gratuitous complaining, but this capability is a basic requirement for virtually all solo guitar music I've seen, certainly almost everything I play, and it seems like it really shouldn't be that hard to add in. It's a snap to do in GuitarPro (click on tab line, type number, click on harmonic symbol in the palette, and the tab symbol changes with notation magically adjusted to the correct pitch).

Anyway, I'd be interested in contributing to the implementation of this feature, but I'm very much a beginner when it comes to this or any other open source project work. Is there anyone who could point me in the right direction to get started? Plug-in or mainstream feature? Anyone else interested in this who'd want to collaborate on it? As far as the user interface goes, I'd like to make something comparable to the way GP does it, because for all my other problems with the limitations of that software, the harmonics mechanism is a thing of pure beauty.

As I said, I'm definitely a rookie to this kind of development, though not to development in general. I was a college professor in CS for 15 years, having escaped academia about a year ago. Lots of teaching of undergrad classes, but no time to do any "real" work on the side, meaning I'm clueless about the details of real-world packages but reasonably fluent in multiple programming languages and a quick learner. I spent a couple of hours trying to work through the project documentation, but honestly I found it pretty overwhelming. I will probably develop more confidence as I get in to it, but right now, I'd be much more comfortable not flying solo.


Comments

Great, welcome! To get started, we usually recommend checking out the Development page in the Contribute menu above. You'll see a whole ton of useful info there. Maybe that's what you mean when you say it found it overwhelming? Did you manage to get a build environment set up and working? If you need help with that, best to ask on the chat. Note some of the documentation might be a little out of date or incomplete as we are in the process of moving from Telegram to Discord for chat, so be sure to ignore references that might still exist to Telegram (or, even more out of date, IRC). Also the build process for MuseScore 4 is a bit of a work in progress as I understand it, so there might be some out of date info there as well.

In reply to by Marc Sabatella

Thanks. Yes, the mountain of Development resources was the first source of my "overwhelming" comment. Spending a fair bit more time studying it will help, and honestly, I'm just starting to think about this. Sadly, C++ is one of those skill sets that accumulated a lot of rust from the years in academic life, but this is as good an excuse as any to polish them. Right now, I'm trying to learn my way around the data structures involved in a score+tab, how that connects to the graphical presentation, and what I'd need to do to add this to one of the palettes. Perhaps even a specialized "guitar" palette (though my ambition doesn't go anywhere near the specialized feature set of GP). I'm not sure whether I should be shooting for development of a mainstream feature or a plug-in. What would you recommend? I'm newbie enough that I'm not quite sure what is meant by a "plug-in" in the MuseScore context, though I'm pretty sure it isn't the same intuition I have from, say, Eclipse development.

In reply to by jhelasseter

Definitely what you're describing should be a core feature. It might somehow be possible to "fake" with a plugin - basically to automate the workarounds you already know - but it seems to make sense to have it built in. A plugin is basically a script (in QML) that is loaded dynamically into MuseScore and run on command, and it has access to "some" of the data structures but not all, and "some" of that access is read/write but not all (some is read only).

FWIW. my general feeling is that the specific programming language is not particularly important in coming up to speed on a new project, it's more about understanding the processes and then the data structures and overflow control flow of things. That's the hard part. Once you have a sense of that and can see where the changes you'd need to make are, actually writing the code is usually the easy part, or at least the part that instantly starts to feel familiar even if the language isn't.

Do you still have an unanswered question? Please log in first to post your question.