RX62N 用FM音源プログラム -- TGRX62N (3)

RX62N 版FM音源プログラムの「実力」を見るために、プログラムの同時発音数を増やす変更を行い、調べた結果、次のようになりました。

fs 同時発音数
24 kHz 32
30 kHz 25
32 kHz 24
40 kHz 18
48 kHz 15

現在は、まだ、プログラム中に「ボイス・アサイナ」を組み込んでおらず、MIDI チャンネルあたり 1音だけ、つまり「モノ」モードでしか発音できません。
そのため、変更前は、16 チャンネルの MIDI に対応して、要素数 16 の MIDI チャンネル・パラメータのデータ構造の配列と、 同じく要素数 16 の発音ユニットのデータ構造の配列を用意することで対応していました。
発音数を増やすための変更は、単純にそれぞれの配列の要素数を 32 に増やし、MIDI チャンネル 1 〜 32 に対応する形で行いました。
しかし、(レガシー) MIDI 規格では 1 〜 16 チャンネルまでの演奏データしか送られてきませんから、このままでは増設した 17 〜 32 チャンネルに相当する部分の音源を発音させることができません。
そのため、「マルチ・ポート」をサポートする「シリアル MIDI」ドライバの仕様に合わせ、増設分の音源も発音できるようにしました。
「マルチ・ポート対応」は、具体的には、システム・コモン・メッセージに属するステータス・バイト「F5h」を利用するもので、MIDI 規格では「未定義」のコードとなっています。
厳密には「MIDI 規格」とは、5 mA カレント・ループ、5 P DIN ケーブル、31.25 kbps 転送レートの MIDI インターフェース・ハードウェアを使用するシステムに限定されるものです。
そのため、ハードウェア仕様の違う「シリアル MIDI」は厳密には MIDI 規格に属さないので、「勝手な」拡張をしても、MIDI 規格を「破る」ことにはなりません。
「勝手」な拡張なので、シリアル MIDI ドライバのメーカにより、多少の違いがあるようですが、ここでは、YAMAHA の 5 ポート対応の CBX Driver の仕様、

ポート コード
A F5h 01h
B F5h 02h
C F5h 03h
D F5h 04h
E F5h 05h

に合わせてあります。
具体的には、ポート指定なし、あるいはポート A 指定で 1 〜 16 チャンネル側の音源が選ばれ、ポート B の指定で 17 〜 32 チャンネル側の音源が選ばれるようにしてあります。