]> ruin.nu Git - moosique.git/commitdiff
*** empty log message ***
authorEinar Pehrson <einarp@itstud.chalmers.se>
Fri, 16 May 2003 12:02:17 +0000 (12:02 +0000)
committerEinar Pehrson <einarp@itstud.chalmers.se>
Fri, 16 May 2003 12:02:17 +0000 (12:02 +0000)
MooGUI.java
Moosique.java
midi/test3.mid

index 71b14937a1f8f1a0e610a08b085a43727df50ff5..78105be707d229b2743fae15323b1bebe879e6a8 100644 (file)
@@ -18,6 +18,7 @@ public class MooGUI extends JFrame {
        private MooView view;
        private JLabel statusBar;
        private java.util.Timer timer;
        private MooView view;
        private JLabel statusBar;
        private java.util.Timer timer;
+       private boolean drawEmptyTracks = false;
        public static final int statusResetDelay = 3000;
        public static final Font FONT = new Font("Helvetica", Font.PLAIN, 10);
        public static final Color bgColor = new Color(192, 224, 255);
        public static final int statusResetDelay = 3000;
        public static final Font FONT = new Font("Helvetica", Font.PLAIN, 10);
        public static final Color bgColor = new Color(192, 224, 255);
@@ -139,6 +140,22 @@ public class MooGUI extends JFrame {
                toolbar.updateProgInd(tickPosition);
        }
 
                toolbar.updateProgInd(tickPosition);
        }
 
+       /** 
+        * Shows the given message in the status bar.
+        * @param text  the message to show
+        */
+       public boolean drawEmptyTracks() {
+               return drawEmptyTracks;
+       }
+
+       /** 
+        * Shows the given message in the status bar.
+        * @param text  the message to show
+        */
+       public void setDrawEmptyTracks(boolean state) {
+               drawEmptyTracks = state;
+       }
+
        private Action createOctaveAction(final int octave) {
                Action octaveAction = new AbstractAction() {
                        public void actionPerformed(ActionEvent ae) {
        private Action createOctaveAction(final int octave) {
                Action octaveAction = new AbstractAction() {
                        public void actionPerformed(ActionEvent ae) {
index 89669d37e972d197ffdba584062477e2c6ae5c84..7eafb6c6ab17fd7852996930e4c4d64aec916819 100644 (file)
@@ -20,6 +20,7 @@ public class Moosique {
        private static MidiChannel[] channels;
        private static MidiChannel activeChannel;
        private static MidiEvent[] timeSignatures, tempoChanges;
        private static MidiChannel[] channels;
        private static MidiChannel activeChannel;
        private static MidiEvent[] timeSignatures, tempoChanges;
+       private static ArrayList emptyTracks;
 
        private static String filename, fileArg;
        private static long editPosition;
 
        private static String filename, fileArg;
        private static long editPosition;
@@ -185,15 +186,16 @@ public class Moosique {
                // Disables input to volatile components
                // gui.disable();
 
                // Disables input to volatile components
                // gui.disable();
 
-               System.out.println("Ticks/16: " + seq.getResolution()/4);
-
                // Creates the visualisation thread and starts it.
                player = new Thread () {
                        public void run() {
                // Creates the visualisation thread and starts it.
                player = new Thread () {
                        public void run() {
+                               long ticksPerSixteenth = seq.getResolution()/4;
+                               System.out.println("Ticks/16: " + ticksPerSixteenth);
                                long position = sequencer.getTickPosition();
                                while(sequencer.isRunning()) {
                                        long pos = sequencer.getTickPosition();
                                long position = sequencer.getTickPosition();
                                while(sequencer.isRunning()) {
                                        long pos = sequencer.getTickPosition();
-                                       System.out.print(" ... " + (pos - position));
+                                       long tickDiff = pos - position;
+                                       System.out.print(" ... " + tickDiff);
                                        position = pos;
 
                                        // Updates the GUI with the current tick position.
                                        position = pos;
 
                                        // Updates the GUI with the current tick position.
@@ -202,7 +204,7 @@ public class Moosique {
                                        // Puts the thread to sleep for as long as it takes
                                        // the sequencer to reach the next sixteenth.
                                        try {
                                        // Puts the thread to sleep for as long as it takes
                                        // the sequencer to reach the next sixteenth.
                                        try {
-                                               sleep((long)(15000 / getTempo()));
+                                               sleep((long)((15000 / getTempo()) * (tickDiff / ticksPerSixteenth)));
                                        } catch (InterruptedException e) {
                                                Moosique.stop();
                                        }
                                        } catch (InterruptedException e) {
                                                Moosique.stop();
                                        }
@@ -324,6 +326,7 @@ public class Moosique {
                isEdited = false;
 
                Track[] tracks = seq.getTracks();
                isEdited = false;
 
                Track[] tracks = seq.getTracks();
+               emptyTracks = new ArrayList();
 
                // Searches track 0 for changes in tempo and time signature.
                MidiEvent event;
 
                // Searches track 0 for changes in tempo and time signature.
                MidiEvent event;
@@ -357,6 +360,11 @@ public class Moosique {
                        }
                        noteOns.trimToSize();
                        noteOffs.trimToSize();
                        }
                        noteOns.trimToSize();
                        noteOffs.trimToSize();
+                       boolean isEmpty = (noteOns.size() == 0);
+                       String text = "Track " + i + " has " + noteOns.size() + "/" + noteOffs.size() + "/" + tracks[i].size();
+                       if (isEmpty) text += " and will not be removed.";
+                       System.out.println(text);
+                       emptyTracks.add(tracks[i]);
                        
                        // Sorts the note lists by tick position.
                        Comparator c = new Comparator() {
                        
                        // Sorts the note lists by tick position.
                        Comparator c = new Comparator() {
index 5080a168667b4ddab24e5788104b7967b583cdd3..5893970efde08226b61448a245ee923430912e5f 100644 (file)
Binary files a/midi/test3.mid and b/midi/test3.mid differ