X-Git-Url: https://ruin.nu/git/?p=moosique.git;a=blobdiff_plain;f=Moosique.java;h=9ecc0d886121d032f8a3d23a350a1dd9ec0adaa1;hp=e03cca0749a08b9396c7e760c722bb62f698c36a;hb=f8acd2446a3907efc197bbf52ff55377fce0482a;hpb=654908e5aab938d3ec91a11ba91817d9cd8ea542 diff --git a/Moosique.java b/Moosique.java index e03cca0..9ecc0d8 100644 --- a/Moosique.java +++ b/Moosique.java @@ -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)); + } +}