public class MooInstrumentList extends JComboBox implements ActionListener {
- public MooInstrumentList() {
+ protected int channel;
+ public MooInstrumentList(int chan) {
super(instruments);
+ setChannel(chan);
setFont(new Font("Helvetica", Font.PLAIN, 10));
addActionListener(this);
}
+ public void setChannel(int chan){
+ channel = chan;
+ setSelectedIndex(Moosique.getChannel(chan).getProgram());
+ }
public void actionPerformed(ActionEvent e) {
JComboBox box = (JComboBox)e.getSource();
int instrument = box.getSelectedIndex();
- Moosique.getActiveChannel().programChange(instrument);
+ Moosique.getChannel(channel).programChange(instrument);
}
public static final String[] instruments = {
title.addFocusListener(new TitleFocusListener());
add(title);
- instruments = new MooInstrumentList();
- add(instruments);
JPanel checkboxes = new JPanel();
checkboxes.setLayout(new GridLayout(1,3));
}
}
- channel.addItemListener(new ItemListener(){
- public void itemStateChanged(ItemEvent e){
- Object ob = channel.getSelectedItem();
- if (ob instanceof Integer){
- int chan = ((Integer)ob).intValue();
- //set channel
- MidiEvent me;
- MooNote mn;
- for (int j = 0; j < track.size(); j++) {
- me = track.get(j);
- if (me instanceof MooNote){
- mn = (MooNote)me;
- mn.setChannel(chan);
- System.out.println(ob);
- }
- }
- }
+ instruments = new MooInstrumentList(channel.getSelectedIndex());
+
+ channel.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ int chan = channel.getSelectedIndex();
+ MidiEvent me;
+ MooNote mn;
+ instruments.setChannel(channel.getSelectedIndex());
+ for (int j = 0; j < track.size(); j++) {
+ me = track.get(j);
+ if (me instanceof MooNote){
+ mn = (MooNote)me;
+ mn.setChannel(chan);
+ }
+ }
}});
- add(channel);
mute = new JCheckBox("Mute");
mute.setSelected(false);
}});
checkboxes.add(solo);
+
+ add(instruments);
+ add(channel);
add(checkboxes);
}
return channels;
}
+ /**
+ * Returns the MidiChannels of the selected synthesizer.
+ * @return the available MidiChannels
+ */
+ public static MidiChannel getChannel(int i) {
+ return channels[i];
+ }
+
/**
* Returns the currently active MidiChannel.
* @return the active MidiChannel