X-Git-Url: https://ruin.nu/git/?p=moosique.git;a=blobdiff_plain;f=Moosique.java;h=e72cdf560d3df1e1b2e55dbdefb6ae0aecaad323;hp=df94b478e464f79277871e4d95d80265b03da463;hb=b5028dc9c03585cdf231a37d8996a7e836932c3e;hpb=357944d9255bb7cb1ad5ed4f5c960b22a8c64b8f diff --git a/Moosique.java b/Moosique.java index df94b47..e72cdf5 100644 --- a/Moosique.java +++ b/Moosique.java @@ -274,7 +274,9 @@ public class Moosique { 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) { @@ -284,28 +286,26 @@ public class Moosique { */ 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)); + } } } }