Plugin development for beginners
Hello, I have an idea for a plugin for Musescore that automatically converts a given "song" into its negative harmony equivalent. I have a fairly good formula to do it manually, but it would be nice to make it a plugin. The problem is that I've never coded anything before in my life. It would be nice to learn how, but I have no idea where to start/if this would be a reasonable first project.
Any advice would be much appreciated!
Comments
>The problem is that I've never coded anything before in my life.
The MuseScore plugin language QML integrates Javascript/ECMA in it.
To see if you'd be comfortable programming at all you could look for a site that teaches the basics of Javascript.
Google for "javascript coding for beginners" and give it a whirl.
The full docs for QML language are here on the QT site here:
https://doc.qt.io/qt-5/qmlapplications.html
But that may be way too much to chew on.
-Dale
I think the most helpful advice is look at plugins that have already been made! If you can loosely follow along with their logic you can just copy the parts you want and change the parts you need to for your purposes. The preinstalled plugins and the one's listed on the Plugins page are pretty damn well-structured, meaning you can just edit certain parts of them and it'll feed that through the whole plugin nicely.
Obviously it helps to kinda know what you're looking for and you DEFINITELY need to have an idea of common coding conventions (dot notation, naming conventions, functions, etc...) but if you're passionate you can get up and running with some online javascript guides :)
In reply to I think the most helpful… by Gabriel Klavans
Speaking as a long-career software engineer, I'd say that if you've "never coded anything before", no matter how clever you are, the chances of your understanding the stack of malarkey which is QML on top of Qt through Javascript to MuseScore internals is very, very small. Merely understanding what Qt is requires a certain level of software architecture sophistication. It is all extremely complicated, in particular, knowing which document or resource or level you should be talking to, and figuring out how to debug it. If you were an experienced javascript programmer, I'd say otherwise, but I'd agree with Dale that "this is too much to chew on" for a person not a professional programmer. I speak as the author of several recent plugins.