[Open]Altering "JUCE VST Demo Host" to become a VST plugin


#1

Hello JUCE community,

 

First of all: 

heart A merry christmas and a happy new year to you all!heart

 

Here is my problem:

I want to make a VST version of the "JUCE Host Demo".

So basically the demo host will than be no more standalone but a vst plugin.

A host in a host if you like to put it another way.

 

Question:

How can I do the changes that it does not compile to a standalone but a VST plugin ?

Does anybody did this before? Are there any open source projects that did this ?

Any help would be appreciated and source code examples would be even better.

 

best


#2

You can try by building a plugin that utilises an AudioProcessorGraph, which is how the demo host works. Rather than hack the demo host to make it a VST I would work the other way around. I'd start with a basic VST and then start adding things from the host. Someone one the list did ask about this some time back, but I've not been able to find the thread. Maybe you'll have better luck.  


#3

Sorry, double posted by accident. (How can I delete a post?!)


#4

I'm doing quite the same thing and I'm working as was suggested by Rory.

Here is my topic about it: http://www.juce.com/forum/topic/modular-plugin-getting-started


#5

Thank you guys.

There is of course allways the possibility to build up from scratch,

but actually if some example has 99% of the functionality that you would need, 

than altering the 1% can also be a option.

Especially when it is for internal and non commertial use.

Because the host demo actually has everything I would need except the fact that it builds as a standalone.

I would still look for a answer to the original question:

Is there a way to alter the host demo to build a vst version ?


#6

Wrapping host demo relevant code in AudioProcessor (instead of JUCEApplication standalone) is the way to go. 

At least that is what I'm trying to do.

But I can mistake. :)

Maybe it will be a good idea to someone to upload that sort of plugin template project into git or somewhere else? So from there it can be impoved and fully adapted by more competent people. (I can upload my work in progress project but it's very messy and I'm far from JUCE expert) I believe that many people will be interested in that project, especially those who want to build kind of modular plugin!


#7

Hey Mikeg,

 

I made a 2-3 hours quick and dirty hack and monkeypatched the host demo to be a plugin.

Main issue I ran into was:

Around FilterGraph were methods with critical sections (mutexes) that were invoked in audio thread, where audio thread needs to be non-blocking.

This crashed Live7 but runs ok with EnergyXT.

 

Once I figure out what to do with this, I can write a few lines with instructions what I did :-)

 

best


#8

Hey General MIDI,

Maybe you can upload your project, once you are ready, so others (like me:-)) could use it as a starting point (and to patch/improve it further) ?

Anyway good luck to you!  smiley


#9

It is running already, but from a reputational point of view its tooooo hacky to put public for my taste.

 

So we can do one of two things:

 

a) (Fast<1 week) Instructions how to do this.

 

b) (Slow>1 month) Wait until I find time to clean up everything and so forth and upload a demo project.

 

What do you want ?


#11

Good to hear that you have made progess!

Maybe you can upload it but with private access?


#12

I am too busy right now.

So my apologies but  I have to be economic with my time.

Plus I want to give back something to the community and not only you Mikeg :-)

 

So please choose one of the two options.

 

BTW: Instructions would be detailed enough to reproduce in a day ;-)


#13

Drop the instructions. :)))


#14

As you wish :-)

I will post it right here the next days.

 

Do you have time to take charge of the DEMO project afterwards ?

 

 


#15

Can't give any guarenties :)


#16

My JUCE distribution is 3 months old and I am compiling with Windows.

I am also interested to be a VST plugin and to be able to host VST plugins.

I am using VS2012.

But this should also work with all other combinations of platforms/IDEs/plugins that are supported by JUCE with a minimum of tweaking.

 

To make Rory happy. Lets start with the demo plugin:

 

So first go to your JUCE distribution/extras folder and make a copy of the example plugin project "audio plugin demo".

Its a nice the little synth with sine OSCs and delay effect.

Rename it to "VSTMetaHost" of similar and load it into your IDE.

Make sure it compiles in "debug" and "release" and the outputted VSTi loads into your host and makes some sine noise.

 

Wait for Step 2


#17

Open PluginEditor.h / PluginEditor.cpp

and delete the attributes

gainSlider, delaySlider, infoLabel, gainLabel, delayLabel

delete the methods

displayPositionInfo,  ppqToBarsBeatsString, timeToTimecodeString, sliderValueChanged, timerCallback

do not inherit from Timer, SliderListener

in class JuceDemoPluginAudioProcessorEditor

Compile PluginEditor.cpp and you get some errors.

Use this error list to get rid of every reference to the deleted attributes by simply deleting the lines with errors.

Do this ower and ower again until it compiles.

Compile project, load into host and you should get the same VSTi as before but with less GUI (only keyboard).

 

Wait for Step 3


#18

I am also interested to be a VST plugin and to be able to host VST plugins.

You're interested in a slightly different thing than I.

I'm interested in a VST plugin but without hosting external VST plugins, only to work with internal processors.

I actually trying to achieve modular plugin rather than a VST host in a VST host.


#19

I see:

So this is a totally different scenario.

It actually makes no sense for you to port the host demo into a vst.

 

Now as a logical consequence I can quit posting stuff and save a lot of time ;-)


#20

I'm happy helping you save some time. smiley

It actually makes no sense for you to port the host demo into a vst.

It actually does and it's what I'm doing as there is a lot of same logic in host demo that can be reused. (I hope)


#21

Can you please explain what same logic you mean in detail ?