Implementing more MIDI Controllers

• Jun 3, 2019 - 13:40

Hi all!

First of all, congrats to the developers, and the community.
With such an extraordinary piece of software as musescore 3.1 it is logical for the rest of us (who are not developers) to ask for more :)

I've noticed that currently, musescore's synthesizer implements CC 1 (modulation), 2 (breath), 4 (foot), and 11 (expression) MIDI events under the Dynamics tab.
It would also be very useful to implement CC 7 (Volume) in order to "fake" crescendo/decrescendo dynamics, because for the most of soundfonts and sfz's files this is the only of those five MIDI controllers they understand. This becomes especially important when we use musescore in combination with external VST plugins and samplers (like linuxsampler). For example i have tried to use musescore with VS Chamber Orchestra, (VSCO v2.1.1) without success, as long as dynamics is concerned...

Is this implementation of CC 7, scheduled for a next release of musescore (e.g 3.1.x) ?

Thank you


Perhaps @TheOtherJThistle will comment on this. He's the one who wrote the code to implement Single Note Dynamics, and hopefully my mention sends him a notification to look at this.

In reply to by mike320

I believe CC7 is reserved for use by the mixer to set instrument levels. Perhaps somebody who knows the code better could correct me if I'm wrong. Using CC7 for single note dynamics would effectively break the mixer, unless SND was reprogrammed to account for mixer levels (use mixer value as maximum expression value).

In reply to by s.chriscollins

Well Christian.

Since each instrument operates on different MIDI channels, altering a cc7 value from e.g 40 to 120 of some channel, is like altering Dynamics from pp to ff and stay there. It should not affect other instruments on other channels or break mixer's settings. If we need more than 16 instruments in the score the extra ones could be assigned in a different MIDi port. (The first 16 instruments in Port 0, the next 16 in Port 1 and so on...)

But again musescore may be implemented differently!
I don't know

In reply to by vasmakk

My point is that in MuseScore, CC7 is used by the mixer to control the balance between instruments. For example, if the oboe is too loud compared to the other instruments, you'd use the mixer to reduce its volume from 127 to, say 100. But if the single note dynamics manipulates CC7, you would no longer be able to make such balance adjustments. In other words, CC7 is already dedicated to mixer track volume, so using CC7 also for dynamics would interfere with that.

As a workaround, you can use a MIDI routing program such as MIDI-OX or QMidiRoute to transform CC2 events (or whatever CC you set in MuseScore) into CC7 for your external MIDI sources.

In reply to by s.chriscollins

Oh, now I see!
Thank you for clarifying this...

By the way, I use QMidiRoute very often, when for example, I route MIDI events from musescore to software samplers and synths, in order to eliminate the annoying "Program Change" that musescore's instrument tracks always send initially ... But the fact that QMidiRoute could also, transform MIDI events, never crossed my mind. :)

This is not just a workaround. This is the solution, to my problem.
Thank you once more for this tip Chris!

Being able to add other midi messages in musescore could be useful too.

CC#5 = Portamento Time, CC#65 = Portamento ON/OFF , CC#71=Timbre/Harmonic Intensity, CC#72=Release Time, CC#73 = Attack time, CC#74 = Brightness, CC#75 = Decay Time, CC#76 = Vibrato Rate, CC#77 = Vibrato Depth, CC#78 = Vibrato Delay, CC#91 = Reverb Send Level, CC#93 = Chorus Send Level.

It would enable to have more control of the sounds coming from a General MIDI synth.

I don't know if Fluid or Zerberus respond to these MIDI messages but my Yamaha DGX-640 does.

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