]> ruin.nu Git - moosique.git/commitdiff
Put the play thread to sleep. Didn't see any difference in performance
authorEinar Pehrson <einarp@itstud.chalmers.se>
Wed, 14 May 2003 16:05:05 +0000 (16:05 +0000)
committerEinar Pehrson <einarp@itstud.chalmers.se>
Wed, 14 May 2003 16:05:05 +0000 (16:05 +0000)
MooNoteElement.java
MooTrackView.java
Moosique.java

index e1bcfb019d55c756867942c0c006b9110cbebe7b..7488d1543d94a54a9a66099263d072767f0dad55 100644 (file)
@@ -13,7 +13,6 @@ public class MooNoteElement extends JPanel {
 
        private MooTrackView mtv;
        private MooNote note;
-       private int columns;
        private boolean selected;
        private Rectangle pitchRect, veloRect;
        public static final Color bgColor = new Color(160, 218, 255);
@@ -31,7 +30,6 @@ public class MooNoteElement extends JPanel {
                mtv = parent;
                note = mn;
                calculateString();
-               columns = mn.getDuration() / (Moosique.getSequence().getResolution() / 4);
                setBorder(BorderFactory.createLineBorder(Color.black));
                setBackground(bgColor);
                addMouseListener(new MAdapter());
index 7b9decfc393446a76a87541409f44b35cd084d00..4b033c1f4184fe7c8395b7092d4301eb74fdd0b9 100644 (file)
@@ -79,13 +79,13 @@ public class MooTrackView extends JPanel {
                        }
                }
 
-               int beatsPerSixteenth = Moosique.getSequence().getResolution() / 4;
+               int ticksPerSixteenth = Moosique.getSequence().getResolution() / 4;
                MooNote mn = elem.getNote();
                Insets insets = getInsets();
                int x, y, height;
                x = insets.left;
-               y = insets.top + (int)(mn.getTick() / beatsPerSixteenth) * NOTE_HEIGHT;
-               height = (mn.getDuration() / beatsPerSixteenth) * NOTE_HEIGHT;
+               y = insets.top + (int)(mn.getTick() / ticksPerSixteenth) * NOTE_HEIGHT;
+               height = (mn.getDuration() / ticksPerSixteenth) * NOTE_HEIGHT;
                if (height == 0) height = NOTE_HEIGHT;
                r = new Rectangle(x, y, NOTE_WIDTH, height);
                while(isOccupied(r)) r.translate(NOTE_WIDTH, 0);
index 33381f1b99b7193af0e147e63b7fd61a0216ce99..46efc7dc41e6acbadeba89067a09df0d566a3ec1 100644 (file)
@@ -25,7 +25,7 @@ public class Moosique {
        private static long editPosition;
        private static boolean makeGUI = true, isEdited;
        private static Thread player;
-       public static final int RESOLUTION = 96, DEFAULT_TRACKS = 4;
+       public static final int DEFAULT_RESOLUTION = 96, DEFAULT_TRACKS = 4;
 
        /** 
         * Starts the application.
@@ -150,7 +150,7 @@ public class Moosique {
        public static void clearSequence() {
                // Creates a new sequence and sends it to the sequencer.
                try {
-                       seq = new Sequence(Sequence.PPQ, RESOLUTION, DEFAULT_TRACKS);
+                       seq = new Sequence(Sequence.PPQ, DEFAULT_RESOLUTION, DEFAULT_TRACKS);
                        sequencer.setSequence(seq);
                } catch (InvalidMidiDataException e) {}
                // Sends sequence to GUI.
@@ -188,7 +188,18 @@ public class Moosique {
                // Creates the visualization thread and starts it.
                player = new Thread () {
                        public void run() {
-                               while(sequencer.isRunning()) gui.update(sequencer.getTickPosition());
+                               while(sequencer.isRunning()) {
+                                       // Updates the GUI with the current tick position.
+                                       gui.update(sequencer.getTickPosition());
+
+                                       // Puts the thread to sleep for as long as it takes
+                                       // the sequencer to reach the next sixteenth.
+                                       try {
+                                               sleep((long)((1000 * 60 * 1) / (getTempo() * 4)));
+                                       } catch (InterruptedException e) {
+                                               Moosique.stop();
+                                       }
+                               }
                                Moosique.stop();
                        }
                };
@@ -228,8 +239,8 @@ public class Moosique {
         * @return the tick position
         */
        public static int getTempo() {
-               if (tempoMsg == null) return 0;
                return 120;
+               // if (tempoMsg == null) return 0;
        }
 
        /** 
@@ -237,16 +248,17 @@ public class Moosique {
         * @param ticks         the tick position
         */
        public static void setTempo(int bpm) {
-               // tempoMsg, timeSigMsg
+               // tempoMsg
        }
 
        /** 
         * Returns the tempo of the current sequence.
         * @return the tick position
         */
-       public static int getTimeSig() {
-               if (timeSigMsg == null) return 0;
-               return 120;
+       public static int[] getTimeSig() {
+               int[] ts = {4, 4};
+               return ts;
+               // if (timeSigMsg == null) return 0;
        }
 
        /** 
@@ -254,7 +266,7 @@ public class Moosique {
         * @param ticks         the tick position
         */
        public static void setTimeSig(int bpm) {
-               // tempoMsg, timeSigMsg
+               // timeSigMsg
        }
 
        /**