Bug #91
Redmine Admin がほぼ11年前に更新
h1. 状況(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のサポートが難しくなったことがきっかけである。
h1. 概要(2013.12.18)
V6.41~V6.63で発生を確認しましたが、V6.26では発生しないようです。
【現象】
コマンド*MARK""のある曲の再生中、最後に到達した瞬間にシークバーの[<]をクリックすると、
次に鍵盤をクリックして再生した際に無音となる。タイミングはかなりシビア。
音が消えても、一度停止して再開すると再び音が出る。
【再現コード】
<pre>
dddd *MARK"" dddd
</pre>
【追記】
本件の不具合を発現させるためには*MARK""は必ずしも必要でなく、
以下の様な再現コードにおいても、曲尾到達タイミングで[BS]キーを押下して曲頭に巻き戻すと、
続く再生で同様に無音演奏となる。
<pre>
dddd
</pre>
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のサポートが難しくなったことがきっかけである。
h1. 概要(2013.12.18)
V6.41~V6.63で発生を確認しましたが、V6.26では発生しないようです。
【現象】
コマンド*MARK""のある曲の再生中、最後に到達した瞬間にシークバーの[<]をクリックすると、
次に鍵盤をクリックして再生した際に無音となる。タイミングはかなりシビア。
音が消えても、一度停止して再開すると再び音が出る。
【再現コード】
<pre>
dddd *MARK"" dddd
</pre>
【追記】
本件の不具合を発現させるためには*MARK""は必ずしも必要でなく、
以下の様な再現コードにおいても、曲尾到達タイミングで[BS]キーを押下して曲頭に巻き戻すと、
続く再生で同様に無音演奏となる。
<pre>
dddd
</pre>