proMidiメモ

 今回の私が部長を務めるimpression!部内発表会では「蚊音-KANON-」という作品を作りました。この作品では鍵盤を入力インターフェースとして、鍵盤を叩くと蚊が生まれ、それに魔法の蚊取り線香の虹色の煙が近づくと蚊が音符に変わって音が鳴るというもの。もうちょっといろいろ機能をつけて、さらに面白くしたら、またニコ動にアップしようと思います。

 MIDIでの入力は初挑戦で、ちょっと苦労したので、メモをば。

* proMidiをインポート

import promidi.*;

* 前準備
 まず、オブジェクトの宣言を行います。

MidiIO midiIO;
MidiOut midiOut;

 インスタンスの生成します。

midiIO = MidiIO.getInstance(this);
//midiOut = midiIO.getMidiOut("MIDIチャンネル","MIDIデバイスナンバー");
midiOut = midiIO.getMidiOut(0,0);

 ちなみにMIDIバイスナンバーはMIDIバイスの名前でもいいようですが、なぜか上手く行きませんでした。方法が違うのかな。。。

 MIDIバイスの確認するためには、

midiIO.printDevices();

を使うと便利です。

* note on信号がきたときに呼び出される関数
 関数noteOn()はnote on信号がきたときに呼び出される関数なので、これをオーバーライドして、送られてきたMIDI信号の情報を取得できます。

void noteOn(Note note, int device, int channel){
	//ノートナンバーを取得
	int noteNumber = note.getPitch();

	//ベロシティを取得
	int velocity = note.getVelocity();
}

* 音を鳴らす

midiOut.sendNote(new Note(noteNumber,velocity,millis);

 Noteというクラスは音符を作るクラスで、コンストラクタにノートナンバー、ベロシティ、音の長さを入力すると、それに見合った音符を作ってくれます。これをMidiOutクラスのsendNote()を用いて送ることで、音が鳴ります。


 MIDIは一つの鍵盤を押すだけで、ノートナンバーとベロシティという二つの信号が入力され
るので、表現の幅が広がると思いました。