]> ruin.nu Git - moosique.git/blobdiff - Moosique.java
*** empty log message ***
[moosique.git] / Moosique.java
index 669d2361bdfd8b893d27ea0d4f811a267625ebf2..c5f31e23a62066e925783ca6a28ec0ad6798b8e4 100644 (file)
@@ -1,6 +1,7 @@
 import javax.sound.midi.*;
-import javax.swing.*;
 import java.io.*;
+import javax.swing.*;
+import java.util.*;
 
 /**
  * Moosique - The MIDI Tracker
@@ -56,16 +57,23 @@ public class Moosique {
                //If a filename is given as the command-line argument, attempts to load a sequence from the file.
                if (fileArg != null) {
                        System.out.print("Loading MIDI sequence from " + fileArg + "...");
-                       if (!load(fileArg)) clearSequence();
-                       System.out.println("Done");
+                       if (!load(fileArg)) {
+                               System.out.println("Failed");
+                               clearSequence();
+                       } else {
+                               System.out.println("Done");
+                       }
                } else {
                        // Otherwise creates a new empty one.
                        clearSequence();
                }
 
-               // If n-flag is set, plays song and then exits. Otherwise builds GUI.
+               // Builds GUI, unless n-flag is set.
                if (makeGUI) {
                        System.out.print("Building GUI...");
+                       try {
+                               UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+                       } catch (Exception e) {}
                        gui = new MooGUI(seq);
                        System.out.println("Done");
                } else {
@@ -77,6 +85,14 @@ public class Moosique {
                }
        }
 
+       /** 
+        * Returns the GUI.
+        * @return the GUI
+        */
+       public static MooGUI getGUI() {
+               return gui;
+       }
+
        /** 
         * Returns the current sequence.
         * @return the current sequence
@@ -181,7 +197,7 @@ public class Moosique {
         * @param measures      the number of measures to rewind
         */
        public static void rewind(long ticks) {
-               position -= ticks;
+               setPosition(position - ticks);
        }
 
        /** 
@@ -189,7 +205,7 @@ public class Moosique {
         * @param measures      the number of measures to fast forward
         */
        public static void forward(long ticks) {
-               position += ticks;
+               setPosition(position + ticks);
        }
 
        /** 
@@ -204,7 +220,6 @@ public class Moosique {
                } catch (InvalidMidiDataException e) {
                        return false;
                } catch (IOException e) {
-                       JOptionPane.showMessageDialog(null, "Error 404", "File Not Found", JOptionPane.ERROR_MESSAGE); 
                        return false;
                }
 
@@ -220,6 +235,13 @@ public class Moosique {
                MidiMessage nextMsg;
                ShortMessage shortMsg;
                for (int i = 0; i < tracks.length; i++) {
+       /*
+                       Collections.sort(track[i].events, new Comparator() {
+                               public int compare(Object o1, Object o2) {
+                                       return ((MidiEvent)o2).getTick() - ((MidiEvent)o1).getTick();
+                               }
+                       });
+       */
                        for (int j = 0; j < tracks[i].size(); j++) {
                                noteOn = tracks[i].get(j);
                                if (noteOn.getMessage() instanceof ShortMessage) {
@@ -276,4 +298,4 @@ public class Moosique {
                if (synthesizer.isOpen()) synthesizer.close();
                System.exit(0);
        }
-}
\ No newline at end of file
+}