Does Musescore have a callable interface; how severable are pieces?

• Jan 17, 2017 - 22:34

I am using Musescore to clean up songs and output midi, then want to use them on a Raspberry Pi (3B) system that displays music at a piano. The piano has a Midi interface, and I have a working version of this already using TSE3 as a library and just playing MIDI output. The idea is this is a way for a student to hear the (if somewhat mechanical) timing of a piece while learning to play it, and slow it down, replay measures, etc.

Musescore as a whole runes too slowly, plus I want something integrated with the rest of this system (which is in turn integrated with Calibre as a library for example).

What I would really like to do is JUST put up the score (from a musescore file, not midi) in Musescore and let it play - no editing or other complexities, and see if I can thus prune it down to where it can run with adequate response.

Some brief reading makes me think this is unlikely - it looks like most API related info is for doing additions on top of Musescore, not the reverse. I suppose I could take the source and start pruning away, but before even heading down that route....

Would anyone who is familiar with the code offer a suggestion? Is this even a viable way to get a music display synchronized (e.g. showing bar at a time) with midi playback? Better alternatives to suggest?

Incidentally I'm not asking about playing midi from musescore, I've got that working in a variety of favors. What I'm really asking about is just the functionality of opening a file, displaying the score, and playing it, and trying to prune down the memory and processing overhead where it may work OK on a Pi (right now it works, but really poorly, and throws a few failures such as memory allocations).

Thanks in advance,

Linwood


Comments

In reply to by musikai

So... you're talking about using the web player? I'd have to see if I could play midi with that, do you know if the source is available?

A lot of the music I have, I don't have rights to share, so would not be able to upload it to play, I'd have to adapt the web player. Not adverse to that, looking briefly in debug didn't see any obvious pointer to a web open source javascript/jquery player, I'll look more thoroughly in the morning, but if you have a pointer...?

In reply to by Jojo-Schmitz

You can upload and mark private, so only you can see them
I appreciate knowing that, but I really do not want my personal music library in someone else's library, at least when it cannot be shared due to copyright. I have no good reason, but am in-house solution.

In reply to by Ferguson

You are not sharing with anybody if you mark it private and not from there make it available to other individualy by either sending them a secret link or adding the score to a group. Both is under your control.
Provided, of course, you trust the webmasters of MuseScore.com...

In reply to by Jojo-Schmitz

It's not really so much about trust (since someone stealing a song doesn't diminish me as I still have it), so much as just another complexity and overhead and potential performance issue that I would prefer to avoid in the application I am building.

In reply to by musikai

Thank you, I will go through those, though a brief look at abcweb didn't make it obvious it can do sequencing of midi output. I don't need to use midi input (though that was my original plan), but I do need it (or something it's connected to) to generate midi output. In some brief looks through jack I see how to route midi to synthesizers to get wav (etc) output, but I don't see anything that goes in reverse. I'll dig a bit further and see what's under the covers.

The reason it has to be midi is this isn't an electronic piano, but one with a player system that only takes midi signals as input. Yes, I could play through a speaker when demonstrating like this, but that just seems... wrong, given the player piano is just sitting there.

My other issue is that the idea in the program is this is invocable by a user, i.e. think "I'm playing and practicing, and want to hear this phrase played for me" they hit a button, and indicate the phrase and the piano plays. The problem is speed -- the Pi is VERY slow. I just tried opening Firefox with nothing else going on, and it was about 7 seconds to just get a blank screen. Compiling in another QT widget is under a second to open a new window. That's why I was hoping a portion of Musescore that did display and output sequencing would be severed and called.

More digging required. Thank you.

In reply to by Ferguson

If your raspberry pi can run android, you can install the MuseScore Songbook app. I will load MuseScore files from the file system, play them back, you can change tempo and depending how you set up your file, mix the left and right hand. The app is not open source though.

Note that several people have run MuseScore on a Pi and were ok with the performance. Did you try? In any case, display and playback are the two CPU bounding thing in MuseScore... so removing the rest will not do much.

In reply to by Nicolas

I haven't seen android on the Pi yet, it may be, but I've done all the work so far for running ubuntu there. And I don't want a closed source answer, this is partly for learning and fun.

Thanks for the thoughts. I have run Musescore on the Pi, and it's not too bad once it gets going, but starting is really slow, and memory is going to be tight if I'm running it in parallel with my own application (which displays sheet music for play, and has nice big caches to turn pages quickly). The bigger issue is coordination -- I really wanted to drive all this from one user interface (i.e. mine) and not have someone have to learn two. Musescore does not seem to have much of a "perform" mode, where it handles page turns gracefully for someone playing from the visual notes (as opposed to Musescore itself playing). To do page turns for a performer, you want to get the next page up on an opposing display fast, but leave the current page up for a few seconds so you can finish up. There's also a page turn pedal that needs to be part of it (though I can probably make that work with Musescore since it just sends keyboard strokes that are somewhat programmable).

What I may do is just bite the bullet, build Musescore from scratch, and start wacking pieces off I do not need, and try to get it down where I can call parts of it instead of a menu, and see what it looks like. At worst I waste a few days learning a bit about the inner workings.

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