]> ruin.nu Git - moosique.git/blobdiff - Moosique.java
*** empty log message ***
[moosique.git] / Moosique.java
index e72cdf560d3df1e1b2e55dbdefb6ae0aecaad323..33381f1b99b7193af0e147e63b7fd61a0216ce99 100644 (file)
@@ -19,6 +19,7 @@ public class Moosique {
        private static Synthesizer synthesizer;
        private static MidiChannel[] channels;
        private static MidiChannel activeChannel;
+       private static MetaMessage tempoMsg, timeSigMsg;
 
        private static String filename, fileArg;
        private static long editPosition;
@@ -222,6 +223,40 @@ public class Moosique {
                editPosition = ticks;
        }
 
+       /** 
+        * Returns the tempo of the current sequence.
+        * @return the tick position
+        */
+       public static int getTempo() {
+               if (tempoMsg == null) return 0;
+               return 120;
+       }
+
+       /** 
+        * Sets the current editing position of the sequencer.
+        * @param ticks         the tick position
+        */
+       public static void setTempo(int bpm) {
+               // tempoMsg, timeSigMsg
+       }
+
+       /** 
+        * Returns the tempo of the current sequence.
+        * @return the tick position
+        */
+       public static int getTimeSig() {
+               if (timeSigMsg == null) return 0;
+               return 120;
+       }
+
+       /** 
+        * Sets the current editing position of the sequencer.
+        * @param ticks         the tick position
+        */
+       public static void setTimeSig(int bpm) {
+               // tempoMsg, timeSigMsg
+       }
+
        /** 
         * Returns true if the current sequence has been edited.
         * @return the tick position
@@ -268,9 +303,26 @@ public class Moosique {
                        return false;
                }
                isEdited = false;
-               
-               // Searches the sequence for NoteOn events
+
                Track[] tracks = seq.getTracks();
+
+               // Stores tempo and time signature.
+               MidiMessage msg;
+               MetaMessage metaMsg;
+               for (int i = 0; i < tracks[0].size(); i++) {
+                       msg = tracks[0].get(i).getMessage();
+                       if (msg.getStatus() == MetaMessage.META) {
+                               metaMsg = (MetaMessage)msg;
+                               if (metaMsg.getType() == 81) {
+                                       tempoMsg = metaMsg;
+                               } else if (metaMsg.getType() == 88) {
+                                       timeSigMsg = (MetaMessage)msg;
+                               }
+
+                       }
+               }
+
+               // Searches the sequence for NoteOn events
                MidiEvent noteOn, noteOff = null, nextEvent;
                MidiMessage nextMsg;
                ShortMessage shortMsg;
@@ -326,6 +378,7 @@ public class Moosique {
                        MidiSystem.write(seq, 1, new File(filename));
                } catch (IOException e) {}
                filename = file;
+               gui.setStatus("Saved " + file);
        }
 
        /**