MidiEvent noteOn, noteOff = null, nextEvent;
MidiMessage nextMsg;
ShortMessage shortMsg;
+ ArrayList noteOns, noteOffs;
for (int i = 0; i < tracks.length; i++) {
+ noteOns = new ArrayList(tracks.length);
/*
Collections.sort(track[i].events, new Comparator() {
public int compare(Object o1, Object o2) {
*/
for (int j = 0; j < tracks[i].size(); j++) {
noteOn = tracks[i].get(j);
- if (noteOn.getMessage() instanceof ShortMessage) {
- if (((ShortMessage)noteOn.getMessage()).getCommand() == ShortMessage.NOTE_ON) {
- // Finds the corresponding NoteOff event
- for (int k = j + 1; k < tracks[i].size(); k++) {
- nextEvent = tracks[i].get(k);
- nextMsg = nextEvent.getMessage();
- if (nextMsg instanceof ShortMessage) {
- shortMsg = (ShortMessage) nextMsg;
- if (shortMsg.getCommand() == ShortMessage.NOTE_OFF && shortMsg.getChannel() == ((ShortMessage)noteOn.getMessage()).getChannel() && shortMsg.getData1() == ((ShortMessage)noteOn.getMessage()).getData1()) {
- noteOff = nextEvent;
- break;
- }
+ if (noteOn.getMessage().getStatus() == ShortMessage.NOTE_ON) {
+ // Finds the corresponding NoteOff event
+ for (int k = j + 1; k < tracks[i].size(); k++) {
+ nextEvent = tracks[i].get(k);
+ nextMsg = nextEvent.getMessage();
+ if (nextMsg instanceof ShortMessage) {
+ shortMsg = (ShortMessage) nextMsg;
+ if (shortMsg.getCommand() == ShortMessage.NOTE_OFF && shortMsg.getChannel() == ((ShortMessage)noteOn.getMessage()).getChannel() && shortMsg.getData1() == ((ShortMessage)noteOn.getMessage()).getData1()) {
+ noteOff = nextEvent;
+ break;
}
- }
- // Replaces the NoteOn event with a MooNote, if possible with the corresponding NoteOff event
- tracks[i].remove(noteOn);
- if (noteOff != null) {
- tracks[i].add(new MooNote(noteOn, noteOff));
- } else {
- tracks[i].add(new MooNote(noteOn));
}
}
+ // Replaces the NoteOn event with a MooNote, if possible with the corresponding NoteOff event
+ tracks[i].remove(noteOn);
+ if (noteOff != null) {
+ tracks[i].add(new MooNote(noteOn, noteOff));
+ } else {
+ tracks[i].add(new MooNote(noteOn));
+ }
}
}
}