Igevorse Otonnoleare

Let's improve Instrument Change and add MIDI Actions

03 August 2014 | 11:40 pm

Overview of work this week

In short:

  • Implemented automatic control over ALSA ports number.
  • Implemented import/export of musicXML files.
  • Started working on MIDI Actions and improving Instrument Change element behavior.
  • Bugs fixed.

I wanted to become working on JACK MIDI In this week, but was surprised: it was already working!

I finished implementing import and export port/channel information to musicXML format. Since MuseScore does not fully support this file format, my implementation is not full too. But never fear: it works well. As my mentor said, musicXML is a large standard and there is no full implementation of it in any score writer. Also I've done some research and realized that bww, md and cap file formats do not allow saving ports and channels (write me if I am wrong).

Even if we don't have ALSA MIDI Out working, we should keep in mind it. That's why I changed part of code that refers to registering ports and added a support of automatic port creation if MuseScore need it (I made a similar work for JACK ports last week).

Thanks to pedroseq for his comments, he gave me ideas about implementing new features. In first, there is an idea about improving Instrument Change Element. Now when we add this element to staff it creates a new instrument and adds an item to mixer. If we have several instrument changes from Flute to Piano, we'll get a lot of different items in mixer for the same instruments (Flute, Piano, Flute, Piano ...). The idea was to combine same instruments to have only two items in the mixer: Flute and Piano. Described behavior (not combine) maybe considered as a feature: you can set volume, pan, chorus and reverb separately for each instrument. But we decided that new behavior might be better: Staff-text and System-text elements already combine channels, let's do the same with Instrument Change. My implementation is almost done: channels combine successfully, but I have to solve some side problems: for example, "mute" and "solo" options do not work properly now.

Another idea is adding MIDI Actions to all instruments (now we can send MIDI Actions only for Aeolus). MIDI Actions would give us an ability to send MIDI Actions to internal and external synthesizer at some point of time. It is not about music notating, but it affects the sound of score: you can add a portamento, then remove after 5 measures, you can change pan/chorus/reverb, change release time or modulation settings. Since internal synthesizer does not support all midi messages, it's better to use an external one. MIDI Actions have a great potential and implementing it can lead to a big changes in MuseScore. Maybe it will ever have an automation tracks for the midi parameters: volume, pan, chorus...

Key tasks that stalled

All is well.

Upcoming tasks this week

Check JACK implementation for possible bugs.

Finish implementation of MIDI Actions (although I'm not sure I'll finish it in one week).

Finish improving Instrument Change element.

Implement import ports and channels from gtp*, mgu and ove formats (not sure last two support it).

As usual, you can find me on IRC #musescore as igevorse.

Feel free to write me about implementing some JACK-related features that you need and want.

« Assigning channels to instruments:… · Let's improve Instrument Change and add MIDI Actions · Fixing bugs is also important »

Leave your response!

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