himajin925さん > 分かりました。この例では > #A0 @ X101=0 X100=2 X6=64 X6=100:1 R=64.. X101=0 X100=2 d4 d d d > とやればいいんですね。※2 とりあえず、今回のバグに対応したバージョンをメールで送付しますので、 上記の記述でうまくいくかどうかを、試してみてもらえますか?
> このX6=65〜100が「X99=1 X98=99」の DataEntry として評価されてしまう可能性がある、とこう考えたのですが、違ってますか? 今回送付するMuseは、シークポイントの演奏直前に発行すべきNRPN/RPNを、正しく発行するようにしたつもりです。 この件も、試してみてください。
> ※1途中再生の場合、波形加工の NRPN だからバッファリング、であってますか? シーク時の処理は他のコントロールとの絡みがあってとても複雑です。
NRPN(MSB),NRPN(LSB),RPN(MSB),RPN(LSB),DataEntry(MSB),DataEntry(LSB)が絡み合い、 ランニングステータスが施された波形加工の3特性(R= W= Q=)が、 それぞれ2ないし3のパラメータで同時並行的に遅延しながらDataEntryを連続的に送信。 しかも、Xコマンドの遅延による複数のDataEntryが、そこに不規則に挿入される。 加えて、バンクセレクトの様に順番が関係するものや、 ポリオン/ポリオフの様な排他的なものなど、が入り乱れている。 ・・・といった状況なので、様々なタイプのバッファやフラグを駆使しています。
実は、このような工夫を一切行わず、 再生位置までのコントロールを単純にすべて音源送信してしまえば、プログラムは数行で済みます。 しかしそれではシークが極度に遅くなり、音源側もメッセージをロストしてしまう可能性があります。 このため、できるだけ最終結果のみを送信する様、かなり手の込んだプログラムになっています。
よって、 > ※1途中再生の場合、波形加工の NRPN だからバッファリング、であってますか? に対して「あっています」と答えるのは間違いではないのですが、それがすべてではありません。
> ※2 muse が内部で使用する RPN NRPN はこのR=.. W=.. の場合だけですか。将来的にも増えませんか? 本課題を回避するためにRPN NRPNコマンドを立ち上げる可能性は、ゼロではないですが薄いです。
> 開発者様なら、もっとスマートに解決してくれることを祈って。 継続検討いたします。 |