1 package camidion.chordhelper.midieditor;
3 import javax.swing.JComboBox;
5 import camidion.chordhelper.music.MIDISpec;
8 * MIDI Instrument (Program) - 音色選択
10 public class MidiProgramSelecter extends JComboBox<String> {
12 private MidiProgramFamilySelecter familySelecter = null;
13 public MidiProgramSelecter() {
16 public void setFamilySelecter( MidiProgramFamilySelecter mpfs ) {
17 familySelecter = mpfs;
19 public void setFamily( int family ) {
20 int program_no = getProgram();
24 setMaximumRowCount(16);
25 for( int i=0; i < MIDISpec.instrumentNames.length; i++ ) {
26 addItem(i+": " + MIDISpec.instrumentNames[i]);
28 setSelectedIndex(program_no);
31 setMaximumRowCount(8);
32 for( int i=0; i < 8; i++ ) {
33 program_no = i + family * 8;
34 addItem( program_no + ": " + MIDISpec.instrumentNames[program_no] );
39 public int getProgram() {
40 int program_no = getSelectedIndex();
41 if( family > 0 && program_no >= 0 ) program_no += family * 8;
44 public String getProgramName() { return (String)( getSelectedItem() ); }
45 public void setProgram( int program_no ) {
46 if( getItemCount() == 0 ) return; // To ignore event triggered by removeAllItems()
47 if( family >= 0 && program_no >= 0 && family == program_no / 8 ) {
48 setSelectedIndex(program_no % 8);
51 if( family >= 0 ) setFamily(-1);
52 if( familySelecter != null ) familySelecter.setSelectedIndex(0);
53 if( program_no < getItemCount() ) setSelectedIndex(program_no);