OSDN Ticket Archive


Ticket #22506

再生終了後に音が鳴り続ける場合がある

登録: 2010-07-16 11:45 最終更新: 2010-07-25 12:29

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

詳細

特定のMIDIデータにおいて、曲の再生が終了しても最後の音が鳴り続ける場合がある。 曲の最後で NOTE ON したまま NOTE OFF しないMIDIデータで発生している。

チケットの履歴

2010-07-16 11:45 更新者: None
  • 新しいチケット "再生終了後に音が鳴り続ける場合がある" が作成されました
2010-07-18 03:41 更新者: yknk
  • マイルストーン(未割り当て) から Version 1.0.4 (完了済み) に更新されました
2010-07-23 01:08 更新者: yknk
コメント

原因

NOTE ON したままトラックが終了するSMFがある。 シーケンサは素直に従うため、再生が終わっても音が鳴ったままになる。

問題のSMFは cvs.exe や rcpcv.dll で *.RCP から *.MID に変換したものである。 変換元の *.RCP で、トラックの最終データが次のように ST < GT になってると、 NOTE OFF が欠けたSMFができるらしい。変換ツールの不具合??

NOTE  ST  GT  VEL
B5    24  37  126
END_TRACK

SMFの仕様で、このようなデータへの対処方法(指針)が定義されているかどうかは不明。

2010-07-23 01:14 更新者: yknk
  • 解決法なし から 修正済み に更新されました
コメント

対策

再生終了時に、全トラックを NOTE OFF する。 少々乱暴であるが、音が鳴りっぱなしになることを確実に避ける。

SMSequencer::_OnTimer

データ終端に到達したら全トラックの NOTE OFF を行う。_AllTrackNoteOff()

SMOutDevCtrl::NoteOffAll

全トラックノートオフの処理は実装済みであったが、 MIDIデバイスに送信するコマンドが間違っていたので修正する。

  • オールサウンドオフ Bn 78 ←こちらを送信していた
  • オールノートオフ Bn 7B
2010-07-25 12:26 更新者: yknk
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2010-07-25 12:26 に更新されました
2010-07-25 12:29 更新者: yknk
コメント

備考:ログインせずにチケットを登録してしまったので、報告者が(匿名)になっています。

添付ファイルリスト

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