Notational features that are available with open API

• Feb 12, 2019 - 00:22

I am trying to build a new music software and are thinking of using MuseScore API. Can someone please let me know what specific notational features are available with their open API?


Not sure what you mean by API. Do you mean the functions in libmscore within the MuseScore source code on GitHub? This library wasn't really designed as an API to be used by other applications, although of course as open source software, nothing prevents you from it. But there isn't the sort of documentation you woould want for that, nor are there any guarantees these function interfaces won't change over time (in fact, I can pretty much guarantee they will). Anyhow, best way to get familiar with the MsueScore source is to build MuseScore itself, maybe try your hand at fixing some bugs.

In reply to by Max Kryzhanovskiy

MuseScore doesn't offer API in the traditional sense (a public, described interface usable from external software by well defined calls).
Not a single one.
It could do, but that hasn't be the focus until now (one of the reason to not do it is to stay free to do any changes to the MuseScore code without fear of breaking API)

In reply to by Max Kryzhanovskiy

Again, in order to help, we would need a lot more information about what you are trying to do. Like, what does you app do, what kind of information does it have and in what format, how would you propose passing that information to MsueScore, what kind of information would you want to get back, etc. Right now there is simply no way to even begin to guess at how to help.

In reply to by Marc Sabatella

I will also someday be creating my own music software, and i've thought about using the technology that MuseScore uses for the Staff view (displaying the notes with a standard musical staff). One day i would have asked this same question.
Is there anything in MuseScore's code that can be borrowed for the staff notation code of someone else's non-commercial software? IDK if i'll be using Qt, and probably not if their GUI is limited to the most basic elements.

In reply to by harbinger

Qt can create pretty sophisticated GUI's, everything in MuseScore is done using it and we're hardly scratching the surface. But anyhow, in theory you can compile libmscore and use it like a library, but the reality is, it's a moving target and I wouldn't advise it. I'd be more inclined to use it as a standalone converted (eg, MusicXML to SVG or MIDI or whatever). But again, it all depends on what one is actually trying to accomplish, and it's virtually impossible to answer questions like this without a ton more info.

In reply to by Marc Sabatella

Idk what info you need, but the open-source software i will create (one day) will use the standard staff notation techniques that MS does. The user would be able to view the staff, piano roll, audio waveform, and event MIDI all at once for one or more channels. My dreamware would be more of a composition application than a notation software, but i like MuseScore's approach to setting notes and ornaments and i hope to find something good in the code that can be transferred. I will probably end up poring thru the lines of code picking-and-choosing what i might need. I won't be getting into anything deep like tablature, and probably not even chord diagrams, just something simple but professional, at the very least for part extraction.
As far as the GUI, i believe i will be creating my own code for a completely customizable "skin"-based interface, so that devs would be able to create a different look for the build they create for their own software.

In reply to by frfancha

No, this piece of dreamware is the equivalent of art project, but i will have to learn programming (I'm an artist first). But of all the software i've seen and used, nothing is done intelligently and intuitively. So one day, i will sit and start the process of creating only the best composition software ever! :D

In reply to by harbinger

It's still entirely unclear what your program would actually do. Are you proposing, for example, creating a MusicXML file, then invoking MuseScore via the command line to render that MusicXML as a PNG file, then read that PNG file from the disk and display it within a widget in your program? That's certainly doable. But that's the sort of specific information we would need in order to help: "I have an X (musicxml file, data structure in emmroy represented using music21, etc) and I want to use MuseScore turn into Y (PNG file, graphic imagine on the clipboard, a new data structure represented using music21, etc). Saying you want to "transfer something good" doesn't help :-)

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