Something in sketch blocking incoming MIDI data

I haven't timed the loop, but the DSP modeler only sends program change data when a new memory location is chosen. In normal use that's once every couple of minutes. If one spins the rotary encoder used to select presets the DSP box sends nothing until the encoder stops turning. Changing to 115200 made no change in behavior.
I'm not making two serial reads; one port reads MIDI, the other port write MIDI.

As I said in my original post, I'm using the MIDI read block of code in an earlier, simpler sketch and it works as it should. See below.

// midi_ab-box_C3
// machambers 4/25/2025
// for Arduino UNO w/ Sparkfun MIDI Shield
// added the transport information per AltPinSerial example
// adding code to use the 3rd button to store PC# to see if there is an issue using a long button press
// sketch works; it stores the incoming program change to programB
// modified the sketch to store to programA or programB; sketch works
// needs state-change debouncing

#include <MIDI.h>
#include <SoftwareSerial.h>
SoftwareSerial softSerial(8, 9);
using Transport = MIDI_NAMESPACE::SerialMIDI<SoftwareSerial>;
SoftwareSerial softSerial2 = SoftwareSerial(10, 11);
Transport serialMIDI(softSerial2);
MIDI_NAMESPACE::MidiInterface<Transport> MIDI((Transport&)serialMIDI);
MIDI_CREATE_INSTANCE(SoftwareSerial, softSerial, midiA); // TX
MIDI_CREATE_INSTANCE(SoftwareSerial, softSerial2, midiB); // RX
byte ledPin[] = {5, 6, 7}; // list of led pins
int Status = 1; // LEDs off enable
byte programA = 18;
byte programB = 76;
byte program;

void setup() {
  pinMode(4, INPUT_PULLUP);  // Rig A, left switch
  pinMode(3, INPUT_PULLUP);  // store, middle switch
  pinMode(2, INPUT_PULLUP);  // Rig B, right switch
  pinMode(5, OUTPUT); // yellow LED
  pinMode(6, OUTPUT); // green LED
  pinMode(7, OUTPUT); // red LED
  Serial.begin(9600); // for debugging
  midiA.begin(MIDI_CHANNEL_OMNI); // listen on all channels
  midiB.begin(MIDI_CHANNEL_OMNI); // listen on all channels
}
void ledOffAll() {
  for (int i = 0 ; i < sizeof(ledPin); i++) {
    digitalWrite(ledPin[i], HIGH);
  }
}
void loop() {
  if (Status == 1) {
    ledOffAll();
    Status = 0;
  }
  if (digitalRead(4) == LOW) {
    ledOffAll();
    digitalWrite(6, LOW);
    midiA.sendProgramChange(programA, 1);  // E3 (JCM-800)
    Serial.println(programA);
    delay (200);
  }
  if (digitalRead(2) == LOW) {
    ledOffAll();
    digitalWrite(5, LOW);
    midiA.sendProgramChange(programB, 1);  // T1 (modified rig)
    Serial.println(programB);
    delay (200);
  }
  if (midiB.read()) {
    byte type = midiB.getType();
    if (type == 0xC0) { // Check for Program Change (OxC0 = 192 decimal)
      byte program = midiB.getData1();
      // Serial.println(midiB.getData1());
      Serial.print("Program Change: Program=");
      Serial.println(program);
    }
  }
  if (digitalRead(3) == LOW && digitalRead(4) == LOW) {
    digitalWrite(7, LOW);
    programA = midiB.getData1();
    delay (200);
  }
   if (digitalRead(3) == LOW && digitalRead(2) == LOW) {
    digitalWrite(7, LOW);
    programB = midiB.getData1();
    delay (200);
  }
 }