マルチパケットシステムエクスクルーシブでF7を送信してしまう
MIDIデータファイルにマルチパケットシステムエクスクルーシブが含まれていた場合、本来送ってはならない"F7"をMIDI音源に送信してしまう。
マルチパケットシステムエクスクルーシブの例 SMFデータ (1) F0 02 11 22 → 先頭パケット:F0 11 22 を送信する (2) 64 → デルタタイム (3) F7 03 33 44 55 → 後続パケット:33 44 55 を送信する(先頭のF7を送信しない) (4) 64 → デルタタイム (5) F7 04 66 77 88 F7 → 後続パケット:66 77 88 F7 を送信する(先頭のF7を送信しない)
マルチパケットシステムエクスクルーシブは上記のように処理するべきであるが、 現状は(3)(5)において、先頭にF7を追加してMIDI音源に送信してしまう。
処理漏れ。SMF仕様の理解不足。
システムエクスクルーシブのイベントデータ登録処理において、 ステータスがF7である場合は、登録する送信データの先頭にF7を含めないようにする。
本不具合はSMF仕様を読んでいたら気づいたもの。 実際にマルチパケットシステムエクスクルーシブを含むSMFは見かけたことがない。
MIDIデータファイルにマルチパケットシステムエクスクルーシブが含まれていた場合、本来送ってはならない"F7"をMIDI音源に送信してしまう。
マルチパケットシステムエクスクルーシブは上記のように処理するべきであるが、 現状は(3)(5)において、先頭にF7を追加してMIDI音源に送信してしまう。