VST プラグイン内から VST ホストのトランスポート(再生/停止)を制御したいと考えています。sendVstEventsToHost メソッドがホストにコマンドを送信する手段を提供していることは明らかですが、これらは MIDI であり、トラックにアタッチされていると言われています。
出来ますか?何か案が?
ありがとう。
SDK をざっと見てみると、ホストのテンポなどを設定できるオペコード「audioMasterSetTime」が明らかになります。したがって、答えは「はい」です。悪いニュースは、それをサポートしているホストがほとんどないことです。私が知っているのは Bidule だけです。
それは絶対に不可能です。VSTプロトコルではプラグインがホストにイベントを送信できますが、ほとんどの(すべてではないにしても)ホストは、プラグインから送信されたテンポと曲の位置の変更を無視します。
たとえば、ビートカウントプラグインのように、ホストのテンポと位置を制御するプラグインがあると便利ですが、これにより、プラグインが誤ってホストテンポを乗っ取ったり、複数のプラグインが送信したりするなど、多くの厄介な副作用が発生する可能性があります。ホストに対するテンポ/位置の変更が競合しています。
そのため、これは良い考えではありません。そのため、VSTフレームワークでは実際にはこれが許可されていません。
@obiwanjacobiが示唆しているように、ホストのテンポを制御する最良の方法はMIDIを使用することです。これには、仮想MIDIデバイスを作成する必要があります。残念ながら、これを行うための(非sysex)MIDIプロトコルメッセージがないため、ホストトランスポートを制御することはできません。
私はそれが可能だとは思わない。VST プラグインの仕様は、オーディオおよび MIDI 処理に基づいています。ホストを制御することはほとんど不可能です。私が考えることができる唯一の例外は、プラグインが新しい曲の位置を「リクエスト」できるようにする SetTimeInfo メソッドです。しかし、そのメソッドは VST 2.4 で廃止されました。
仮想 MIDI ポートを使用して回避策を作成し、プラグインによって提供される外部ソースにホストを同期させることができる場合があります。これについては考えていないので、うまくいくかどうかはわかりません。