Bug #91

(V6.63)曲尾到達時に巻き戻しシークを行うと、その後の再生で無音演奏となる

Redmine Adminほぼ11年前に追加. ほぼ11年前に更新.

ステータス:終了開始日:2013/12/18
優先度:通常期日:2013/12/18
担当者:-進捗 %:

100%

カテゴリ:-作業時間の記録:-
対象バージョン:-

説明

状況(2013.12.18)

V6.64にて対応済み。

(原因)
演奏が曲尾到達した際に、以下の処理を実施している。
①音源のクローズ処理を行う
②演奏開始ノートをNULLにクリアする
一方、巻き戻しシークのイベントが起こった場合は、シーク位置の演奏開始ノートが新たにセットされる。
今回の事象は、①の処理中に巻き戻しシークのイベントが発生するもので、そこで演算された演奏開始ノートが、その後に続く②の処理でクリアされるために発生した。
演奏開始ノートがNULLの場合、MIDI音源に発音メッセージを送信しない。
しかるに演奏開始時刻はシークポイントを堅持しているため、無音演奏という事態に陥った。

本件は、V6.33→V6.34で行った「タイマー停止時に適度なインターバルを与え、その後にMIDI音源のクローズを実施する」という対処により、
①に積極的な処理時間を与えることとなり、その結果発現しやすくなった。
しかし、あくまでも発現確率が高まっただけであり、V6.34で与えたインターバルが真因ではない。

(対処)
演奏が曲尾に到達した時点で、即座に演奏開始ノートをNULLにクリアし、その後でインターバルを含む音源クローズを行うことにした。
これにより、シーク操作が音源クローズ中に起こっても、その演算結果である演奏開始ノートがクリアされることはなくなった。

(補足)
本対処とは直接の関係は無いが、V6.64よりビルド環境をVS2005からVS2010に変更した。
これにより、以降の対応OSは、XP/7/8/8.1となる。
V6.60でのユニコード対応により、98/Me/2000のサポートが難しくなったことがきっかけである。

概要(2013.12.18)

V6.41~V6.63で発生を確認しましたが、V6.26では発生しないようです。

【現象】
コマンド*MARK""のある曲の再生中、最後に到達した瞬間にシークバーの[<]をクリックすると、
次に鍵盤をクリックして再生した際に無音となる。タイミングはかなりシビア。
音が消えても、一度停止して再開すると再び音が出る。

【再現コード】

dddd *MARK"" dddd

【追記】
本件の不具合を発現させるためには*MARK""は必ずしも必要でなく、
以下の様な再現コードにおいても、曲尾到達タイミングで[BS]キーを押下して曲頭に巻き戻すと、
続く再生で同様に無音演奏となる。

dddd

関連するチケット

関連している Release #184: Muse V6.63 終了 2013/12/06

履歴

#1 Redmine Adminほぼ11年前に更新

  • 説明 を更新 (diff)

他の形式にエクスポート: Atom PDF