]> ruin.nu Git - moosique.git/commitdiff
hmm.. this doesn't want to work..
authorMichael Andreen <harv@ruin.nu>
Sat, 17 May 2003 18:24:43 +0000 (18:24 +0000)
committerMichael Andreen <harv@ruin.nu>
Sat, 17 May 2003 18:24:43 +0000 (18:24 +0000)
MooTrackTitle.java
Moosique.java

index dbf70a1e6cba0884d8ed2c6ec5282971070ee8c2..f2bed14e37b919130e2c6abda153bdc113aed64c 100644 (file)
@@ -93,34 +93,34 @@ public class MooTrackTitle extends JPanel {
                checkboxes.setLayout(new GridLayout(1,3));
 
                mute = new JCheckBox("Mute");
-               mute.setSelected(Moosique.getSequencer().getTrackMute(getTrackNum()));
+               mute.setSelected(false);
+               Moosique.setTrackMute(track, false);
                mute.setFont(Moosique.getGUI().FONT);
                mute.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent event){
                                        boolean selected = mute.isSelected();
-                                       int trackNum = getTrackNum();
                                        if (selected){
                                                solo.setSelected(false);
-                                               Moosique.getSequencer().setTrackSolo(trackNum, false);
+                                               Moosique.setTrackSolo(track, false);
                                        }
-                                       Moosique.getSequencer().setTrackMute(trackNum, selected);
+                                       Moosique.setTrackMute(track, selected);
 
                                }});
                checkboxes.add(mute);
 
                solo = new JCheckBox("Solo");
-               solo.setSelected(Moosique.getSequencer().getTrackSolo(getTrackNum()));
+               solo.setSelected(false);
+               Moosique.setTrackSolo(track, false);
                solo.setFont(Moosique.getGUI().FONT);
                solo.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent event){
                                        //setSolo
                                        boolean selected = solo.isSelected();
-                                       int trackNum = getTrackNum();
                                        if (selected){
                                                mute.setSelected(false);
-                                               Moosique.getSequencer().setTrackMute(trackNum, false);
+                                               Moosique.setTrackMute(track, false);
                                        }
-                                       Moosique.getSequencer().setTrackSolo(trackNum, selected);
+                                       Moosique.setTrackSolo(track, selected);
                                }});
                checkboxes.add(solo);
                add(checkboxes);
@@ -134,16 +134,6 @@ public class MooTrackTitle extends JPanel {
                return channel;
        }
 
-       protected int getTrackNum() {
-               Track[] tracks = Moosique.getSequence().getTracks();
-
-               for (int i = 0; i < tracks.length; i++) {
-                       if (tracks[i] == track)
-                               return i;
-               }
-               System.out.println("Couldn't find track");
-               return 0;
-       }
        /**
         * Checks if the focus is lost.
         */
index e03cca0749a08b9396c7e760c722bb62f698c36a..9ecc0d886121d032f8a3d23a350a1dd9ec0adaa1 100644 (file)
@@ -21,6 +21,9 @@ public class Moosique {
        private static MidiChannel activeChannel;
        private static MidiEvent[] timeSignatures, tempoChanges;
        private static ArrayList emptyTracks;
+       private static Map trackMute;
+       private static Map trackSolo;
+
 
        private static String filename;
        private static long editPosition;
@@ -185,6 +188,22 @@ public class Moosique {
                gui.update(0);
                try {
                        sequencer.setSequence(seq);
+                       Track[] tracks = seq.getTracks();
+
+                       for (int i = 0; i < tracks.length; i++) {
+                               
+                               Object ob = trackSolo.get(tracks[i]);
+                               if(ob instanceof Boolean){
+                                       System.out.println("Track solo " + i + "= "+ ob);
+                                       sequencer.setTrackSolo(i,((Boolean)ob).booleanValue());
+                               }
+
+                               ob = trackMute.get(tracks[i]);
+                               if(ob instanceof Boolean){
+                                       System.out.println("Track mute " + i + "= "+ ob);
+                                       sequencer.setTrackMute(i,((Boolean)ob).booleanValue());
+                               }
+                       }
                } catch (InvalidMidiDataException e) {}
                sequencer.start();
 
@@ -343,6 +362,8 @@ public class Moosique {
 
                Track[] tracks = seq.getTracks();
                emptyTracks = new ArrayList();
+               trackMute = new HashMap();
+               trackSolo = new HashMap();
 
                // Searches track 0 for changes in tempo and time signature.
                MidiEvent event;
@@ -459,4 +480,12 @@ public class Moosique {
                if (synthesizer.isOpen()) synthesizer.close();
                System.exit(0);
        }
-}
\ No newline at end of file
+       
+       public static void setTrackSolo(Track track, boolean on){
+               trackSolo.put(track, new Boolean(on));  
+       }
+
+       public static void setTrackMute(Track track, boolean on){
+               trackMute.put(track, new Boolean(on));  
+       }
+}