No MIDI input in VST Host Example

I was browsing the web in search of a decent wrapper for audio and vst work for a small personal project of mine. I think Juce is exactly what I’m looking for, down to a manageable UI engine and everything! I don’t have too much C++ experience but am comfortable writing complex apps in java, so this library helps tremendously.

I was pretty impressed with the vst host demo, but I think I hit a snag; for some reason, it doesn’t transmit any midi data from either of my hardware midi controllers to the loaded vsts. I set up the appropriate settings in the list box that sets up the MIDI inputs. I checked the “Keystation Pro 88” inputs along with my other USB input. I left the midi output alone. I also created a connection between the MIDI In ‘filter’ and the VST plugin’s MIDI input. Then I connected VST’s outputs to the audio output.

I tested the operation of the plugin using the onscreen keyboard and received fine audio from it. I tested my midi inputs with several other vst hosts and they worked fine.

I was wondering if anyone had any idea why the midi in from my controllers aren’t transmitted to the plugins. I would hate for this to be a global issue…

Does it work when you check only one MIDI input ?

maybe you need to make some tweaks to some class. look here:

Yeah, I tried all combinations of midi inputs and none of them worked. Only the midi keyboard at the bottom of the app worked.

That’s what it looks like. Its not a big deal really since I’ll likely be starting from scratch anyway and only looking at the host source for reference. As long as the framework provides a way to listen to midi events from external hardware I’m good to go. I guess I just have to pass them to the vsts in order for them to operate correctly.

I finally had time to implement the code from the link provided and it works like a charm! Thanks.

Well, my VST Host design is coming along. I’m still deciding how I want it to work. Right now my current design is focused around a modern hardware synth-like interface. It is composed of several ‘modes.’

The first, Combi, is a location where several patches are mixed and split along the keyboard. These can be saved and loaded at any time and switched from one combi to another live.

The next mode, Patch, is composed of a single Software Synth vst and a chain of 3 or less vst effects. In patch mode, you can also set specific midi filtering settings like setting the range of keys, disabling certain midi cc’s, disabling program changes, etc. Patches can also be saved, loaded, and changed from one to another live.

There is a sequencer mode too, but I might not get around to doing that. The last mode I have is a sort of global settings mode where you can define the midi inputs and set the ASIO driver settings and what not.

Its a very rough idea. This VST Host is going to be installed on a custom mini-itx based PC. Hopefully the parts will be small enough to fit inside the empty space in my Keystation Pro 88. I am going to mount an 8" touch screen LCD monitor on the keyboard and connect it internally to the PC inside. I want it to ideally operate using only the touch screen.

This brings me to my question. Does Juce have the ability to embed the VST’s UI inside of a viewport? The LCD monitor has a rather limited 800x480 resolution which means some plugins might end up filling the entire screen, covering the VST’s UI. I would kinda like it to look like the semi-mockup below:

(I realise that VSynthOS is a poor name choice since VSynth a product from roland, and SynthOS is some kind of RTOS synthesizer. It’s only a mockup.)

Sadly no - some VSTs create their UIs by running their own top-level window and keeping it positioned over the host’s window, so you can’t embed it. That technique’s also used on OSX for bridging cocoa-carbon hosts and plugins, so will be around for a while…

I guess I’ll have to come up with a workaround for that then. Does JUCE (or anything else) have the ability to manipulate the plugin UI window? I’m assuming the host has the ability to open it and close it. If that’s the case, maybe I could have the host listen to a midi cc that will force close the current plugin’s UI. It would be great if I could move the window somehow if it’s too big for the resolution.

Also, it seems the VST host Brainspawn Forte managed to do it. I wonder how…

From that image it doesn’t look to me like they’ve done anything other than position it, which you can of course do with the juce hosting code.

It’d be possible in some cases with some VSTs, but it’d be impossible for others. And also very tricky to even detect which ones are which.

Yeah, I see what you mean. Does Juce have the capability to stay on top of every other window including the VST’s UI? Something like that may explain this image.

On the PC it’d be easier to do this - I’d bet that Forte isn’t available on the mac?

Sure, you can make a juce window always-on-top, though the plugin might decide to also be always-on-top too…

Yeah, I experimented a little with it and it worked great. I made a transparent section of the window and made sure the plugin was behind it. I didn’t implement any code to move the other window or anything, but its possible to do what I wanted to do. Thanks for you help jules