proMidi2.0関数解説

前回に引き続きpromidi講座です。
processingとproMidiの導入については
processingでmidi入力を受け取る for windows
を参照してください。

前回のソースコード

import promidi.*;

MidiIO midiIO;

boolean[] isNoteOn = new boolean[254];

void setup()
{
size(500, 500);
smooth();
background(0);

midiIO = MidiIO.getInstance(this);
//println("printPorts of midiIO");
//midiIO.printDevices();
midiIO.openInput(0,0);

for(int i=0; i

でした。上から順に見てみましょう。

import promidi.*;

MidiIO midiIO;

import promidi.*;はproMidiを使いますよって宣言です。
MidiIO midiIO;はmidi信号をやり取りするための箱を用意しています。

void setup()
{
------------省略-----------------
midiIO = MidiIO.getInstance(this);
//println("printPorts of midiIO");
//midiIO.printDevices();
midiIO.openInput(0,0);
------------省略-----------------

}

midiIO = MidiIO.getInstance(this);はmidi信号をやり取る箱とパソコンとをつなぎます。
コメントアウトしていますが、midiIO.printDevices();は現在パソコンで認識されているMidi機器の一覧が出ます。

midiIO.openInput(0,0);で認識されているMidi機器からどの機器からの入力を受け取るかを指定します。
1つ目の引数がMidi機器の番号、2つ目がチャンネルの番号になります。Midi機器の番号はprintDevices();で表示した際にinputの横に表示された番号を使用します。ここでは

の機器を使用するため1つ目の引数が0になっています。
2つめの引数は基本的に0で問題ありません。

void noteOn(Note note, int deviceNumber, int midiChannel)
{
 ------------省略-----------------
}

openInputで入力設定された機器から入力があった時この関数が呼ばれます。
noteには入力された鍵盤,パッドの番号が
deviceNumberには入力されたmidi機器の認識番号が
midiChannelには入力されたmidiChannelの番号が
格納されています。
ですのでnoteの値を参照することで、どのキーから入力されたかがわかります。

void noteOff(Note note, int deviceNumber, int midiChannel)
{
 ------------省略-----------------
}

noteOnでは鍵盤などを押したときに呼ばれましたが、
鍵盤を離したときにこちらが呼ばれます。
引数はnoteOnと同じなので割愛します。

以上、前回導入にしようした関数の解説でした。
他にも関数は多数用意されており、英語のリファレンスがあるので必要な方は参照してください。
proMidiリファレンス