Best practice for plugin devlopement for several similar instruments: one or several plugins?

Hi guys,

I’ve got a design question.

Let say that I want to develop a vst plugin to compose and handle several similar but not identical instruments (for example, something like a string quartet). I want it to be usable in a composition environment, to compose each voice for each instrument (with notes, vibrato, and so on…) but also handle the “orchestra” (global crescendo).

I wonder what is the best of these two oprtions:

a) a plugin able to play one instruments. The user choose the instrument with a combo list. In the computer music software, the user has to create one midi track by instrument, and load an instance of the plugin in each track.

b) a plugin able to play all instruments. There are several midi inputs in the plugin. In the computer music software, the user has to create one midi track by instrument, that are linked to another midi track for the plugin.

All advises, ideas and links will be appreciated… thanks!

I’m no MIDI expert, but I’m relatively sure that this is not even possible with the usual plugin formats. Do you have any DAW you worked with or any other plugin out there in mind where you could create such kind of setup?

You can do this in Native Instrument Kontakt.
There you can load several instruments into one plugin. And if you so wish you can assign each instrument its own midi channel.

So to answer the Sandovals question:
Well, I am not sure what’s best. I like how you can layer several instruments inside Kontakt. So I think, the Kontakt way seems better to me. That gives users the freedom: If they want, they can add several instruments to the plugin. But they don’t have to. They could still use multiple midi tracks.
So yeah, I say: go the Kontakt way. Which seems your option b) (if I understand you correctly :slight_smile: )

Thanks for the advice. I was indeed thinking with b) about something like Kontakt. But, is it really possible to do it with JUCE ? (I would have loved a tuto on that…)

The internal instruments within a Kontakt instance are not VST plugins, they’re Kontakt extensions.

Within your own instrument you can do any kind of MIDI routing and layer instruments - for example based on MIDI channel, it’s as simple as filtering out the midi buffer before you call one of your sub-processor classes.

Remember - many hosts don’t pass all the MIDI channels into the plugin and instead combine all the input channels into a single channel.

Ableton Live used to do that, IIRC, but perhaps that changed recently with the announced Ableton Live 11 supporting MPE.