It’s the Virus! It just happened again, and I was able to try another MIDI device to confirm that the Octopus was sending the correct messages. I rebooted the Virus and it disappeared, too. It is pretty weird behavior: non-overlapping notes play fine but legato notes it drops every other note message, whether on or off, so you get missing notes or hanging notes depending on note length (that’s a simplification but is pretty close to exact). And I’m not talking about as a sound module, I was just feeding it into Max and printing note messages.
I’m relieved that it’s not my Octopus, that it’s something I can work around with another MIDI interface, and that it seems to be solved by a quick reboot. That’s three kinds of relief.