In the latest version, duration is always zero. I have tried doing time analysis first.
smf::MidiFile midi_parser(in);
midi_parser.linkNotePairs();
midi_parser.doTimeAnalysis();
In the loop:
if (event.isNoteOn()) {
double duration = event.getDurationInSeconds();
double start = event.seconds;
int pitch = event.getKeyNumber();
log("NOTE ON %i, %f, %f", pitch, start, duration);
} else if (event.isNoteOff()) {
log("NOTE OFF %i, %f", event.getKeyNumber(), event.seconds);
}
Sample output:
NOTE ON 49, 272.571792, 0.000000
NOTE ON 53, 272.571792, 0.000000
NOTE ON 56, 272.571792, 0.000000
NOTE OFF 49, 275.013760
NOTE OFF 53, 275.013760
NOTE OFF 56, 275.013760
In the latest version, duration is always zero. I have tried doing time analysis first.
smf::MidiFile midi_parser(in); midi_parser.linkNotePairs(); midi_parser.doTimeAnalysis();In the loop:
Sample output:
NOTE ON 49, 272.571792, 0.000000
NOTE ON 53, 272.571792, 0.000000
NOTE ON 56, 272.571792, 0.000000
NOTE OFF 49, 275.013760
NOTE OFF 53, 275.013760
NOTE OFF 56, 275.013760