Sounds extremely frustrating indeed.
I’d suggest breaking down the communication issues to 3 parts:
Carrying the Signal
On sending, try using a MIDI monitor to verify that the Pyramid is sending the correct MIDI data. I use MIDI Ox sometimes, other times I just use a software sequencer to record Events and then scroll through them on the Event Editor. Are you using the Track options to set the MSB/LSB & Pgm, or creating CC events? If you haven’t tried both techniques, try them both independently.
On carrying the signal: have you tried different MIDI Cables? Are you using USB and if so: is it going through a hub? (note: remove all possible extraneous elements from your troubleshooting procedure)
Receiving: Is the receiving device acting as expected when it receives the verifiably correct MIDI data from a different source, ie try sending the same data from a different device/source. Also: are you running the latest OS on the MP7? (A quick scan of the OS release notes for the MP7 indicate there was possibly a related issue pre OS v1.10, but that’s a quick scan only and probably a moot point)
That should get you started, or at least may bring some info to light until someone has a more educated response.
In revisiting this issue in my own rig I think I remember my issue with the Pyramid sending MSB/LSB: When the Bank, or, say, just the MSB, does not change, the Pyramid does not send the new bank info. My receiving device at the time required the Bank AND PgmChg msg to select the correct combination, if I remember correctly. (I can search back in my notes to verify my exact issues and steps to resolve, but I have a stable workaround and not looking to resolve anything on my own rig on this issue)