The volume adjustment feature seems to be adjusting more than just note-on commands; other commands are also being adjusted, including note-off, control change, and pitch bend. It appears to be changing the second data byte (that's the third byte if you include the status byte) of every three-byte command.
The obvious effects of this are greatly reduced volume (due to CC#7 (Volume) and CC#11 (Expression) being too low), instruments being panned more to the left (due to Pan (CC#10) being too low), and instruments being flat and possibly out of tune (due to pitch bend being too low).
For reference, the status byte of a note-on command has 9 as the high nibble and the channel number (starting at 0) as the low nibble, so note-on status bytes range from 90 to 9F (in hexadecimal).
I don't know how much you know about MIDI, so in case you're unaware, here are some facts that you should know:
- A note-on command with zero velocity is actually treated as a note-off. Because of this, if a note-on command's velocity is not initially zero, then if adjustment would change it to zero, it should be set to 1 instead. Also, zero-velocity note-on commands should not be adjusted. (This is true only of MIDI 1.0; the recent MIDI 2.0 does not have this quirk.)
- Typically, velocity is proportional to the square of the volume, not the volume itself. In other words, if the note's velocity is multiplied by x, then the volume of that note is multiplied by x times x. If you want volume response to be linear, then multiply the velocity by the square root of the volume (assuming the max volume is 1). So, for example, if you want a note to play at half volume, then instead of multiplying its velocity by 0.5, multiply it by the square root of 0.5 (about 0.71) instead. (This volume response curve is also usually true for CC#7 (Volume) and CC#11 (Expression).)