public class MooInstrumentList extends JComboBox implements ActionListener {
- protected int channel;
+ private int channel;
+ private ShortMessage programChangeMessage;
public static final int INSTRUMENTS = 0, DRUMS = 1;
/**
* Creates the instrument list.
- * @param chan The channel it will operate on.
+ * @param chan the channel it will operate on.
+ * @param type one of the constants: INSTRUMENTS and DRUMS
+ * @param chan the MIDI message assigning the initial program change
*/
- public MooInstrumentList(int chan, int listType) {
+ public MooInstrumentList(int chan, int listType, ShortMessage programMsg) {
super(instruments[listType]);
+ programChangeMessage = programMsg;
+ if (programChangeMessage != null) setSelectedIndex(programChangeMessage.getData1());
setChannel(chan);
setFont(Moosique.getGUI().FONT);
addActionListener(this);
*/
public void setChannel(int chan) {
channel = chan;
- setSelectedIndex(Moosique.getChannel(channel).getProgram());
+ try {programChangeMessage.setMessage(programChangeMessage.getCommand(), chan, programChangeMessage.getData1(), 0);}
+ catch (Exception e) {}
}
/**
* Sets the instrument on a channel when it's changed in the combobox.
*/
public void actionPerformed(ActionEvent e) {
- JComboBox box = (JComboBox)e.getSource();
- int instrument = box.getSelectedIndex();
+ int instrument = ((JComboBox)e.getSource()).getSelectedIndex();
Moosique.getChannel(channel).programChange(instrument);
+ try {programChangeMessage.setMessage(programChangeMessage.getCommand(), programChangeMessage.getChannel(), instrument, 0);}
+ catch (InvalidMidiDataException ex) {}
}
/**
- * The list with standard midi instruments.
+ * The list with standard MIDI instruments.
*/
public static final String[][] instruments = {{
" 0 Acoustic Grand Piano",