Java MIDI Sequenceを使って、きらきら星を演奏する




今日は七夕。なんで、きらきら星を演奏しますw

最近はMIDIもあまり見かけません。ちょっと寂しいですね。
とは言え、DTMではもちろん現役ですね。

Sequenceを使って、きらきら星を演奏するサンプル

MIDIできらきら星のメロディーを演奏します。

実行結果

きらきら星が演奏されます♪
せっかくなんで音色はMUSIC BOXにしてます。
なんとなく、電車が出発しそうな感じですねw

サンプルの解説

シーケンサーの取得は前回同様です。
次に出てくるのが、シーケンス。これはMIDIファイルの中身(データ構造)や楽譜だと考えるとわかりやすいですね。
Sequenceは、解像度を指定してオブジェクトを作成します。
第一引数PPQは、パルス・パー・クオーターノート。つまり、四分音符あたりでどれくらいの分解能にするかを決めたいですと言っています。
んで、その解像度が第二引数です。このサンプルでは1なので、次に進むと次の四分音符ですw
楽譜は、Sequence#createTrack()で作ったトラックに入れます。
トラックには、先ほどの次に進む(=tick)ごとに、楽器の操作に関する情報などが格納されます。
途中に出てくる、NOTE_ONが鍵盤を押す。NOTE_OFFが鍵盤から指を離す。って感じです。

また、音色の変更は、PROGRAM_CHANGEイベントでできます。この例では、10(MUSIC BOX)を指定しています。
例えば、0はピアノ。40はバイオリンです。ただしGM(General MIDI)規格の場合。このあたりはどの規格でも同じだとは思いますが、後ろの方は変わってきます。