https://adventar.org/calendars/3353 の5日目エントリーです。
MPEとは
本章で扱うMPEとは、MIDI Polyphonic Expressionのことであり、MMA (MIDI Manufacturers Association) が承認したMIDI仕様の拡張のひとつです。MPEは、既存のMIDIメッセージ機構を利用しつつ、本来ノートごとに設定できないピッチベンド、チャンネル・プレッシャー(CAf)、CC74(一般的にはカットオフ)の値をノートごとに設定できるようにするためのものです。
MPEを実現する具体的な方法をひとことで説明すると、「MPEモードで動作している音源では、MPEゾーンに割り当てられたチャンネルがひとつひとつのノートとノート別の表現を処理する」ということになります。MIDI音源には16チャンネルあることが想定されているので、同時に15音まで発音することが可能ということになります。
1音色のために最大16チャンネルを使用する、というのは、贅沢なチャンネルの使い方であり、標準MIDIメッセージだけで再生できる楽曲のためではなく、DAWなどを想定したDTM環境向けの仕様であるといえます。入力デバイス側からの多様な入力方法を実現する手段として策定されたものでもあります。
MPE仕様はROLIのサイトからダウンロードできます。(MMAのサイトはまともに資料公開する気が無いので無視していいです。) https://rolisupport.freshdesk.com/support/solutions/articles/36000027933-what-is-mpe-
個別化できるメッセージ
MPEを解説するWebサイトによっては、いかなるCCなどのメッセージもノートごとに設定できるようになるかのように読めるものがありますが(「従来のMIDIメッセージではチャンネルごとにしか設定できなかったものがMPEではノート毎に設定できるようになる」と書いておきながらMPEで具体的に「何の」メッセージが処理できるか書いていないものはわたしはNGだと思っています…)、少なくとも最終的なMPE仕様で規定されているのはPitchBend, Channel Pressure, CC 74の3種類のみです(仕様書2.3にあるTable 1参照)。モジュレーション、ヴォリューム、ダンパーペダルなどは、明示的にSend: Not Recommended、Receive: Cannot expect to be respondedと書かれています。
これは、音源側でありとあらゆるメッセージがノートごとに処理されることは期待できない、というMPE仕様策定チームの意図を表したものであるといえます。
CAfとPAf
CAfを個別のノートに設定できる、というのは、実質的にはMPEのCAfはPAfと変わるところが無い、ということを意味しています。それどころか、MPEゾーン(個別のノート)に対するPAfの送信は想定されていません。要するに、MPEという仕様を策定するのであれば、MPEモードにあってはPAfはCAfによって一貫性のある処理で実現するのが筋である、とされているのです。そして、MPEモードにおけるPAfの用途は仕様によって予約されています。
ユーザーから見て、MPEによるCAfのサポートは、何ら機能的なアドバンテージをもたらすものでは無いでしょう(それどころか、間にMPE非対応のパスが含まれていると、メッセージが損なわれる可能性があります。もっとも普通のMIDIメッセージとしてスルーしてくれる処理系なら問題ないでしょう)。
Pitch BendとBend Cent Mode
ピッチベンドは、通常はそれ単体で調整するものではなく、ピッチベンドの効果の大きさを(通常)半音階単位で調整するピッチベンド・センシティビティと合わせて調整するのが一般的です。MPEモードでは、全体的なピッチベンド・センシティビティとノートごとのピッチベンド・センシティビティを、両方指定することができます。この場合、音源側は、これらを両方考慮して出力を決定する必要があります。
ピッチベンドの値も、もちろん全体的な値とノートごとの値を両方指定される可能性があります。送信側デバイスはどちらかのみを送信するかもしれませんが、受信して処理する音源側は、これらを両方処理することが期待されます。
CC 74(カットオフ)
CC74はMIDI標準仕様ではいかなるメッセージとしても規定されていないものですが、RolandやCASIOがFilter cutoffに、YamahaもBrightnessに割り当てているので、およそ同じ目的のものとして規定されていると考えてもよいでしょう。
拡張性
MPE仕様に拡張性はありません。これらの3種類の表現以外は、将来の仕様で策定されるかもしれない、とだけ書かれています。