/// <summary> /// MIDIデバイスの選択肢の欄を更新します /// </summary> private void updateMidiDevice() { int sel_midi = comboMidiInPortNumber.SelectedIndex; int sel_mtc = comboMtcMidiInPortNumber.SelectedIndex; comboMidiInPortNumber.Items.Clear(); comboMtcMidiInPortNumber.Items.Clear(); #if ENABLE_MIDI List <MidiDevice.Info> midiins = new List <MidiDevice.Info>(); foreach (MidiDevice.Info info in MidiSystem.getMidiDeviceInfo()) { #if DEBUG if (info != null) { sout.println("Preference#updateMidiDevice; info.getName()=" + info.getName()); } #endif MidiDevice device = null; try { device = MidiSystem.getMidiDevice(info); } catch (Exception ex) { device = null; } if (device == null) { continue; } #if DEBUG sout.println("Preference#updateMidiDevice; (device is Receiver)=" + (device is Receiver)); #endif // MIDI-OUTの最大接続数.-1は制限なしを表す int max = device.getMaxTransmitters(); if (max > 0 || max == -1) { midiins.Add(info); } } foreach (MidiDevice.Info info in midiins) { comboMidiInPortNumber.Items.Add(info); comboMtcMidiInPortNumber.Items.Add(info); } if (midiins.Count <= 0) { comboMtcMidiInPortNumber.Enabled = false; comboMidiInPortNumber.Enabled = false; } else { #if ENABLE_MTC comboMtcMidiInPortNumber.setEnabled(true); #else // ENABLE_MTC comboMtcMidiInPortNumber.Enabled = false; #endif // ENABLE_MTC comboMidiInPortNumber.Enabled = true; } #else // ENABLE_MIDI comboMtcMidiInPortNumber.setEnabled(false); comboMidiInPortNumber.setEnabled(false); #endif // ENABLE_MIDI // 可能なら選択状態を復帰 if (sel_midi >= 0) { if (comboMidiInPortNumber.Items.Count <= sel_midi) { sel_midi = comboMidiInPortNumber.Items.Count - 1; } comboMidiInPortNumber.SelectedIndex = sel_midi; } if (sel_mtc >= 0) { if (comboMtcMidiInPortNumber.Items.Count <= sel_mtc) { sel_mtc = comboMtcMidiInPortNumber.Items.Count - 1; } comboMtcMidiInPortNumber.SelectedIndex = sel_mtc; } }