Many thanks to you both for the comments - much appreciated :-)
I guess my setup may seem kind of strange - not having any midi expertise, or much reference material that I could get my head around, this was the simplest way I could get this working...
To answer a couple of questions first... :-)
Yep - I do have different sound fonts for the (up to) nine synths - each has different volumes - as mentioned I regularly mix two or more together at the same time - e.g. Grand Piano and Warm Pad, and possibly throw in a separate strings as well - my understanding was that yes, a single synth could do a single instrument, but it couldn't play multiple instruments at the same time? Either way, I do have different sound fonts running anyway...
Basically my python program (I think?) is already acting as a midi router - as it connects / disconnects to any of the nine synths from a single keyboard input, I think its basically doing the same thing?
So, in QJackCtrl, you can see the keyboard, and this is connected to the input of my program 'MidiChooser'. Then MidiChooser output connects to one or more syth inputs.
Inside my program, I capture each midi signal, if necessary transpose it and push it out to the output.
(I've also got individual buttons which are linked to playing mp3s of ambient pads in all the different notes just for good measure)
I had spotted CC 7 previously, but I thought that was a master volume - i.e. that it would affect all synths, not just an individual synth - or is this inherent with the way I've gone around the problem - in that you can't specify a specific synth and volume?
May sound daft, but do you have an example of the mid message? basically the bytes that need to be sent?
Hope that makes sense...