MIDI Communication Between VST Instances, is it Possible?

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

I've been searching high and low, and have not turned up anything so I wonder if there is just some sort of issue or problem implementing this. I'm considering developing my own but perhaps someone can share what the hurdles are so I don't waste my time, if any exist.

If anyone has seen "Send It" from DDMF, included in Metaplugin, I'm looking to do exactly the same thing, but with MIDI. "Send It" is an audio effect VST that can send audio to another instance of "Send It" whether on the same track or another, its not reliant on the host, it seems to do its routing internally.

I would also find it acceptable if the VST could send/receive through direct access to MIDI ports.

I'm currently using Bidule to do this as it has a MIDI Out and MIDI In module that achieves this but I'm looking for something that is free or inexpensive to get around some MIDI restrictions in certain DAWs.

EDIT: 64 bit is a must. I've also tried bridging pizMid's midiOut but it crashes terribly.

I appreciate any responses or recommendations of existing solutions.

Post

No problems doing this in Reaper via its MIDI bus system.

Post

EvilDragon wrote:No problems doing this in Reaper via its MIDI bus system.
Thanks but the idea is to bring this functionality to DAWs that don't natively support sophisticated midi routing not force people to switch DAWs.

Post

Of the top of my head, and I don't know how SendIt handles this, but how would you handle if the host wants to process the audio graph in a different order to what you want? Say you want to send midi from instance A to instance B, but the host wants to process B before A? Then the midi would arrive one buffer late. Or even worse, the host is multithreaded and runs A and B on separate threads. Even if you make the queues thread safe, I suspect the resulting jitter would not be tolerable.
If the host supported that kind of routing natively, then it would recognize that B depends on A and construct the graph in the correct order.

Post

noizebox wrote:If the host supported that kind of routing natively, then it would recognize that B depends on A and construct the graph in the correct order.
The OP could avoid this problem by ensuring that the VSTs, that require the MIDI communication, follow the audio flow; however, this requirement might just make the use case useless. :?

Post

Another issue is that VST instances are not guaranteed to run in the same memory space or process, so a global lock-free queue would not work in fancy DAWs that sandbox their VSTs.

Although in practice, so any DAWs do this? I remember hearing some talk about it a couple years ago.
VCV Rack, the Eurorack simulator

Post

Many of the hornet plugins have grouping functions that appear to communicate to other instances of themselves

Post

JUCE has a InterProcessConnection class, where you "using either a socket or a named pipe as the transport medium". I used it in the past for routing the input of a MIDI controller to different instances of my (private) Step-Sequencer VST. In the case (and many user use cases) the additional latency and jitter isn't a problem. In the case that the MIDI events are send from a plugin itself, the receiver could report some latency to the host, with a big enough latency it should be possible to transmit the events without losing accuracy.

Post

VSTforx has Remotechannel which can send audio or data anywhere.

It can be used without VSTforx

https://www.vstforx.de/index.php/produc ... otechannel
Amazon: why not use an alternative

Post

UnWorldly wrote:Many of the hornet plugins have grouping functions that appear to communicate to other instances of themselves
Yes but it's not made using MIDI but with a shared memory area where every instance writes its own values and every other listen for change and updates their parameters accordingly.

Saverio

Post

HoRNet wrote:
UnWorldly wrote:Many of the hornet plugins have grouping functions that appear to communicate to other instances of themselves
Yes but it's not made using MIDI but with a shared memory area where every instance writes its own values and every other listen for change and updates their parameters accordingly.

Saverio
Which ones have this feature?
Amazon: why not use an alternative

Post

VariKusBrainZ wrote:
HoRNet wrote:
UnWorldly wrote:Many of the hornet plugins have grouping functions that appear to communicate to other instances of themselves
Yes but it's not made using MIDI but with a shared memory area where every instance writes its own values and every other listen for change and updates their parameters accordingly.

Saverio
Which ones have this feature?
a Quick list:

VU Meter MK3
LU Meter
Tape
AnalogStage
CLMS

Saverio

Post

^
Thanks
Amazon: why not use an alternative

Post Reply

Return to “DSP and Plugin Development”