X-Git-Url: https://ruin.nu/git/?p=moosique.git;a=blobdiff_plain;f=MooInstrumentList.java;fp=MooInstrumentList.java;h=34ff4da07a041ad8ac6e6af8142803c9ce038f9c;hp=4ae0cfa1e79618de5990acb6acce50511421267c;hb=1d2d2bfd14ba0addab97692527d4414d3a87e13d;hpb=e7289eb46e09ee6ed3bc5bb4a814f59902d885cb diff --git a/MooInstrumentList.java b/MooInstrumentList.java index 4ae0cfa..34ff4da 100644 --- a/MooInstrumentList.java +++ b/MooInstrumentList.java @@ -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; + 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 (InvalidMidiDataException 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",