JavaでMIDIとりあえず音を出す

戻る

とりあえず音を出すにはMidiChannelを使えば、音のon, offが出来ます。 手順としては以下の通りです。

  1. システムからSynsesizer を得て、開く。
  2. システムからSoundbank を得る。これにより用意された音色を使えるようになります。
  3. SoundbankからInstrumentを得て、Synsesizerに設定する。つまりは音色の設定です。
  4. SynsesizerからChannelを得る。
  5. Channelに対して音のon, off の情報を送る。
  6. Synsesizer を閉じる。
以下ソースとコメントの形で説明します。
import javax.sound.midi.* ;
public class HelloChannel {
  public static void main(String[] args){
    MidiChannel channel = null;
    try {

/*
 * システムからSynsesizer を得て、開く。
 * 戻る
 */
      Synthesizer synthesizer = MidiSystem.getSynthesizer();
      synthesizer.open();


/*
 * システムからSoundbank を得る
 * 戻る
 */
      Soundbank soundbank = synthesizer.getDefaultSoundbank();


/*
 * Soundbank 中の最初のInstrument(音色)を使うよう設定する
 * 戻る
 */

      Instrument[] instruments = synthesizer.getDefaultSoundbank().getInstruments();
      synthesizer.loadInstrument(instruments[0]);


/*
 * SynsesizerからChannelを得る。
 * 戻る
 */
      channel = synthesizer.getChannels()[0];


/*
 * Channelを使い音の高さ48、 強さ127で1秒間鳴らす
 * 戻る
 */
      System.out.println("Play pitch:48 velocity:127");
      channel.noteOn(48 , 127);
      Thread.currentThread().sleep(1000);
      channel.noteOff(128);
      System.out.println("Note off");


/*
 *  Synsesizer を閉じる。
 * 戻る
 */
      synthesizer.close();
    } catch(Exception e){
      if(channel != null)  channel.allNotesOff();
    }
    System.exit(0);
  }
}