]> ruin.nu Git - moosique.git/blobdiff - MooInstrumentList.java
no message
[moosique.git] / MooInstrumentList.java
index 4ae0cfa1e79618de5990acb6acce50511421267c..91f8eea239733139899db97a5401ed8b585f978b 100644 (file)
@@ -11,15 +11,20 @@ import java.awt.event.*;
  
 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);
@@ -30,20 +35,22 @@ public class MooInstrumentList extends JComboBox implements ActionListener {
         */
        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",