This project has moved and is read-only. For the latest updates, please go here.

Midi Source vst

Topics: Host Processing, VST.NET Core, VST.NET Framework, VST.NET Interop
Jul 31, 2014 at 12:15 PM
Hey Marc, guys and gals.

I'm back here again; there is So much to the Vst layout that I tend to block it out until I really need it - so here I am....

My Editor is finally approaching readiness, I'm struggling to declare my plugin as a Midi source (again). I have my plugin declared with IVstPluginMidiSource (as per one of your examples) and Ableton see's this correctly but only If I have DummyAudioProcessor.AudioOutputCount set to 0 and in this case I don't receive Midi in either MidiProcessor.Process Or DummyAudioProcessor.Process. If I set AudioOutputCount as 2 then I get Midi in but Ableton then see's the plugin as an Audio output plugin. I'm wondering whether I can override this behaviour with CanDo info - but don't know Where to set this ?

At the moment I'm owning a Output Midi device and sending directly to the synth / sampler module. This works but requires 2 midi interfaces which isn't always in a user configuration (one for master keyboard - host input and one for output).

Any ideas ?

I guess If I could receive Midi when MidiSource is declared And AudioOutputCount is 0 then it'd be perfect. Where in the Core / Framework / Interop should I start tracing for incoming host midi - I guess there is a ProcessEvents stub somewhere ?

Hope you folks can help, I'm getting very close so I'd really appreciate some help.

Kind regards

Jul 31, 2014 at 12:39 PM
Of course I may be dealing with the problem in the wrong way....

I only want my app to receive and send SysEx while I still want the Synth to receive host midi for sequencing and keyboard input. Maybe If I put them in parallel - the only issue may be midi overload - the sequencer firing notes at the same time as I'm sending patch / tone changes is probably going to cause problems.

I'll try it out anyway in the interim.
Aug 4, 2014 at 7:36 AM
Hi Adrian,

Sorry for the late answer, I was on vacation...

Getting a host to recognize your plugin correctly can be a hassle. Cubase is another one of those hosts that is very picky. From what I understand of your comments you have tried all the options: no-audioProcessor, a dummy audioProcessor with either 0 or non-0 i/o counts... Different hosts may react differently.

You can always override the core function calls in the PluginCommandStub class. That is the class where you (normally only) implement the CreatePlugin method to return a new instance of your plugin root class. Note that not calling the base class implementation of a PluginCommandStub method may result in (partially) crippling the Framework functionality.

Tracing is built-in into VST.NET. You have to setup a .config file next to the host.exe you're using (host.exe.config). The app.config file that comes with the Interop project is a template you can use. [url:] Each plugin can be traced separately because the name of the TraceSource starts with the name of the plugin (the name you rename the Interop to). Explained in the app.config file itself.

I hope this will give you some tools to research your problem further. I am afraid there is no one-definite answer when it comes to host-specific issues..

Hope it helps.
Aug 4, 2014 at 7:40 PM
Bravo, thanks as Marc. I hope you had a good break - its that time of year !

My Vst is working very nicely now so I'm loathe to touch its innards but the 2 midi interfaces requirement I have may be a user problem (not that there are zillions of clients :).

Ableton is very delicate - it could take several vst scans to pick up my plugin but it will pick it up eventually (without any changes). Weird.

I think I've tried all of the configuration options but ill run it through again with tracing on and see what happens.

Thanks for helping out, I realise that these are vst / host issues outside of your framework, so thanks for going the extra mile.


Sent from my Windows Phone