2011-05-26 10 views
6

Quiero crear un instrumento VST que tenga 16 entradas MIDI y al menos 16 salidas de audio. Similar a cómo lo hacen kontakt o halion.Entrada y salida múltiple del instrumento VST

¿Alguna idea?

+1

¿Pero ya tienes experiencia con la programación de vst? Me parece sorprendente que 16 canales sean más difíciles de implementar que los 2, este no es el caso cuando se crean plugins vst con software como SynthMaker (que es la única forma en que lo he hecho hasta ahora). Allí, puede agregar una cantidad arbitraria de entradas y salidas. – leftaroundabout

+0

Alguna experiencia, he usado sintetizador antes. Pero mi nuevo proyecto debe estar en C++. –

+2

Otra cosa: ¿realmente necesita 16 entradas MIDI, o solo 16 canales _ MIDI_ (que es el número ofrecido por cualquier conexión MIDI)? – leftaroundabout

Respuesta

4

Como se señaló @leftaroundabout, es poco probable que necesite 16 entradas y salidas, especialmente para un instrumento. Sin embargo, tener 16 entradas MIDI y 16 salidas de audio es muy común para las máquinas de percusión y otros instrumentos multipista donde el usuario puede querer procesar cada voz individualmente. Las entradas de audio en general no son particularmente útiles para los instrumentos en general.

Dicho esto, simplemente instancia su plug-in de este modo:

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

Ese es su punto de partida. Sin embargo, dado que la gran mayoría de los complementos solo son estéreo, hay un montón de otros trabajos que tendrá que hacer para que el host le entregue 16 canales de salida (suponiendo que lo soporte). Es probable que necesite llamar al getSpeakerArrangement() y setSpeakerArrangement() en algún momento, y también anular getOutputProperties().

En cuanto a los canales MIDI, el host no debería tratarlos de forma diferente a lo normal. Se le entregarán eventos MIDI regulares, en forma de VstMidiEvent s, que contendrán datos MIDI regulares (es decir, para los 16 canales si el usuario así lo desea). Esta es la parte fácil: configurar el resultado es el truco.

+0

Supongo que sabes cómo funciona Kontakt. ¿Cómo configuro mi vst para que cada canal midi se pueda enviar a un canal diferente dentro del vst? –

+2

Todos los eventos midi se envían juntos. Separe manualmente los eventos midi entrantes según el número de canal. – Shannon

+1

Lo que @Shannon dijo. ;) Básicamente, tomas el nibble inferior del byte de estado para obtener el canal y enviarlo a la voz respectiva. La forma en que maneje los 16 canales es parte del diseño interno de su complemento y no tiene nada que ver con el marco VST como un todo. –

Cuestiones relacionadas