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.
