MAX 7 MIDI基礎6
ノートメッセージを分析して、数値を報告するオブジェクトとしてboraxオブジェクトがある。
boraxオブジェクトは9このアウトレットをもち、それぞれからノートオンごとのカウントであるボイス番号や、ノートナンバー、ベロシティ、前のノートオンからの経過時間であるデルタタイムなどを出力する。
・midiin/outオブジェクト
[144, 60, 127]といった本来のMIDIメッセージをraw MIDIメッセージと予備、その受信用オブジェクトとしてmidiinオブジェクト、送信用オブジェクトとしてmidioutオブジェクトがある。
また、midiparseオブジェクトは、受信したMIDIメッセージのうち代表的なものをフィルタリングして扱いやすい形で出力できる。
一方、midiformatオブジェクトはパッチ内で処理されたMaxメッセージを本来のMIDIメッセージにフォーマットしてmidioutに渡してくれる。
・seqオブジェクトでは、SMF(スタンダードMIDIファイル)を読み込み、再生することが可能である。
readメッセージで任意のファイルを読み込んだ後、bangあるいはstartメッセージを第1インレットに受信すれば、MIDIファイルの再生を行い、stopメッセージで停止する。
なお、発音中にstopメッセージを押すと鳴りっ放し状態が起きてしまうため(どうやらこのstopメッセージは各MIDIノートとベロシティに対してではなく、seqオブジェクトとして全体にかかっているようでだ)、midiflushオブジェクトを挟み込むことで解決できる。
midiflushは、noteoutオブジェクトに対するflushと同じ機能であり、bangを受け取ることで強制的にノートオフを作り出す。
また、seqオブジェクトは再生が完了すると第2アウトレットからbangメッセージを出力するので、これを利用してgateオブジェクトによってループ再生のオンオフ機能を追加することも出来る。
しかし、これだけではmax上で単にMIDIファイルを再生するのみであって、特に有用性を感じないので、midiparseオブジェクトと組み合わせて、ノートナンバー、ベロシティ等分離して自由にmax上でカスタムできるようにすることも出来る。