GSモード時ドラムマップを 3ch 以上割り当てた際に音色名検索が正常に動作していない
元々 XML ベースで外部設定ファイル化をしていましたが、MIDI 規格毎にドラム/メロディ パートの
切り替えのための MIDI インプリメンテーションが想定以上に異なり、単一ルーチンで振り分けを行う方法だと
必要以上に場合分けが複雑になるため、規格毎にプラグイン化を図る方向で検討します。
プログラム修正による影響反映が広くなりそうなので段階的に対応を進めます。。。
Drum1/2 に関係なくそのチャンネルは「ドラムパート」として以降の Program change でドラム音色名を検索する。
あくまでも、画面表示に必要なプレーヤー内部の情報更新処理の問題であるので、MIDIメッセージそのものの改ざんは行わない。
SC-8850 側(恐らくその他GS系でも同じ?)では Drum1/2 で音色については共有をしているため、プレーヤー側と音源側の音色情報が異なる場合がある。
凡例:
という形で USE FOR RHYTHM PART を送信し、その後 Program change で以下のように音色を変えた場合
SC-8850 側では、CH3 に割り当てている Drum1 も CH1 の Program change 時に連動しCH3 の音色も 0:0:9 ROOM となる。(SC-8850実機にて確認)
MIDIPlayer 側では CH3 はドラムパートに割りあてられる直前の音色の MSB,LSB,No をそのまま使用しドラム音色側の音色を検索し使用する もし、USE FOR RHYTHM PART 送信前に Program change を行っていた場合以下のようになる。
CH3: 0:0:17 Organ
CH3: 0:0:17 POWER
この場合、動作確認が膨大になることと、手元に当該機種が無いと確認が不可能。 プログラムについても、場合わけなどの処理が多岐にわたる可能性があるので個別のプラグイン化をしてしまいたい所。
ただ、上記「フェーズ1」の対応方法で通常の使用については支障は無い…はず。
org.rz.midiplayer.context.DefaultSimpleHandler クラス
SysEx USE FOR RHYTHM PART の処理が適切ではない USE FOR RHYTHM PART 検出時のドラムマップ割り当ての実装の見直し
SC-8850 のマニュアル P238 のMIDI インプリメンテーションの解釈を 取り違えていたようなので再度読み直し、実装を見直す。
フォーラム MIDIPlayer掲示板 [#49425] からの引用
[forum: 49425]