I have a midi, in the last half of it on second track all Note ON have zero velocity.
However windows happily plays them and the song sounds good, the notes definitely should be played.
I wonder what can make notes play when velocity zero? There must exist some messages that can make a midi player play them regardless of note velocity..
Btw. There is no GM2, XG or GS reset in the file.
The player I use ignore Control Change messages with the first byte being 0x0B (Expression). If I let them through to windows, the notes with zero velocity are not played anymore.
Very confusing.
Nevermind, I figured it out. The velocity was not zero, it was channel volume that was set to zero. So for some reason, the maker of the midi didn't want those notes played even though its incomplete without them.
But I still wonder why an absence of expression messages would make windows play them when channel volume was set to zero..
Hello,
I don't think there is anything 'wrong' with the file at all.
However...
The file is clearly intended for use with some specialised equipment, some sort of Pipe Organ Project, and it way well NOT be intended to work with any 'normal' midi equipment.
The file contains a LOT of SysEx data, exactly what this is doing, I don't know. You'd need to investigate the specific device and work out what the SysEx data is for before you'd have much chance of fully understanding the normal midi data. The SysEx data will, I'm sure, be exclusive to the specific device, and may well do nothing, or unpredictable things, on anything else.
Regarding the MIDI 'ON' events with zero velocity', please note that such events are perfectly normal and indicate 'Running Status'. You should look up 'Running Status' in a stream of midi data. Such a command is treated as 'Note OFF' and is used in place of a real 'Note OFF to maximise the use/benefit of running status.
Geoff