Я хочу создать VST-инструмент с 16 MIDI-входами и не менее 16 аудиовыходами. Подобно тому, как это делают kontakt или halion.
Есть идеи?
Я хочу создать VST-инструмент с 16 MIDI-входами и не менее 16 аудиовыходами. Подобно тому, как это делают kontakt или halion.
Есть идеи?
Как заметил @leftaroundabout, маловероятно, что вам понадобится 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-каналов, хост не должен относиться к ним иначе, чем обычно. Вам будут доставлены обычные MIDI-события в виде VstMidiEvent
s, которые будут содержать обычные MIDI-данные (т. е. для всех 16 каналов, если так выберет пользователь). Это самая простая часть - это настройка выходов, вот в чем хитрость.