Igevorse Otonnoleare

Project summary

19 August 2014 | 12:50 am


I want to say thanks to my mentor Nicolas Froment (lasconic) and MuseScore community for the help and answering questions. Thank you for your contributing and evolving MuseScore, it is a great project! Also thanks to Google, due to GSoC I made my first contributing steps in the world of opensource.

It was a long journey to the world of code, it was very interesting and fascinating to dive into unknown code, to make a research in unknown areas, to invent new approaches and to create something new. New code, new features, new possibilities and new happy users. Sometimes new bugs too Laughing.

I hope my work was useful for the community, developers, users and the future of the project.

What I've done

Here is a list of features I've implemented while participating the GSoC 2014:

  1. JACK MIDI Out support (PR)

    This feature gives an ability to send MIDI events to one or several external synthesizers or VST plugins.


    • More realistic sound of score.
    • Adding realtime midi effects to the sound.
  2. JACK Transport (reposition) (PR)

    We provide current position in frames (samples) to JACK Transport, keep an eye on it and seek if position changed.


    • Seeking to some position in MuseScore causes seeking in all applications (audio/video players, DAWs, etc).
    • Seeking in any application connected to JACK causes MuseScore to seek.
  3. JACK Timebase Master (commit)

    Being the Timebase Master application could provide bar (measure), beat and tempo information to JACK.


    • Sync other applications working with midi to MuseScore, managing tempo.
    • More control over JACK Transport (not just seek, but slow down/accelerate).
  4. JACK Timebase Slave (commit)

    As a Timebase Slave we can read information about bar, beat and tempo and sync to any application connected to JACK as a Timebase Master.


    • More control over syncing to another application.
    • Adjusting tempo in real time to application / external automation tracks.
  5. Changing JACK preferences without restart (commit)

    This feature gives an ability to enable/disable JACK parameters like "Use JACK MIDI Out", "use JACK Audio" or "Become a Timebase Master" without restarting an application.


    • No need to restart MuseScore if you want change preferences related to JACK.
  6. Restoring JACK connections (commit)

    Now we can save audio and midi connections to other applications on exit or changing preferences and restore it when you run MuseScore again.


    • You don't need to connect all things again manually.
  7. Automatic control over JACK/ALSA MIDI Out ports (Upd Nov, 29: merged) (PR)

    This feature allows MuseScore to determine how many JACK MIDI and ALSA MIDI ports it should have and automatically add/remove ports when needed.


    • No need to manually control port number.
    • One more step to implementing ALSA MIDI.
  8. Assigning channels to instruments (not merged) (PR)

    With this feature users can assign any midi port and channel to instruments.


    • Channel information wouldn't be lost if you add new instrument, reorder staves or change midi program.
    • Better control over midi subsystem (you can even assign different ports for each instrument).
    • Ability to "compress" number of channels by assigning the same channel for a several, for example, piano staves.
    • Enhanced abilities to import and export scores (implemented import channels from *.ove, *.gtp*, import/export to *.mcsx, *.mscz, *.midi, *.mxl).
  9. Improved Instument Change element (not merged) (PR)

    Several Instrument Change elements with one midi program are "joined" together and shown as a single item in mixer.


    • No excess items in mixer (particularly important for big and complex scores).

Also, there were a lot of bug fixes, related and not related to JACK, improvements of UI, code optimisations and other things.

What's next

I have to test the last two features in the list and fix the bugs. Also, I promised in my blog to improve MIDI Actions, so I have to implement it too. The bad news is that I have a little time: my next university semester starts at September, but I'll try to implement these features in my free time.

But anyway feel free to ask me about my work or write me about bugs in IRC igevorse or via email: igevorse /at/ gmail.com



« 'Assigning midi channels' feature… · Project summary · Using MuseScore 2.0 with VST… »

Leave your response!

Style `onWall HashCode` by Lited & Sayori
Get your own blog immediately for free with Lited!