]> ruin.nu Git - moosique.git/blobdiff - MooNote.java
no message
[moosique.git] / MooNote.java
index 023de207da3aa053ffafff81f2febabe076ea996..57cf86c8529c9fef5ce0e59726b6c944f83ebc04 100644 (file)
@@ -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());
+       }
 }