X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=MooNote.java;h=57cf86c8529c9fef5ce0e59726b6c944f83ebc04;hb=ae0bb1ddc2361a9c7f08579488870f0b99b14cb6;hp=023de207da3aa053ffafff81f2febabe076ea996;hpb=570c4561b55541309efb977d0930777b8d214336;p=moosique.git diff --git a/MooNote.java b/MooNote.java index 023de20..57cf86c 100644 --- a/MooNote.java +++ b/MooNote.java @@ -7,7 +7,7 @@ import javax.sound.midi.*; * @author Einar Pehrson */ -public class MooNote extends MidiEvent implements Cloneable { +public class MooNote extends MidiEvent implements Cloneable, Comparable { private MidiEvent noteOffEvent; private ShortMessage noteOnMsg, noteOffMsg; @@ -44,6 +44,46 @@ public class MooNote extends MidiEvent implements Cloneable { } catch (InvalidMidiDataException e) {System.out.println("Invalid data!");} } + /** + * Returns the note off event of this note. + * @return the note off event + */ + public MidiEvent getNoteOffEvent() { + return noteOffEvent; + } + + /** + * Returns the channel of the current note. + * @return the channel of the note (1-16) + */ + public int getChannel() { + return noteOnMsg.getChannel(); + } + + /** + * Returns the pitch of the current note. + * @return the pitch of the note (0-127) + */ + public int getPitch() { + return noteOnMsg.getData1(); + } + + /** + * Returns the velocity of the current note. + * @return the velocity of the note (0-127) + */ + public int getVelocity() { + return noteOnMsg.getData2(); + } + + /** + * Returns the duration of the current note. + * @return the duration of the note (in ticks) + */ + public int getDuration() { + return (int)(noteOffEvent.getTick() - getTick()); + } + /** * Sets the channel of the current note. * @param channel the channel of the note (1-16) @@ -102,38 +142,6 @@ public class MooNote extends MidiEvent implements Cloneable { setPitch(getPitch() + halftones); } - /** - * Returns the channel of the current note. - * @return the channel of the note (1-16) - */ - public int getChannel() { - return noteOnMsg.getChannel(); - } - - /** - * Returns the pitch of the current note. - * @return the pitch of the note (0-127) - */ - public int getPitch() { - return noteOnMsg.getData1(); - } - - /** - * Returns the velocity of the current note. - * @return the velocity of the note (0-127) - */ - public int getVelocity() { - return noteOnMsg.getData2(); - } - - /** - * Returns the duration of the current note. - * @return the duration of the note (in ticks) - */ - public int getDuration() { - return (int)(noteOffEvent.getTick() - getTick()); - } - /** * Adds this note (both noteOn and noteOffEvents) to a track. * @param track the track it'll be added to. @@ -161,4 +169,12 @@ public class MooNote extends MidiEvent implements Cloneable { new MidiEvent((ShortMessage)noteOffEvent.getMessage().clone(), noteOffEvent.getTick()) ); } + + /** + * Compares this note to another note. + * @return a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object + */ + public int compareTo(Object o) { + return (int)(getTick() - ((MidiEvent)o).getTick()); + } }