TIPS3[逸般的な機能]PV[1117292]逸般的な機能ソフトウェアホールドMIDI標準のホールド機能は、ノートオフ後の余韻でホールドをかけた場合はサスティン動作に戻るようになっています。これを厳密に実装している音源では、あまりフレクシブルな使い方ができない代物となってしまっています。SC-8850では動作自体も怪しいというオマケまでついています。コマンドの機能のひとつとして用意しました。これらの機能はトラック毎に指定可能で、同じMIDIチャネルを使っている他のトラックにも影響しません。コマンドでステップ数を指定する必要があります。この場合、再開するまでの間隔をいちいち数える必要があるため、長い間を空けるときは面倒です。コマンドでウェイクコールをかけて復帰できるようにしました。コマンド実行から1ステップ遅れます。この遅れは次回のウェイトにて相殺されますので、後々までズレ続けるようなことはありません。コマンドでマークを入れています。コマンドで停止(halt)します。コマンドでトラック4にウェイクコール(wake)をかけて復帰(wake)させます。1ステップ遅れて再生されます。他のトラックと同時に再生されるようになります。G上の例は、もう1ランクこんがらかっています。その後、トラック4はトラック1を復帰させます。ここで復帰して1ステップ遅れている状態のトラック1がトラック3を復帰させようとしています。順に1ステップずつズレて再生されます。同時に再生されるようになります。拡張コントロールDualMusikでは多数の拡張コントロールチャネルを持ち、それぞれを通じていくつかのエフェクトをかけることができます。これらは全てある程度独立しており複数のエフェクトを同時に利用できるが、全てがトラック毎に用意されているわけではないため、複数のトラックから同一の拡張コントロールチャネルを操作しようと競合して正常に動作しない場合もあります。一部のエフェクトは性質上無意味なものや共存できないものもあります。この他、一度に多種のエフェクトを濫用すると処理が重くなることにも注意。動作詳細はデータテーブルを参照。スキッピング再生を部分的に省略する機能です。厳密には、ノートオンとウェイトだけを省略します。その他の処理はノンウェイトで一度に実行されますので、かなりの負荷がかかります。最適化スキップを行います。一部のコントロールは最後のものだけが実行対象となり、残りは省略されます。これにより、スキップ時にかかる負荷が大幅に緩和されました。デバッグ用なので、公表対象のデータには使わないでください。コントロールチェンジマスキング指定したコントロールチェンジの送信を抑制する機能です。16bitずつ割り当てられています。スウィッチングフラグの状態により、反映させるMMLを切り替える機能です。コマンドで設定できます。パラメータを2進数で書くと右端をフラグ0として列記できて解かり易いでしょう。コマンドで設定します。パラメータは1になっている位置のフラグをチェック対象にすることを表します。以下の例では、3つのフラグをGM,GS,XGに割り当てGSの設定を選択しています。i0,02~4行目はGM,GS,XGそれぞれの初期設定で、チェック対象のフラグが1になっている場合のみ行末までのMMLを反映させるようにしています。(この例では、2,4行目のMMLが無視される)5行目は、逆にチェック対象のフラグが0になっている場合のみ有効とする条件指定です。パラメータの区切りで、1番目のパラメータが省略されていることを示しています。どのフラグも1であるかどうかのチェック対象としないことを意味します。ステップカウンタDualMusikには小節の概念がありませんが、分解能,拡張コマンド#88(SMFのメタイヴェント#88と等価),ステップカウンタを参照して擬似的に小節を表現できるようにしました。基本的にはステップ毎に余りステップ数がカウントアップされ、分解能の値に達したら小節数をカウントアップして余りステップ数を0に戻します。拡張コマンド#88は余りステップ数から拍数を計算するために参照されるほか、拡張コマンド#88が設定される時点を新しい小節の始まりと解釈し、余りステップ数があった場合は小節数をカウントアップして余りステップ数を0に戻します。コマンドを使ってステップカウンタに特殊な動作を要求するシグナルを送ることができます。これらの機能はSMFに影響されないため、使うとエクスポートしたSMFの小節線位置が怪しくなり得ます。これを回避するためには、修正用に拡張コマンド#88を配置するなどの工夫が必要となります。・カウント停止=25,1でカウントアップ停止,=25,0で再開となります。MIDI機器初期化用のプリギャップ前後に配置してその部分を勘定から外すとか。・小節カウントアップ抑制=25,2を送ると、余りステップ数が分解能の値に達しても小節数のカウントアップを行わなくなります。この状態で=25,0を送ると抑制が解かれ、余りステップ数が分解能の値以上の場合は小節数をカウントアップして余りステップ数を0に戻します。(たとえ2小節ぶん以上貯まっていたとしても、カウントアップは1つだけ)これはテンポを使わずステップ数を延長させてリタルダンドやフェルマータなどを表現した場合に起こる小節線のズレを修正するためにあります。・余りステップ数リセット=25,3を送ると余りステップ数を0に戻します。小節数のカウントアップは行いません。・強制カウントアップ=25,4を送ると小節数を強制的にカウントアップし、余りステップ数を0に戻します。ステップ数が0であっても、カウントアップされます。・完全リセット=25,5を送るとステップカウンタをリセットします。バックアップされた内容もリセットされます。・バックアップ,リストア=25,6でステップカウンタの現在値を記憶し、=25,7で記憶された値に戻します。記憶できる容量は1回ぶんのみで、=25,6が送られると以前記憶した内容は上書きされます。ループなどでカウンタを戻したいときに使います。・強制加算=26,n(nは0~65535)を送ると、余りステップ数にnが加算されます。小節のカウントアップは行われません。弱起の曲などで余りステップ数の初期設定を行いたい場合に使います。