MuseScore and Emscripten

Updated 6 years ago

libmscore ported to the browser using Emscripten

Google-Melange public project page: project page
Original Proposal: proposal
Git Repos:

  • libmscore port: Repo
  • EmbindGenerator script: Repo
  • Sha of last MuseScore commit, before branching: f9f8462d96

Documentation (how to set up libmscore with emscripten): here
Progress Log (archive): log

Google Summer of Code wrap-up/summary

You can find documentation on how to set-up your environment to begin using libmscore in Javascript here .

All of the work of getting emscripten to compile the libmscore code itself is completed and documented, even if all of that code isn't fully usable yet. This means that others should be able to reproduce the process of compiling libmscore to Javascript. If anyone attempts this process, I welcome all feedback so that I might improve it.

It is important to note that porting future versions of libmscore to emscripten (that is, versions of libmscore which now use qt5), will require additional work of first porting qt5 to Javascript. As of the time of writing, I'm not aware of any initiatives looking to complete this task. Qt5 was only fully "released" just over a year ago, and MuseScore itself did not make the complete switch over until just the past summer, so I think with time this task will be realized. From there, the process of porting over libmscore would follow a process very similar to the one I outlined for versions of libmscore using Qt4.8.

While I did not complete all of the goals outlined in my original proposal, libmscore is at a point where it is possible to load a simple score into the browser and verify some of the metadata. From here, it's a matter of debugging the remaining issues and exposing more libmscore functionality to Javascript. My hope is that outside of GSoC I can continue working on this project so that I can accomplish the goals outlined in the original proposal. I feel I am very close to those goals. I hope that someone more experienced with Qt5 will take up the task of porting Qt5 to emscripten, or perhaps maybe I could take up the task myself down the road. With Qt5 ported to emscripten, I still see many benefits of getting newer versions of libmscore to work in the browser. I would like to see that become a reality.