16384+12 seems correct for (inverted) 31250 but should it BE inverted and why 16384+3313? (I don't know MIDI...)

Can you do a standard baudrate like 9600 and verify that data is coming out by using a terminal program?

The 16F628 does have UART so HSEROUT will work with it. I'd try that but you might need to invert the signal externally.