X-Git-Url: https://ruin.nu/git/?p=moosique.git;a=blobdiff_plain;f=MooInstrumentList.java;h=4ae0cfa1e79618de5990acb6acce50511421267c;hp=3e538d489d9b7edc672984addd0f5e077839d8aa;hb=fed0170e819d14b07d7081a0a314ebabac3b29fe;hpb=4ac3b6210979ea78dceb609a0501cb0265d00065 diff --git a/MooInstrumentList.java b/MooInstrumentList.java index 3e538d4..4ae0cfa 100644 --- a/MooInstrumentList.java +++ b/MooInstrumentList.java @@ -1,27 +1,51 @@ import javax.sound.midi.*; import javax.swing.*; +import java.awt.*; import java.awt.event.*; -/* +/** * A Combo Box where the instrument of the currently active channel can be selected. * - * @author Einar Pehrson + * @author Einar Pehrson, Michael Andreen */ public class MooInstrumentList extends JComboBox implements ActionListener { - public MooInstrumentList() { - super(instruments); + protected int channel; + public static final int INSTRUMENTS = 0, DRUMS = 1; + + /** + * Creates the instrument list. + * @param chan The channel it will operate on. + */ + public MooInstrumentList(int chan, int listType) { + super(instruments[listType]); + setChannel(chan); + setFont(Moosique.getGUI().FONT); addActionListener(this); } + /** + * Sets the channel that it will operate on. + */ + public void setChannel(int chan) { + channel = chan; + setSelectedIndex(Moosique.getChannel(channel).getProgram()); + } + + /** + * 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(); - Moosique.getActiveChannel().programChange(instrument); + Moosique.getChannel(channel).programChange(instrument); } - public static final String[] instruments = { + /** + * The list with standard midi instruments. + */ + public static final String[][] instruments = {{ " 0 Acoustic Grand Piano", " 1 Bright Acoustic Piano", " 2 Electric Grand Piano", @@ -150,5 +174,11 @@ public class MooInstrumentList extends JComboBox implements ActionListener { " 125 Helicopter", " 126 Applause", " 127 Gunshot" - }; -} \ No newline at end of file + }, new String[128]}; + + static { + for (int i = 0; i < 128; i++) { + instruments[1][i] = " Program Change " + i; + } + } +}