スキップ実行時にコントロールチェンジが送信されない
スキップ実行時のMIDIイベントフィルタリング処理で、判定文にコーディングミスがあった。 (ccNo == 121)とすべきところ、(ccNo = 121)となっていたため、常に真の判定となっていた。 スキップ範囲に、CC#1,CC#7,CC#10,CC#11以外のコントロールチェンジが含まれていた場合、 ピッチベンド、モジュレーション、エクスプレッションのキャッシュデータを破棄してしまうため、 スキップ完了時に送信すべきコントロールチェンジが送信されない。
問題のフィルタリング処理は SMSequencer::_FilterMIDIEvent に存在する。
//CC#121 リセットオールコントローラ else if (ccNo = 121) { //クリア対象パラメータのキャッシュを破棄する .... }
SMSequencer::_FilterMIDIEvent のコーディングミスを修正する。
修正前
else if (ccNo = 121) {
修正後
else if (ccNo == 121) {
Windows版とMac OS X版。 iOS版は初回リリース時に対策済み。
2013/2/18 Win版終了
スキップ完了時に送信すべきコントロールチェンジが送信されない場合がある。