MIDIデバイスの選択

これまでのプログラムではMidiSystemクラスが提供しているstaticなgetReceiver()メソッドから、デフォルトのMIDIデバイスを取得していました。このメソッドが返すReceiverはMIDIメッセージを受信して何らかの処理を行ってくれることを期待できますが、明示的に選択したデバイスではありません。コンピュータに接続されている利用可能なMIDIデバイスを調べ、特定の音源またはMIDI OUTポートを選択したいということもあるでしょう。たとえば、特定のハードウェア音源を利用したい場合は、アプリケーションの利用者に音源を選択させたい場合などです。

システムにインストールされているMIDIデバイスの一覧はMidiSystemクラスのgetMidiDeviceInfo()メソッドから取得できます。

MidiSystem クラス getMidiDeviceInfo() メソッド

public static MidiDevice.Info[] getMidiDeviceInfo()

このメソッドは、javax.sound.midi.MidiDevice.Info クラスのオブジェクトの配列を返します。このクラスは、MIDIデバイスを抽象化しているMidiDeviceインタフェースに含まれています。このクラスは、MIDIデバイスの名前やバージョン、メーカーやデバイスの説明などの情報を提供します。

javax.sound.midi.MidiDevice.Info クラス

public static class MidiDevice.Infoextends Object

getMidiDeviceInfo()メソッドから取得した配列を使えば、システムにインストールされているMIDIデバイスの情報を知ることができます。必要に応じて画面に表示させ、ユーザーに選択させるなどの使い方ができるでしょう。MIDIデバイスの名前は getName()メソッドから取得します。

MIDI デバイスの名前はgetName()メソッドから取得します。

MidiDevice.Info クラス getName() メソッド

public final String getName()

バージョンはgetVersion()メソッドから取得します。

MidiDevice.Info クラス getVersion() メソッド

public final String getVersion()

デバイスの開発メーカーはgetVender()メソッドから取得できます。

MidiDevice.Info クラス getVendor() メソッド

public final String getVendor()

デバイスの説明はgetDescription()から取得できます。主に、MIDIデバイスの性質や機能を説明する文字列が返されます。

MidiDevice.Info クラス getDescription() メソッド

public final String getDescription()

MIDIデバイスの情報を視覚的に表示したい場合や、ユーザーに選択させる場合にこれらのメソッドから得られる文字列を利用してください。

サンプル07(MIDIデバイスの一覧および個別情報を取得し表示)

import javax.sound.midi.*;

class Test {
    public static void main(String[] args) {
        System.out.println("--このシステムのMIDIデバイス一覧--");
        for(MidiDevice.Info info : MidiSystem.getMidiDeviceInfo()) {
            System.out.println(info.getName() + " " + info.getVersion());
            System.out.println("供給会社名:" + info.getVendor());
            System.out.println("説明:" + info.getDescription());
            System.out.println("---");
        }
    }
}

実行結果

...>java Test
--このシステムのMIDIデバイス一覧--
Microsoft MIDI Mapper 5.0
供給会社名:Unknown vendor
説明:Windows MIDI_MAPPER
---
Microsoft GS Wavetable Synth 1.0
供給会社名:Unknown vendor
説明:Internal software synthesizer
---
Real Time Sequencer Version 1.0
供給会社名:Sun Microsystems
説明:Software sequencer
---
Java Sound Synthesizer Version 1.0
供給会社名:Sun Microsystems
説明:Software wavetable synthesizer and receiver
---