]> ruin.nu Git - moosique.git/blobdiff - Moosique.java
no message
[moosique.git] / Moosique.java
index 531e4f511886dcc96c10c7ed9d614f9da83d6bf0..c9ea45644407d55fc9f9e83a5319bc765a738948 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();
        }
 
@@ -161,13 +169,14 @@ public class Moosique {
         */
        public static void pause() {
                sequencer.stop();
-               player.destroy();
+               player.interrupt();
        }
 
        /** 
         * Resumes playback of the current sequence.
         */
        public static void resume() {
+               gui.update(0);
                sequencer.start();
 
                // Disables input to volatile components
@@ -187,26 +196,28 @@ public class Moosique {
         * Stops playback of the current sequence.
         */
        public static void stop() {
-               sequencer.stop();
-               sequencer.setTickPosition(position);
-               player.interrupt();
-               gui.update((long)0);
+               if (sequencer.isRunning()) {
+                       sequencer.stop();
+                       sequencer.setTickPosition(editPosition);
+                       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 +240,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 +248,7 @@ public class Moosique {
         * @param measures      the number of measures to fast forward
         */
        public static void forward(long ticks) {
-               setPosition(position + ticks);
+               editPosition += ticks;
        }
 
        /**