MIDI Communication Between VST Instances, is it Possible?
- KVRist
- Topic Starter
- 174 posts since 29 Nov, 2004 from Beyond the Realms of Death
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.
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.
- KVRAF
- 23077 posts since 7 Jan, 2009 from Croatia
No problems doing this in Reaper via its MIDI bus system.
- KVRist
- Topic Starter
- 174 posts since 29 Nov, 2004 from Beyond the Realms of Death
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.EvilDragon wrote:No problems doing this in Reaper via its MIDI bus system.
- KVRist
- 61 posts since 19 Nov, 2012 from Stockholm, Sweden
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.
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.
-
Jimbrowski-one Jimbrowski-one https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=157544
- KVRist
- 80 posts since 13 Aug, 2007 from Montréal, QC
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.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.
- KVRist
- 323 posts since 19 Jul, 2008
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.
Although in practice, so any DAWs do this? I remember hearing some talk about it a couple years ago.
VCV Rack, the Eurorack simulator
-
- KVRist
- 195 posts since 24 Dec, 2009 from Berlin
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.
- KVRAF
- 9569 posts since 16 Dec, 2002
VSTforx has Remotechannel which can send audio or data anywhere.
It can be used without VSTforx
https://www.vstforx.de/index.php/produc ... otechannel
It can be used without VSTforx
https://www.vstforx.de/index.php/produc ... otechannel
Amazon: why not use an alternative
-
- KVRist
- 459 posts since 18 Feb, 2011 from Italy
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.UnWorldly wrote:Many of the hornet plugins have grouping functions that appear to communicate to other instances of themselves
Saverio
My Audio plugins http://www.hornetplugins.com
- KVRAF
- 9569 posts since 16 Dec, 2002
Which ones have this feature?HoRNet wrote: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.UnWorldly wrote:Many of the hornet plugins have grouping functions that appear to communicate to other instances of themselves
Saverio
Amazon: why not use an alternative
-
- KVRist
- 459 posts since 18 Feb, 2011 from Italy
a Quick list:VariKusBrainZ wrote:Which ones have this feature?HoRNet wrote: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.UnWorldly wrote:Many of the hornet plugins have grouping functions that appear to communicate to other instances of themselves
Saverio
VU Meter MK3
LU Meter
Tape
AnalogStage
CLMS
Saverio
My Audio plugins http://www.hornetplugins.com
- KVRAF
- 9569 posts since 16 Dec, 2002
^
Thanks
Thanks
Amazon: why not use an alternative