You are here

Native VST plug-in support

This last week-end has seen a major rewrite of the plug-in infrastructure (qtractor 0.1.0.838+), opening the way for more plug-in types, other than just LADSPA. So, effective today on CVS HEAD, you get native Linux VST support on Qtractor. Audio effects only however. This marks the way for the next working season, which is about having MIDI synth/instrument plug-ins, or DSSI and VSTi support for short.

However, building for VST support is not that easy. At least it does not work out of the box. First off, due to its licensing issues, you'll have to go through the nuisance and download yourself the VST SDK from the Steinberg Media Technologies GmbH site, specifically digging through the 3rd Party Developers section. It doesn't matter much whether you pick the VST 2.3 or VST 2.4 version, but you need to pick one and just one only. Do not ask for the recently announced VST 3.0. It won't work and I won't care :)

Once you have downloaded the VST SDK zip-archive, for which you'll have to accept their license and supply some personal data, you'll have to unpack the pertinent header files, which are found under the respective folder. Just copy those couple of files to somewhere on your system:

  • VST SDK 2.3: vstsdk2.3/source/common/
    aeffectx.h
    AEffect.h
  • VST SDK 2.4: vstsdk2.4/pluginterfaces/vst2.x/
    aeffectx.h
    aeffect.h
  • If you choose to copy those files into some standard include directory (eg. /usr/local/include) all will be handled automagically by the ./configure build step. Otherwise you'll need do supply the path yourself, as in ./configure --with-vst=/path/to/vstsdk2.x/include .

    Next step, once properly built you'll need to grab some native VST plug-ins and tell where those might be found. Currently, you'll need to set the VST_PATH environment variable with the paths where the plug-ins will reside and can be picked up by Qtractor.

    In case you don't know where to get them, some ready made Linux VST plug-ins can be found while browsing in here:

    Ah, almost forgot this one: as an added bonus, you can now drag-and-drop plug-in instances over the mixer strip chains. You can move, drag and drop inside the same strip and over to and from any other. Neat eh?

    Enjoy.
    -
    rncbc aka Rui Nuno Capela

Comments

wowww Rui, COMPLIMENT!!
you are AMAZING FAST.. incredible!
Now we have reaaly FUN!
cheers

what is so incredible about it?

Preset Genetics. Using two presets of your choice, or two random presets, this feature breeds new presets - it's a fun and easy new way to explore all the possibilities of your VST instruments.

Hi Rui,
Wow! Very impressive....VST support. I've been very busy these past few weeks, and haven't done much work with Qtractor, but imagine my surprise when I saw this announcement!

I've not had the chance to play with it any, but I look forward to trying this out tonight. I'd assume Windows VST plugins are supported as well, since you are using the Steinberg SDK.

I hope all is going well for you, and keep up the good work!
Lexridge

P.S. Congratulations on your Linux Format Magazine review!

rncbc's picture

I guess I didn't stress what Native Linux VSTs are. In a nutshell, these are plug-ins for which the source-code is available for building natively on Linux or the original author could make or port it intentionally for Linux. Windows VSTs, when in binary form (win32 .dlls), are not in that league. For that, you'll have to go through wine, fst and/or dssi-vst. Sorry, Qtractor has no integral support for any of these ATM.

There are very few Linux VSTs out there, but as they say, if the hosts are here they will come ;) Some, other impressive hosts for Linux VSTs are energyXT2 (commercial, closed-source, but the one that started it all;) and jost.

Byee
--
rncbc aka Rui Nuno Capela

I use WINE frequently for both audio VST plugins (B4, Guitar Rig), and for Quicken, for my checkbook. If it weren't for these few programs, I would never really need windows apps at all.

Anyway, I was under the impression with DSSI support, that the DSSI-VST plugin would automagically work. In fact, it kinda does with yesterday's build. However, my WINE installation got somewhat hosed by a new program I was trying called WINE-DOORS.

When I first scanned for DSSI plugins, it indeed found the Windows VST plugins. However, it reported errors on both of them (via WINE dialogs). Guitar Rig claimed to be unregistered and refused to run, while B4 had the same problem, it also couldn't find it's own data files. I'm sure this is due to WINE-DOORS again hosing my WINE registry. However, since I actually got these errors, it gave me some hope that eventually I might be able to actually make them work with Qtractor.

What is your take on this?

Thanks,
Lexridge

I have dssi-vst installed, and I have started from scratch on this.

I now have two directories ~/Audio/win_vst for .dll files (win32) and ~/Audio/vst_plugins for native ones. The env var VST_PATH is set to those directories. Next, I downloaded a few free Windows VSTs (very basic VSTs) and put them into ~/Audio/win_vst. Then I cd to ~/.dssi-vst, and delete the contents of it. After running Qtractor, dssi is apparently calling dssi-vst-scanner, because this directory fills up with .cache files. Qtractor exhibits no errors or other problems during this.

My question is, why do these not show up in the qtractor dssi plugin listing? From all the reading I have done on this, I assumed dssi support means automatic dssi-vst support, if available, since it's a wrapper to dssi, and not to the host. Dssi is suppose to hand all the translation to the host program...In other words, the host would never know if it's a real dssi plugin, or the dss-vst wrapper....Am I correct in this?

Also, the .dll vst files run fine using jack-dssi-host dssi-vst.so:TubeBaby.dll for example. Actually, I've very impressed with how WELL they work using dssi-vst. Much better than fst so far. It runs NI's Guitar Rig 1.2 (not free) flawlessly, even at 2ms latency! While it was running, I loaded up some "Spock's Beard" and actually wasted a short amount of time trying to play along with that stuff. ;)

Lexridge

rncbc's picture

Before it worries you too much, DSSI support is still not complete, non-functional, nor even tested. And that applies to native DSSI plugins. That said, having DSSI-VST wrappers working is still a miss in Qtractor. ATM, you only have it on good old LADSPA and these new linux native VSTs, audio effects only.

[UPDATE] Just found a flaw on DSSI plug-in instantiation which was preventing DSSI-VST wrappers to show up. Now fixed and it also sets a new stance on the VST plug-in search path resolution:

- native Linux VST plug-ins (.so) should now be searched under the directories given on the View/Options.../Display/Plugin Paths dialog (defaults to /usr/local/lib/vst and /usr/lib/vst, or in VST_PATH environment variable)

- foreign Windows VST plug-ins (.dll), as wrapped by DSSI-VST through WINE, are found by proxy in the directories given by the VST_PATH environment variable only.

Both rules should apply, starting from todays CVS HEAD (qtractor 0.1.0.848+)

Byee
--
rncbc aka Rui Nuno Capela

Wow. I must say that DSSI-VST appears to now be working very well!! :) TubeBaby and GuitarRig both run flawlessly. Something I've noticed, and I'm sure you know exactly why, I have to have the transport running in order to play through the plugins. Also, I noticed the latest CVS build automatically starts jackd. Way cool!!

Keep up the great work, :)
Lexridge

rncbc's picture

And you know what? That is one thing that you got to see (hear?) it working even before my own testing, ever :)) Congratulations!

Now, saying that it works flawlessly is saying way too much :D I'm sure you'll find something wrong in no time. Ah, now I get it: we're actually in the Carnival season and that just sounds like a prank :D

(:joking:)

Happy Carnival!
--
rncbc aka Rui Nuno Capela

Okay, you're right. Flawlessly was not a very good choice of words. ;) There are a few quirky things still, but at least I'm actually able to get audio in and out of them, and see their GUIs.

Jackd gets shutdown occasionally when trying to add a plugin (any type) while the transport is running. What is really nice is that Qtractor now restarts jackd automatically. What is not so nice is it fails to reconnect any connections. [EDIT-1] I also noticed I'm ending up with multiple jackd processes.

[EDIT-2] Also, when using the EDIT button on the DSSI-VST mini Window to show the VST Control Interface, I can only use it once. If I close it, the EDIT button never re-opens it. I dunno if this is helpful, but here is the output from Qtractor's Messages window:
DSSIVSTPlugin::configure(guiVisible,/tmp/rplugin_gui_fmZfI8)
DSSIVSTPluginInstance::configure(guiVisible,/tmp/rplugin_gui_fmZfI8)
DSSIVSTPluginInstance::configure: show gui: value /tmp/rplugin_gui_fmZfI8
dssi-vst_gui: configure_handler, returning 0
RemoteVSTServer::showGUI(/tmp/rplugin_gui_fmZfI8): guiVisible is 1

dssi-vst_gui: No contact from plugin -- timed out on startup

dssi-vst_gui[1]: exiting
[END EDIT-2]

You are making unbelievable progress on this Rui! Very impressive indeed! :)

Lexridge

I have had this exact same problem using dssi-vst in Rosegarden. You can press the edit button and use the native windows gui once. After closing it, it won't open again. The problem is probably in dssi-vst and not the implementation of it within qtractor.

rncbc's picture

Yes, I've been struggling myself with this issue all week-end and tried too many programmatic and whatnot workarounds that I could juggle. To no avail. Once you close the DSST-VST GUI window you can't get it back, unless you drop and insert the plug-in again (ie. re-instantiate the plug-in) or restart the qtractor session.

However, toggling the "Edit" button it seems you can hide/show the WINE GUI alright, or least it works with some plug-ins. So that's this one fair warning for you to follow: DO NOT touch that Close button [X] of that wine window, never ;) Minimize seems to be the right alternative.

Guess this is small trouble, unfortunately it will get knocked back to DSSI-VST probably (hi Chris ;) or, horror of horrors, to WINE ? :(~

Seeya
--
rncbc aka Rui Nuno Capela

I agree it is most likely a DSSI-VST issue. Also something that is probably a DSSI-VST issue, is the GUI stops reacting on some VSTs when not selected. In other words, the level meters and stuff like that quit working, but not the plugin itself.

Anyway, at least we have this now. I can live with not closing my VST plugins. Let's just move on and get the DSSI synth plugins working ;)

cya,
Lexridge

rncbc's picture

Aha, technically speaking, it is the responsibility of the VST host to keep some recurring thread to update the GUI at regular times and that should be only be supported iif the guest plug-in asks for it. Examples are in deed plug-ins that expose such eye-candy as VUmeters. Qtractor native Linux VST hosting has such mechanism, although not fully implemented ;) However, when dealing with Windows VSTs, it is dssi-vst who or which is to provide that functionality as a VST host, not Qtractor.

Or so I believe. I rather wear my conservative hat now. In the particular case of windows VSTs hosted by the DSSI-VST, updating the GUI a dozen times per second, just to let you see those VUmeters pumping pixels up and down, will just end stealing too many CPU cycles just for showing that, erm... eye-candy. It adds nothing to sound quality, just ... darn eye-candy :) Just think about the code path to get one single screen update: qtractor (osc-udp) -> dssi-vst_gui -> VST plug-in -> wine -> X..., back and forward. What a waste...

But one could argue that is eye-candy that sells. Fortunately, it might just occur, that we're not selling anything here :D

Unless someone show me the light
--
rncbc aka Rui Nuno Capela

Ture, most of this is really just that.....eye candy. However, some of it is quite useful, frequency analysis graphing and FFT displays, for example. Hard stuff to do without fancy gfx. If winders can do it with an average of 5ms latency, Linux can certainly do better with 1ms latency. :) However, as I said, many of these VSTis work pretty darn good under WINE, so I think the blame has to fall onto DSSI-VST for the problems we are experiencing. Since none of these problems appear to be show stoppers ATM, I can definetly work around the issues at hand.

and what about the vst headers from the LMMS project? are you planning binaries with these headers?
i mean, to allow the distribution of precompiled binaries with vst support...

best,

rncbc's picture

Last time I've checked, the VST headers from the LMMS project are incomplete and does not cope with all the needed interfaces for what Qtractor implements as for fully native Linux VST hosting (as seen in primordial others, energyXT2 and JOST, as far as I can tell). I'm not completely sure, but the LMMS project features a Windows VST host, yet again through WINE, not a true Linux VST host.

However, what have the LMMS folks done that makes their VST headers legal in regard to the Steinberg SDK license? They just look like it's a snipped version of the original headers. Yep, I have my reasonable doubts, but as they say,... IANAL :)

Cheers.
--
rncbc aka Rui Nuno Capela

YO Rui!!!!!!!!!!!!!!!!
Im Logic user, and im looking for something similar on Linux.
I believe i found it :)

I love this Qtractor.

I give a hug 2 u man ( im unfortunatelly not know nothing about programming but i use
sequencer software, daw workstations, pro apps....)

Every day i see how "big" pro companies complicate their software and gui options ( try Samplitude, try protools above 6.0 version, just see its gui and u are sad man).

"Keep this interface clear" (maybe similar to old protools 5).

Thank YOU

rncbc's picture

Thanks man :)

Obviously you are welcome and I would much appreciate your comments and help keeping this project as clean as you wish.

There's no secret that it's trying to keep the user experience the less cluttered as possible, mostly due that I am its own primordial user ;) but sure it has been and still is being shaped to be as easy and seamless to use. And yes, it's all by you, and to you all.

Cheers
--
rncbc aka Rui Nuno Capela

Thanks for post!

I am glad to hear that they will start supporting VST plugins, it will very helpful. Thanks for the update.

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Not all guitars are equal but sometimes they are overpriced. When I play electric I like a Fender or Gibson but for acoustic I play a martin or collins. I think it depends on where you look but I believe everyone should have the right to play an axe no matter what their budget.

Will this work with Cubase?

rncbc's picture

No. Although VST plugins have been originally introduced by Steinberg's Cubase, the so-called native VST plugin support refers to plugins which source code is publicly available and ported to Linux, Qtractor's target platform.

Cheers.

I too have tried the VST support and it is not that easy...built in is a real prob...I think the LMMS project features a Windows VST host. Good work.

When I play electric I like a Fender or Gibson but for acoustic I play a martin or collins, every one should have the right as far as I am concerned !

Add new comment