[LAD] MIDI program change

Len Ovens len at ovenwerks.net
Sat Sep 4 00:29:06 CEST 2021


On Fri, 3 Sep 2021, Will Godfrey wrote:

> I've been trying to get hold of information on MIDI-2. So far I've only got
> overviews and limited data format info. But one thing I saw today was
> definitely a YES! moment.
>
> For years, I've been battling against DAWs and sequencers that insist on
> generating bank messages when none were sent, and then almost always set it to
> Bank MSB=LSB=0.

It is somewhat spelled out for (n)rpn... sending any one byte out of the 
two (MSB LSB) should just affect that one part of the value. But then they 
go and say: best practice is to always send a full four event message. So 
assume the same with program/bank. However, consider that from the start 
of segment of recorded material the bank and program values have to be 
initialized to something. So 0/0 it would be. So the controller (keyboard 
or whatever) sends a program change when asked and that gets recorded to 
the segment. Now on playback, the program message is sent but for best 
practice the bank is also sent.

> The MIDI-1 spec was never 100% clear on that, but the MIDI-2
> one says exactly what I've maintained all along. When sending a program change,
> bank change is optional! It is perfectly valid to want to change instrument on
> the same bank, and indeed all the hardware synths I've ever owned work in this
> way.

Really this does not help at all. Optional just means the DAW/Sequencer 
may or may not send the bank at the same time as program. There is still 
the problem that if the DAW chooses to optionally send the bank and 
program, the bank will be whatever the default value is unless it is set 
otherwise. Really, best practice is that the musician sets both bank and 
program as the first events in a segment.

I can't think of a better way even though my "master keyboard", an old 
DX7, only sends on channel 0 (or 1) and only seems to understand program 
change and no banks. Assume for a minutr that the DAW/Sequencer does not 
send a bank unless there is a bank event recorded. The musician moves on 
to another project and sets the synth bank for that. Then when going back 
to work on the first project the bank is still miss-set. Better for the 
musician to make sure both bank and program are properly set. It is great 
that MIDI allows products from various manufactures to operate together, 
not so great that some controllers always send bank and others do not 
because it is optional.

What MIDI 2.0 does offer, is ability for the DAW to find out from the 
synth information like bank that may be useful. MIDI 2.0 is bidirectional 
not only physically but as a protocol as well.


--
Len Ovens
www.ovenwerks.net


More information about the Linux-audio-dev mailing list