Bug #90

(V6.62)版数表示部分に♪マークが表示されていない状態で演奏する場合がある

Redmine Adminほぼ11年前に追加.

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

100%

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

説明

状況(2013.12.02)

V6.63にて対応済み。

(原因)
演奏停止時点でのメインウィドウのシークバーによる位置決めは単純であるが、演奏中のシーク操作ではシーク後に演奏を再開する仕様である。
演奏中のシークであっても、内部処理としてはシーク開始時点で一旦MIDI音源をクローズし、シーク先が決定した時点で再度オープンし演奏を再開する。
一方、版権表示部分の♪マークは、基本的にはMIDI音源がオープンされ演奏している状態を表現しているが、演奏中のシークにおいては
内部的にMIDI音源がクローズされていても♪マークを表示したままにしておき、停止状態でのシークか演奏中のシークかを識別し易くする仕様である。
そして、どちらのシークであるかを内部フラグに記憶しておき、無駄な描画をしない様、演奏中シークの場合は♪マークを再描画しないようにしてあった。

しかし、本件の状況のように演奏開始とシークが間髪入れず実施されると、内部フラグと♪マーク表示との整合タイミングにずれが生じ、
♪マークが表示されていない状況で無駄な描画を行わないシーケンスに入ってしまい、結果として♪マークが非表示状態で演奏している状態に陥った。

なお、V6.51からV6.52にマイナーアップした際、確実なメッセージ処理をするために、MIDIオープンと演奏開始との間に0.1秒ほどのインターバルを与えた。
このインターバルが、より「演奏開始とシークが間髪入れず実施される」状況を発生させ易くしていた。
このインターバルが存在しなければ確率は低くなるが、所詮原理的に本症状は発生する。

(対処)
♪マークの描画に関しては、シーク区分の内部フラグ状態によらず、MIDI音源オープン時に常に表示させるよう改めた。

概要(2013.12.01)

末尾に空でない文字列をもつ *STOP があり、それより前に *MARK があるMuse データで確認した挙動です。

*MARK を通過した後に Ctrl+→ を押して、*STOP の位置で停止している状態で、スペースキーを押すと♪が表示されます。
その一瞬後に Ctrl+← を押す(タイミングがちょっと微妙)と、♪が消えて、直前の *MARK に戻って再生が始まります。
しかし、このとき♪が消えたままで再生している状態になります。

更に単純な状況で再現しました。
MARKは不要でした。

_1
*STOP"xxx" 

(1)スペース押下で冒頭から演奏開始(上記データでは音は出ないけど)
(2)演奏している間に[CTRL]キーを押下(以降、[CTRL]は押しっぱなしです)
(3)STOPで停止したら、スペース押下の直後に、間髪入れず[←]押下([CTRL]は押したまま)
(4)シークバーが曲頭に戻って演奏開始(この時点で♪が表示されていない)


関連するチケット

関連している Release #183: Muse V6.62 終了 2013/12/01

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