Avatar

Please consider registering
Guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed sp_TopicIcon
Help needed with compiling VSTGUI
No permission to create posts
September 22, 2015
12:25 am
Avatar
EZB
Member
Members
Forum Posts: 24
Member Since:
September 14, 2015
sp_UserOfflineSmall Offline

Hello All

A few days ago I received my Designing Software Synthesizer Plug-Ins in C++ book.
I managed to compile and run a few of the VST SDK 3 examples in 64bit.

Now I wanted to get VSTGUI compiled with one example plug-in.

The problem is that I get a bunch of linker errors. Here is what I did.

Now this is what I needed to do according to the VSTGUI documentation

---------------->
Next you have to add two files to your project:

vstgui/vstgui_uidescription.cpp
vstgui/plugin-bindings/vst3editor.cpp

After that you have to alter your project settings to add a preprocessor definition to your debug build:

VSTGUI_LIVE_EDITING=1

As last step you have to modify your edit controller class to overwrite the createView() method:
IPlugView* PLUGIN_API ADelayController::createView (FIDString name)
{
if (strcmp (name, ViewType::kEditor) == 0)
{
return new VSTGUI::VST3Editor (this, "view", "ADelayEditor.uidesc");
}
return 0;
}

And make sure to include the vst3editor.h header.

vst3editor.obj : error LNK2019: unresolved external symbol "public: __cdecl Steinberg::Vst::VSTGUIEditor::VSTGUIEditor(void *,struct Steinberg::ViewRect *)" (??0VSTGUIEditor@Vst@Steinberg@@QEAA@PEAXPEAUViewRect@2@@Z) referenced in function "public: __cdecl VSTGUI::VST3Editor::VST3Editor(class Steinberg::Vst::EditController *,char const *,char const *)" (??0VST3Editor@VSTGUI@@QEAA@PEAVEditController@Vst@Steinberg@@PEBD1@Z)
2>vst3editor.obj : error LNK2001: unresolved external symbol "public: virtual long __cdecl Steinberg::Vst::VSTGUIEditor::isPlatformTypeSupported(char const *)" (?isPlatformTypeSupported@VSTGUIEditor@Vst@Steinberg@@UEAAJPEBD@Z)
2>vst3editor.obj : error LNK2001: unresolved external symbol "private: virtual long __cdecl Steinberg::Vst::VSTGUIEditor::attached(void *,char const *)" (?attached@VSTGUIEditor@Vst@Steinberg@@EEAAJPEAXPEBD@Z)

Upon further inspection I found out that VSTGUIEditor hasn't been compiled. It's object is nowhere to be found.

What am I missing here? Can anyone guide me to get VSTGUI up and running?

Visual Studio 2010
WIndow 7 64-bit
VST SDK 3.6.5

Thank you in advance.

September 22, 2015
2:12 am
Avatar
W Pirkle
Admin
Forum Posts: 143
Member Since:
January 28, 2017
sp_UserOfflineSmall Offline

Hi EZB

You must be using the sample code that came with the VST3 SDK.

All of the synth book VST3 projects have VSTGUI4 GUIs built into the projects, and they will compile as 32 or 64 bit VST3s.

The only SDK sample project that uses VSTGUI4 is Note Expression Synth. The easiest thing to do is copy the way this project works (additional files, copy all of the VS project settings, etc...). Note also that the Synth Book projects (and Note Expression Synth) have an added entry in the C++ General -> Additional Include Directories:

../../../../../vstgui4

That is the relative path to the vstgui4 library.

The simplest option for creating VST3 projects "from scratch" is to use RackAFX. It has a built in VST3 Plugin Template Generator that will create VST3 projects (complete, stand alone Visual Studio Projects that do not include any RAckAFX stuff) that can optionally have VSTGUI4 included in the Project.

In RackAFX this is:

Utilities -> VST Template Generator

Finally, you can also look at the TemplateSynth project that is packaged with the VST3 synth book projects; it also is VSTGUI4-enabled and has no extra processing/GUI code to clutter things up.

Hope that helps,

Will

September 23, 2015
2:05 am
Avatar
EZB
Member
Members
Forum Posts: 24
Member Since:
September 14, 2015
sp_UserOfflineSmall Offline

Hello Will

Thank you for your fast reply. In the meantime I found a solution and got my test project compiled. I added the vstgui4 project to my solution and got it compiled. The vstgui4 project was not complete. It missed files in the project which I had to add them.
Then I linked the vstgui lib to my test project and that solved everything.

I also took a look at the Note Expression synth afterwards after your reply. I saw that there the vstgui project was not added to the solution, so I will take a look at it, because the less projects the better. I also tested the Note Expression synth.
I did notice something in both my project and the Note Expression synth project. When I open the UI Description editor its screen is very small. I can't get it any larger. Is that normal?

I will definitely take a look at Rack Afx.I just downloaded it along with all the Synth book project. My goal at the moment is to build a VST with tabpages.

And by the way, I want to thank you for your book. As a person who once printed out the whole VST SDK documentation and was really wrestling with it trying to get some structure in it, your book gave me all the structure I needed in just 3 chapters. I can't thank you enough.

September 23, 2015
8:04 pm
Avatar
W Pirkle
Admin
Forum Posts: 143
Member Since:
January 28, 2017
sp_UserOfflineSmall Offline

Hi EZB

Glad you got the VSTGUI4 connected and working. It can certainly be challenging - I added VSTGUI4 to RackAFX for the GUI Designer and it took a while to get everything connected, but this is to be expected when working with 3rd party libraries.

Regarding the UI Description editor, I found that in order to move or manipulate the UIEditor window, I first had to click on the title bar of the window. After that, I could drag and move the window around. I could also then resize with the normal dragging the lower right corner of the window. No idea why I need to click on the title bar...

I added the tabbed pages GUI paradigm to the new version of the RackAFX GUI Designer (in beta testing). I posted a video here:

http://www.willpirkle.com/supp.....tutorials/

If you are working with the VST3 UI Description editor, then you will be doing something similar - you need the UIViewSwitchContainer to hold the View Containers and you need a vertical or horizontal switch to act as the Tab Controller. However, unlike RackAFX that has the unlimited number of off-screen views, you will need to assemble your embedded View Containers as "Templates" -- this is not difficult and is covered in the Synth Book which relies heavily on the Template paradigm for building the GUIs. Also, you need to list your embedded View Containers, separated by commas, in the Template Names field of the UIViewSwitchContainer object in the UI Description editor.

If you really get deep into the VST3 UI Description editor (and the resulting XML file named ___.uidesc) then you should compile and play with the UI Description Test sample project - it is not grouped with the other sample projects. It is located here:

\VST3 SDK\vstgui4\vstgui\tests\uidescription vst3

This is a massive UI-only plugin that demonstrates every VTSGUI4 control, tabbed pages, animations, etc... It is purely driven with the .uidesc XML file and I used it extensively when I added the GUI Designer to RackAFX (which is also pure VSTGUI4 and which also creates a .uidesc file). It also has an example of the tabbed-pages GUI control.

Also thanks for the note about the Synth book - it was a big challenge to try to put all 3 APIs into one book. Please feel free to leave a review at amazon.com ... Smile

I have spent many hours with VSTGUI4 objects as well as the XML uidesc file, so if you have any other questions feel free to ask.

- Will

September 24, 2015
5:55 am
Avatar
EZB
Member
Members
Forum Posts: 24
Member Since:
September 14, 2015
sp_UserOfflineSmall Offline

Thank you, Will.
I will dive into the VSTGUI. Right now my host Studio One doesn't allow me to resize my Ui Description editor. Guess I will have to use the vsthost that VST 3 SDK supplies.

I also checked out some RackAFX tutorials today. Looks mighty impressive.
One question, though. When you have more than 130 controls how do you approach building that in RackAFX?

September 24, 2015
5:56 pm
Avatar
W Pirkle
Admin
Forum Posts: 143
Member Since:
January 28, 2017
sp_UserOfflineSmall Offline

Hi EZB

I do have plans for a Prototyping interface with an unlimited number of sliders, etc... in a future revision of RackAFX.

The good news is that the GUI Designer allows you to have an unlimited number of controls. However, you use the Prototype panel to generate the control variables. In order to accommodate many more controls, I added a special Control Container many years ago.

The Prototype panel has an "LCD Control" in the upper right. You can embed up to 1024 controls (of any kind except LED Meters) inside the LCD Control. It uses an Alpha Wheel to select the variable, and a Value knob to alter its value. It actually works great for the Synth projects because you can place Global variables inside it like pitch bend range, filter key tracking, mono/legato, etc...

The controls you embed in the LCD Control will then show up in the GUI Designer and you can assign them to "proper" knobs, sliders, buttons, switches, etc... And, there is also a LCD Control in the GUI Designer if you still want to use it for Global variables or other stuff.

So, that is the workaround until I get the infinite-control paradigm going.

- Will

September 24, 2015
11:12 pm
Avatar
EZB
Member
Members
Forum Posts: 24
Member Since:
September 14, 2015
sp_UserOfflineSmall Offline

Hello Wil

That is good to know. God knows how much time you put in RackAFX.
I am still working on getting up to speed with everything and am enjoying the journey so far.

March 5, 2016
4:43 am
Avatar
W Pirkle
Admin
Forum Posts: 143
Member Since:
January 28, 2017
sp_UserOfflineSmall Offline

FYI: the current version of RAFX under development now has 1200 knobs (80 visible at a time), 1044 Radio Button Banks (4 visible at a time) and 1044 Switch/Buttons (16 visible at a time) so the control limitation should no longer be an issue.

This will be in v6.7.x and above.

- Will

March 5, 2016
4:43 am
Avatar
W Pirkle
Admin
Forum Posts: 143
Member Since:
January 28, 2017
sp_UserOfflineSmall Offline

FYI: the current version of RAFX under development now has 1200 knobs (80 visible at a time), 1044 Radio Button Banks (4 visible at a time) and 1044 Switch/Buttons (16 visible at a time) so the control limitation should no longer be an issue.

This will be in v6.7.x and above.

- Will

Forum Timezone: America/New_York

Most Users Ever Online: 36

Currently Online:
4 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Skyler: 47

Peter: 41

Derek: 41

clau_ste: 39

Frodson: 38

Gwen: 32

EZB: 24

lppier: 23

Msaldaña: 18

Jorge: 17

Member Stats:

Guest Posters: 1

Members: 477

Moderators: 1

Admins: 4

Forum Stats:

Groups: 11

Forums: 30

Topics: 483

Posts: 1877

Newest Members:

Jaggxn, sam, annaharris, Marie Weaver, kev, Steven, Mr Anderson, mguy, omelc

Moderators: W Pirkle: 143

Administrators: Tom: 65, JD Young: 80, Will Pirkle: 0, W Pirkle: 143