Ticket #22506

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

Open Date: 2010-07-16 11:45 Last Update: 2010-07-25 12:29

Reporter:
(Anonymous)
Owner:
Type:
Status:
Closed
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

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

Ticket History (3/6 Histories)

2010-07-16 11:45 Updated by: None
  • New Ticket "再生終了後に音が鳴り続ける場合がある" created
2010-07-18 03:41 Updated by: yknk
2010-07-23 01:08 Updated by: yknk
Comment

原因

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 Updated by: yknk
  • Resolution Update from None to Fixed
Comment

対策

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

SMSequencer::_OnTimer

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

SMOutDevCtrl::NoteOffAll

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

  • オールサウンドオフ Bn 78 ←こちらを送信していた
  • オールノートオフ Bn 7B
2010-07-25 12:26 Updated by: yknk
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2010-07-25 12:26
2010-07-25 12:29 Updated by: yknk
Comment

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

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login