From f8acd2446a3907efc197bbf52ff55377fce0482a Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Sat, 17 May 2003 18:24:43 +0000 Subject: [PATCH] hmm.. this doesn't want to work.. --- MooTrackTitle.java | 26 ++++++++------------------ Moosique.java | 31 ++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/MooTrackTitle.java b/MooTrackTitle.java index dbf70a1..f2bed14 100644 --- a/MooTrackTitle.java +++ b/MooTrackTitle.java @@ -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. */ 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)); + } +} -- 2.39.2