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);
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.
*/
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;
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();
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;
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));
+ }
+}