[SOLVED] Issue with result of MidiMessageSequence::extractMidiChannelMessages

It seems that your ExportToXmlFile may have some kind of issue (maybe it's reading some uninitialized memory) as I cannot reproduce your problem. I've tried to reproduce your problem with the following program (most of it is the code you posted above):


int main (int argc, char* argv[])
{
    if (argc != 2)
    {
        std::cerr << "Please specify at least one argument" << std::endl;
        return 1;
    }
    MidiFile midi;
    if (ScopedPointer<FileInputStream> input = File (argv[1]).createInputStream())
    {
        if (! midi.readFrom (*input))
        {
            std::cerr << "Error reading MIDI File" << std::endl;
            return 1;
        }
        int midiTracksCount = midi.getNumTracks();
        if (midiTracksCount == 1) //for MIDI format 0;
        {
            const MidiMessageSequence* TrackSequence = midi.getTrack(0);
            MidiMessageSequence mmSeq = MidiMessageSequence();
            int midiChan = 2;
            TrackSequence->extractMidiChannelMessages( midiChan, mmSeq, true);
            for (int i = 0; i < mmSeq.getNumEvents(); ++i)
            {
                MidiMessageSequence::MidiEventHolder* event = mmSeq.getEventPointer (i);
                if (event->message.isNoteOnOrOff())
                {
                    std::string eventType = event->message.isNoteOn() ? "On" : "Off";
                    std::cout << "Note " << eventType << " ["
                              << event->message.getChannel() << "]: " 
                              << MidiMessage::getMidiNoteName (event->message.getNoteNumber(), true, false, 3) << std::endl;
                }
            }
        }
    }
    else
    {
        std::cerr << "Unable to open specified MIDI file" << std::endl;
        return 1;
    }
    
    return 0;
}

You can find the complete source file here. I tested the code with this MIDI file.