OSDN Ticket Archive


Ticket #22709

マルチパケットシステムエクスクルーシブでF7を送信してしまう

登録: 2010-08-03 23:35 最終更新: 2010-08-05 23:54

報告者:
yknk
担当者:
yknk
チケットの種類:
バグ
状況:
完了
コンポーネント:
MIDITrail Ver.1.0.x for Windows
マイルストーン:
Version 1.0.5 (完了済み)
優先度:
5 - 中
重要度:
7
解決法:
修正済み
ファイル:
なし

詳細

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音源に送信してしまう。

チケットの履歴

2010-08-03 23:35 更新者: yknk
  • 新しいチケット "マルチパケットシステムエクスクルーシブでF7を送信してしまう" が作成されました
2010-08-04 01:19 更新者: yknk
コメント

原因

処理漏れ。SMF仕様の理解不足。

2010-08-04 01:20 更新者: yknk
コメント

対策

システムエクスクルーシブのイベントデータ登録処理において、 ステータスがF7である場合は、登録する送信データの先頭にF7を含めないようにする。

  • SMEvent::SetSysExData
2010-08-04 01:23 更新者: yknk
コメント

備考

本不具合はSMF仕様を読んでいたら気づいたもの。 実際にマルチパケットシステムエクスクルーシブを含むSMFは見かけたことがない。

2010-08-05 23:54 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2010-08-05 23:54 に更新されました

添付ファイルリスト

添付ファイルはありません