import javax.sound.midi.MidiSystem;

import jp.crestmuse.cmx.amusaj.sp.MidiInputModule;
import jp.crestmuse.cmx.amusaj.sp.MidiOutputModule;
import jp.crestmuse.cmx.amusaj.sp.SPExecutor;
import jp.crestmuse.cmx.sound.VirtualKeyboard;


public class CmxTutorial {

  public static void main(String[] args) {
    try {
      // 仮想キーボード
      VirtualKeyboard vk = new VirtualKeyboard();
      vk.setVisible(true);

      // SPモジュール
      MidiInputModule mi = new MidiInputModule(vk);
      MidiOutputModule mo = new MidiOutputModule(MidiSystem.getReceiver());

      // SPExecutor
      SPExecutor sp = new SPExecutor();

      // SPExecutorにモジュールを登録する
      sp.addSPModule(mi);
      sp.addSPModule(mo);

      // モジュールを繋ぐ
      sp.connect(mi, 0, mo, 0);
      sp.start();

      // 終了
      System.in.read();
      sp.stop();
    } catch (Exception e) {
      e.printStackTrace();
    }
    System.exit(0);
  }
}

