JavaとMIDI:MIDIの環境を調べる

スポンサーリンク

MIDIをJavaを経由で利用するにあたってまずやることは自分のPC上で使えるMIDIのデバイスを調べることです。

デバイスの種類

認識されるデバイスには次のようなものがあります。

シンセサイザー

MIDI信号を受け取りオーディオ情報に変換するものです。Javaではデフォルトで一つシンセサイザーが内臓されています。

またUSBでPCに接続されている外付けの実物のシンセサイザーやインストールされ起動されているソフトウェアシンセサイザーなども認識されます。最近はソフトウェアシンセサイザーのほうが手軽で流通していますがJavaが使えるかどうかは調べる必要があります。

Garritanのソフトウェア音源に付属しているARIA PlayerはMAC上のJavaで認識させることができました。

MIDIコントローラー

MIDI信号を発生させ送信するものです。USBで接続されたMIDIキーボードなどです。コントローラーは他にも笛の形をしているものやドラム用のパッドやミックス用のコンソールなどがあります。たいていの場合はドライバーが必要なので自分のPCに合うドライバーがメーカーに用意されているか調べてから購入するようにしてください。

MIDIインタフェース

MIDIの一番最初の規格では各機材はMIDIケーブルで接続されていました。PCにMIDIケーブルを接続するにはMIDIインタフェースが必要になります。こちらもドライバーが必要なものもあるので自分のPCに合うドライバーがメーカーに用意されているか調べてから購入するようにしてください。

デバイスを調べる

ではデバイスを調べていきます。以下のようなコードを実行します。

  • MidiSystemに全てのデバイス情報を問い合わせる
  • 各デバイスについて以下の情報を取得して表示
    • 名前
    • バージョン
    • ベンダー
    • 詳細な記述
  • 各デバイスの受信と送信のための可能最大接続数を取得して表示
import javax.sound.midi.MidiDevice;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
public class MidiUtil {

  public static void printMidiDevices(){
    MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo();
    System.out.println("MidiDevice.Info : " + infos.length + " item(s)");
    for (int i = 0; i < infos.length; i++) {
      System.out.println(" MidiDevice.Info[" + i + "]");
      System.out.println("  Name         : " + infos[i].getName());
      System.out.println("  Version      : " + infos[i].getVersion());
      System.out.println("  Vendor       : " + infos[i].getVendor());
      System.out.println("  Description  : " + infos[i].getDescription());
      MidiDevice device;
      try {
        device = MidiSystem.getMidiDevice(infos[i]);
      } catch (MidiUnavailableException ex) {
        throw new IllegalStateException(ex);
      }
      System.out.println("  Receivers    : " + device.getMaxReceivers());
      System.out.println("  Transmitters : " + device.getMaxTransmitters());
    }
  }
  public static void main(String[] args){
    printMidiDevices();
  }
}

以下実行結果です。表示される一覧はPCやOSによって変わります。以下の結果はMacのものです。

Receiversつまり受信可能最大接続数やTransmitterつまり送信可能最大接続数の-1は「システムが許す限り無制限」を意味します。0の場合は受け付けないことを意味します。

最初のGervillはJavaの内臓シンセサイザーでMIDI情報を無制限に受信できると言っています。またReal Time SequencerはJavaの内臓シーケンサーでMIDI情報をタイミングよく送信したり外部からの入力を受信したりするものです。

MidiDevice.Info : 2 item(s)
 MidiDevice.Info[0]
  Name         : Gervill
  Version      : 1.0
  Vendor       : OpenJDK
  Description  : Software MIDI Synthesizer
  Receivers    : -1
  Transmitters : 0
 MidiDevice.Info[1]
  Name         : Real Time Sequencer
  Version      : Version 1.0
  Vendor       : Oracle Corporation
  Description  : Software sequencer
  Receivers    : -1
  Transmitters : -1

ソフトウェアシンセサイザーを起動した場合は以下の情報が表示されました。

 MidiDevice.Info[1]
  Name         : ARIA Player
  Version      : Unknown version
  Vendor       : Unknown vendor
  Description  : ARIA Player
  Receivers    : -1
  Transmitters : 0

次にMIDIキーボードをUSBに接続して実行しました。

送信用と受信用で別のデバイスになっています。

 MidiDevice.Info[1]
  Name         : LPK25
  Version      : Unknown version
  Vendor       : AKAI professional LLC
  Description  : LPK25
  Receivers    : 0
  Transmitters : -1
 MidiDevice.Info[2]
  Name         : LPK25
  Version      : Unknown version
  Vendor       : AKAI professional LLC
  Description  : LPK25
  Receivers    : -1
  Transmitters : 0

次にオーディオインタフェースとMIDIインタフェース兼用の機材をUSBつなぎました。こちらはドライバーをインストールした上で行なっています。

 MidiDevice.Info[1]
  Name         : TASCAM US-4x4
  Version      : 2
  Vendor       : TEAC Corporation
  Description  : TASCAM US-4x4
  Receivers    : 0
  Transmitters : -1
 MidiDevice.Info[2]
  Name         : TASCAM US-4x4
  Version      : 2
  Vendor       : TEAC Corporation
  Description  : TASCAM US-4x4
  Receivers    : -1
  Transmitters : 0

次回はこれらの機材を接続させて音を鳴らしたいと思います。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。