]> ruin.nu Git - moosique.git/blobdiff - Moosique.java
*** empty log message ***
[moosique.git] / Moosique.java
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 ArrayList emptyTracks;
 
        private static String filename, fileArg;
        private static long editPosition;
@@ -185,15 +186,16 @@ public class Moosique {
                // 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() {
+                               long ticksPerSixteenth = seq.getResolution()/4;
+                               System.out.println("Ticks/16: " + ticksPerSixteenth);
                                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.
@@ -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 {
-                                               sleep((long)(15000 / getTempo()));
+                                               sleep((long)((15000 / getTempo()) * (tickDiff / ticksPerSixteenth)));
                                        } catch (InterruptedException e) {
                                                Moosique.stop();
                                        }
@@ -324,6 +326,7 @@ public class Moosique {
                isEdited = false;
 
                Track[] tracks = seq.getTracks();
+               emptyTracks = new ArrayList();
 
                // Searches track 0 for changes in tempo and time signature.
                MidiEvent event;
@@ -357,6 +360,11 @@ public class Moosique {
                        }
                        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() {