]> ruin.nu Git - moosique.git/blobdiff - Moosique.java
*** empty log message ***
[moosique.git] / Moosique.java
index b79fa67f93e9abd1f3163495b55a789e4e345b04..df94b478e464f79277871e4d95d80265b03da463 100644 (file)
@@ -21,7 +21,7 @@ public class Moosique {
        private static MidiChannel activeChannel;
 
        private static String filename, fileArg;
-       private static long position;
+       private static long editPosition;
        private static boolean makeGUI = true, isEdited;
        private static Thread player;
        public static final int RESOLUTION = 96, DEFAULT_TRACKS = 4;
@@ -119,6 +119,14 @@ public class Moosique {
                return channels;
        }
 
+       /** 
+        * Returns the MidiChannels of the selected synthesizer.
+        * @return the available MidiChannels
+        */
+       public static MidiChannel getChannel(int i) {
+               return channels[i];
+       }
+
        /** 
         * Returns the currently active MidiChannel.
         * @return the active MidiChannel
@@ -152,7 +160,7 @@ public class Moosique {
         * Starts playback of the current sequence.
         */
        public static void play() {
-               sequencer.setTickPosition(position);
+               sequencer.setTickPosition(editPosition);
                resume();
        }
 
@@ -160,14 +168,17 @@ public class Moosique {
         * Pauses playback of the current sequence.
         */
        public static void pause() {
-               sequencer.stop();
-               player.interrupt();
+               if (sequencer.isRunning()) {
+                       sequencer.stop();
+               }
+               if (player != null) player.interrupt();
        }
 
        /** 
         * Resumes playback of the current sequence.
         */
        public static void resume() {
+               gui.update(0);
                sequencer.start();
 
                // Disables input to volatile components
@@ -187,26 +198,28 @@ public class Moosique {
         * Stops playback of the current sequence.
         */
        public static void stop() {
-               sequencer.stop();
-               sequencer.setTickPosition(position);
-               player.interrupt();
+               if (sequencer.isRunning()) {
+                       sequencer.stop();
+               }
+               sequencer.setTickPosition(editPosition);
+               if (player != null) player.interrupt();
                gui.update((long)0);
        }
 
        /** 
-        * Returns the current tick position of the sequencer.
+        * Returns the current editing position of the sequencer.
         * @return the tick position
         */
        public static long getPosition() {
-               return position;
+               return editPosition;
        }
 
        /** 
-        * Sets the current tick position of the sequencer.
+        * Sets the current editing position of the sequencer.
         * @param ticks         the tick position
         */
        public static void setPosition(long ticks) {
-               position = ticks;
+               editPosition = ticks;
        }
 
        /** 
@@ -229,7 +242,7 @@ public class Moosique {
         * @param measures      the number of measures to rewind
         */
        public static void rewind(long ticks) {
-               setPosition(position - ticks);
+               editPosition -= ticks;
        }
 
        /** 
@@ -237,7 +250,7 @@ public class Moosique {
         * @param measures      the number of measures to fast forward
         */
        public static void forward(long ticks) {
-               setPosition(position + ticks);
+               editPosition += ticks;
        }
 
        /**