2011-05-26 10 views
6

16個のMIDI入力と16個以上のオーディオ出力を持つVSTインストゥルメントを作成します。 kontaktやhalionのやり方と同様です。VSTインストゥルメント複数入力と出力

アイデア?

+1

しかし、すでにvstプログラミングに関する経験はありますか?私は、16チャンネルが2つ以上のものを実装するのがより難しいと思うのは驚きです。これは、SynthMakerのようなソフトウェアを使ってvstプラグインを構築する場合(これまでの唯一の方法です)ではそうではありません。そこには、入力と出力の任意の量を追加することができます。 – leftaroundabout

+0

いくつかの経験、私はシンセメーカーを使用しています。しかし、私の新しいプロジェクトはC++にする必要があります。 –

+2

別のこと:実際には16のMIDI入力、またはわずか16のMIDI _channels_(これは任意のMIDI接続によって提供される番号です)が必要ですか? – leftaroundabout

答えて

4

注意事項については、特に機器に16個の入力と出力が必要なことはありません。しかし、16のMIDIインプットと16のオーディオアウトプットを持つことは、ドラムマシンや他のマルチトラックインストゥルメントでは非常に一般的です。一般的なオーディオ入力は、楽器全体にとって特に有用ではありません。あなたの出発点だ

MyPlugin::MyPlugin(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 0, kNumParameters) { 
    if(audioMaster) { 
    setNumInputs(0); 
    setNumOutputs(16); 
    } 
    // other constructor stuff ... 
} 

:あなたは、単にそのようなプラグインをインスタンス化し、言っ

。しかし、大部分のプラグインはステレオのみであるため、ホストが16の出力チャンネルを(それがサポートしていると仮定して)提供するためには、他にもたくさんの作業が必要です。ある時点でgetSpeakerArrangement()setSpeakerArrangement()に電話する必要があり、またgetOutputProperties()を無効にする必要があります。

MIDIチャンネルに関しては、ホストはそれらを通常とは異なって扱ってはいけません。 VstMidiEventの形式で、通常のMIDIデータ(つまり、ユーザーが選択した場合は16チャンネルすべて)を含む通常のMIDIイベントが配信されます。これは簡単な部分です。出力を設定することがそのトリックです。

+0

私はKontaktの仕組みを知っていると思います。各MIDIチャンネルをvst内の別のチャンネルに送信できるように、どのように自分のvstを設定しますか? –

+2

すべてのmidiイベントが一緒に送信されます。受信したMIDIイベントをチャンネル番号に従って手動で区切ります。 – Shannon

+1

@シャノンが言ったこと。 ;)基本的に、ステータスバイトから下位のニブルを取得してチャンネルを取得し、それぞれのボイスに送信します。 16チャンネルをどのように扱うかは、プラグインの内部設計の一部であり、VSTフレームワーク全体とは関係ありません。 –

関連する問題