[Ardour-Users] MIDI program change

Will J Godfrey WillGodfrey at musically.me.uk
Sat Nov 22 14:06:19 PST 2014

On Fri, 21 Nov 2014 14:35:35 -0500
Paul Davis <paul at linuxaudiosystems.com> wrote:

> On Fri, Nov 21, 2014 at 2:33 PM, Will Godfrey <willgodfrey at musically.me.uk>
> wrote:
> > I'm still very new to working with ardour so it's quite possible I've
> > missed
> > something and this is noise!
> >
> > When I import a MIDI file that contains a mixture of bank and program
> > changes,
> > program changes only seem to work correctly if they are preceded by a bank
> > change. If I don't do that Ardour seems to decide to send a bank change to
> > bank
> > 0, which then means the right program number is selected but from the wrong
> > bank.
> >
> > I don't know of any other sequencer that does this, and hardware and
> > softsyths
> > that I have used all seem to be happy to use whatever bank was last
> > selected
> > for future program changes.
> >
> You'll need to provide a lot more context and information for us to work
> with to be able to help.

Ok, I've found out the cause of the problem, but not how to get round it.

The original file was created on (I think) a Kerzweil synth. This sends bank
changes on controller 0 (MSB) only. That's not a problem for Yoshimi as we made
this switchable. Also, Rosegarden and Muse simply send on what they are given
so I never really thought about it when I used this file.

Ardour it seems sends the bank change as given, but then stores it somewhere as
LSB+MSB. As LSB was never set it is zero, but I suspect this combined value is
turned into an integer. The clue here was that it shows a high value in the
track window. which is the actual number x 128 + 1 (I notice you add 1 to all
bank numbers for display).

Using a MIDI sniffer, it seems from then on every time there is a program change
Ardour also sends a bank change (why?) However, I guess somewhere along the
line the value is truncated and as a result zero is sent, for both MSB and LSB
- that's what it looks like. It doesn't matter whether I have Yoshim set for 0
  or 32, if the file doesn't send a bank change before a program change a zero
  one is generated.

I tried to find a way to edit the controllers in Ardour but couldn't work out
how to do it. Can someone give me a pointer please?

A long time ago I researched this very issue trying to get hardware synths to
talk to each other and found there is just about every conceivable combination
of those controllers used :(

It wasn't me! (Well actually, it probably was)

... the hard part is not dodging what life throws at you,
but trying to catch the good bits.

More information about the Ardour-Users mailing list