Linux: How To Use Native Windows Vsts

This is a tutorial on how to use native Windows VST instruments in combination with Renoise on Linux.

(07/22/2008: added some additional comments below about dssi-vst and rendering/freezing tracks)

What we need:

Let’s assume you have everything set up and running. If not, please refer to the FAQ/Troubleshooting section at the end of this document.

Let’s start by launching the JACK server (using JACK Control) and Renoise.
Now we have a look at the connection window in our JACK Control. We should see Renoise automatically connected to our sound card and vice versa:

We are going to use LASH to manage our Sessions. This way, we can save our VST states as well as the JACK connections for each song.
To make this as painless as possible we are going to use lash_panel, so we start it by typing ‘lash_panel’ (without the quotes) into a terminal.

Looks a little empty at the moment, but that’ll change.

Now let’s load a VST Instrument. To do this, open a terminal, navigate to your FST directory and type ‘./fst /path/to/your/plugin/yourplugin.dll’ (again without the quotes and a path, that makes sense).

If everything worked as expected, our lash_panel should look a little more interesting now:

The first thing we recognize is, that our loaded VST is listed inside a new project.

The second thing we should have a look at is the not so fortunate standard name and path, that has been set for us. So we are going to change those by giving our Project a good name (The same name as the Renoise project we are working with would be a good idea for example).

Unfortunately the name is just an internal representation and doesn’t help us much when searching for a specific project later, so we have to change the path as well.

Important to know is, that LASH projects are persisted in directories, not single files, so we should choose a good folder name. The dialog that presents itself when clicking on “Move…” is a little confusing. Don’t generate the folder you want to use to save the project, or otherwise you won’t be able to choose it (stupid, I know). So in order to set a nice folder for our project, we just navigate to the directory our project should be saved into and type the desired name into the upper text field followed by a click on OK:

Nice.

So after having done the dirty work, let’s start to integrate the VST into Renoise.

In the ‘Instrument Settings’ of a new Instrument we see the MIDI Properties. The drop down menu for choosing the Device should now include our VST Instrument. So let’s choose it.

Renoise takes care about the MIDI connections in our JACK Server, so no need to change anything there. But we aren’t hearing anything yet! That’s because the audio output of our VST Instrument isn’t connected to anything yet. So let’s tell it to send its sound directly to our sound card. We do so by connecting the VST on the left with our sound card on the right in the Connections dialog of JACK Control:

Much better.

Be aware, that Renoise only controls the VST via a MIDI connection. So the Renoise mixer won’t control its volume as the VST sends its sound directly to the sound card. Neither will “Render selection to sample” work. That’s live.
(Actually you could use the mixer by adding two inputs for each VST you use in the preferences, route the VSTs to their own inputs using JACK and add a “#Line-In Device” that captures those inputs for the appropriate tracks.)

So now we are ready to make some music.

After we’re done with this, we want to persist all of our work to use it later again. Saving our Renoise project won’t be enough, because Renoise doesn’t know about the VST settings, nor does it remember all of our JACK connections.
That’s where LASH comes to help. So in our lash_panel let’s click on “Save Project”.

To come back to this state later, we just load the Renoise project and our lash project. Be aware, that there seems to be a bug in wine, that prevents lash from loading more than one VST at a time. So if you have saved more than one VST in your lash project, you’ll run into problems when trying to load the project. But fear not! You can fix this little annoyance by just starting a persistent wineserver before loading your lash project. To do this, just type ‘wineserver -p’ (you should know about the quotes by now) into a terminal.

So that’s basically it. If you have any questions, please refer to the following section. If the question isn’t being solved there, you may ask me directly and I can see what I can do. If there are common problems I forgot to list here, I am going to add them to the following list.

Have fun making music.

FAQ/Troubleshooting:

Q: I have nothing set up nor running. Where should I start?
Most dependencies should be solvable using the package manager of your distribution. FST won’t be there, because it depends on the Steinberg VST SDK, which isn’t free (as in freedom, not as in beer. It actually doesn’t cost you a dime). But there shouldn’t be much hassle to compile it by hand. Please refer to the FST documentation for this matter.

Q: I have LASH but no lash_panel! What should I do?
If you previously have compiled LASH successfully but don’t have lash_panel, chances are, that you missed a dependency for the panel. LASH still compiles without complaining but leaves out the panel, so in order to use it, try configuring your source again and pay attention to the report. It should say at the end of the output what’s missing for the panel to compile.

Q: I am afraid of source code. Why do I have to compile FST myself?
FST depends on the Steinberg VST SDK, which isn’t free. But there shouldn’t be much hassle to compile it by hand. Please refer to the FST documentation for this matter.

Q: This is a pain! Is there no easier way?
There are other ways to use native Windows VST plugins in Linux (for example a dssi wrapper), but I haven’t tried them, yet, nor do I know how they work with Renoise.

Q: What’s with this “native Windows VST”?
The problem here is, that most VST Plugins are compiled for Windows and therefore don’t work on linux systems. So there are two possibilities to use VST Instruments in Linux: a) Use plugins, that have been compiled for Linux or b) use a method involving wine in some way (like the one I just described in this tutorial)

Q: My VST Plugin crashes/doesn’t work/looks funny.
I am afraid I won’t be able to help you here. There is absolutely no guaranty, that every single plugin will work with FST. If absolutely NO plugin works for you, chances are that there is a problem with your setup. In this case, I might be able to help.

Q: I am missing a feature in FST/Renoise concerning VSTs.
Please contact the people, who work on those projects. I am just the author of this tutorial. :wink:

Q: What about VST Effects?
It’s possible to use effects, but you’ll have to insert them in the chain using JACK connections.

Additional comments:

dssi-vst
As some people have pointed out, there is an alternative to fst, called dssi-vst.
I’ve tried this wrapper myself recently, and it works quite good. BUT: you can’t save your settings with the session, as it is possible with fst, because dssi-vst doesn’t use lash.
Advantages of dssi-vst are clearly that it’s easy to compile (it doesn’t need the original vst files, although you CAN use them), it works with vst 2.4 plugins and you can use the plugins with a dssi host like native dssi plugins (no, renoise is not a dssi host, sorry).

That said. if you experience problems with a certain plugin using fst, you may have a look at dssi-vst. It won’t hurt. :wink:

Rendering/Freezing the output of the vst
As you might have noticed, “render selection to sample” won’t work with the described setup. But there is a way to render your vst tracks directly in renoise. vV has a great tip including screenshots in the thread about “Rendering Line-In Device to Sample”. So please refer to this post for more info on this (very easy) way of rendering/freezing vsts.

thanks MM!

I think this article deserves to be in the In:Depth section

yey \o/

just compiled it. one suggestion: you should make the urls clickable for lazy ppl like me >_>

and well, the fst site says:

well, i got lashd (binary) and the dev pkg, jackd and the libjackdev bleh pkg, wine and the wine-dev thing, BUT it wouldn’t work. at least i got very clear compiler messages: i needed alsa and gtk2.0 sources, too. (why-o-evar <_<)
edit: fyi: i’m running a pretty “fresh” install of (x)ubuntu gutsy

perhaps the dood from fst means you need to compile these apps from source and then you’ll have all the dependencies covered. (which isn’t what he actually said, but anywho)
dunno

edit: yey, just tried synth1 and crystal and had my first 2 fst crashes(seemingly both gui-related, but crash is crash :d). but seems to work more stable than native linux vst BWAHAHAHA

Thanks for the tutorial!! I’ve tried it too and it works!
Synth 1 works perfectly , and drumatic not…
Anyway… I think this is too “complicated” (not the tutorial of course, but the system to use vst)… and it’s an annoying thing that we can’t control the instruments via the renoise mixer and that we can’t use the render-selection function( this is the way I mostly use plugins!! :) )
maybe it’s off topic… but I think a little nice integrated synth in renoise could be the solution of a lot of problems… no more crashed, more portable files… then, if one have particular needs can off course install his/her VST/LADSPA things…

hihi

or how bout “just” making the already cool instrument format quasi modular and therefore renoise a VERY powerful synth? o:

take a look at my post in the rni future thread -> here <- (very last post in the thread atm)

poor taktik, teh more he giveth, teh more we demandeth (or sumthing >_>)

edit: spelling 'n stuff…

Hi all.
Thanks for the replies.

No Problem. It would be nice to see the article in the In:Depth section.

Done ^^

Yes. It’s been a while since I’ve compiled FST myself, but as you have to compile it I thought I’d might as well put the dependencies of FST to the general dependencies. You know… I know a lot of people who really hate it, when they see a list of dependencies and think “hey… that’s ok…” and then the additional dependencies grow and grow with each listed one.
So… yeah… they are in the list, because they are inevitable.

Synth1 works pretty well here. I’ve just got one reproducable crash. It’s when you open the sound bank browser, close it again and then try to change a value… that’s kind of limiting, I know… hehe… but as I said: there is absolutely no guaranty whatsoever.

Well… thanks for testing. Keep us updated ^^

Thank you for testing. :D

I know it’s a pain. But that’s what you get when you try to “beat the system”… hehe… it’s just running windows software on a linux platform. That usually means trouble as it’s not intended to work. (yeah… i know a lot of windows software, that works really good with wine… but we are talking about (sometimes) pretty cheaply coded VSTs from different sources. Actually it’s often the GUI that makes trouble.)

+1 for the rest of your post ^^

Thank you all for testing. If you’ve got any problems, feel free to post and I / we can see what we can do ^^

Regards,
Marvelous Marvin

lol, i searched and searched for this thread until i finally realized that it has gone sticky ._.’
hm, now i’m not sure if the marvelous marvin will even recognize that i replied to his thread, meh.

ANYWHO, the reason i’m replying is: well, my vstis are crashing all the time with the error message: “‘RenderBadPicture (invalid Picture parameter)’.”
to reproduce the error i just have to load up a vsti and start creating a patch for 5 seconds :d
(even without tweaking they crash all the time, crystal is actually crashier than synth1)

SO, i decided there’s something wrong in my setup. and as i’m to lazy too start fiddling around with the versions of all involved components, i just assumed it is the wine version that’s causing the unhip vibrations. so marvin:
what wine version did you use?

i read here and on other places, that the wine version “20040505” should work pretty stable. then again: those reports are pretty outdated (2004/2005) and most of the vstis have been developed further (for example there were some major gui changes in crystal afaik). yeah i’m now just gonna try if that outdated wine version works.

but anyhow: could you give me some infos about your “build”? (what versions have been used, or if you don’t recall that: approximately when did you build fst?)

i’ll just look if i can build a more stable fst with the WINE 20040505 version.

edit: s/to lazy too/too lazy to/ .."
edit2: ok well, that version is actually THAT old, that this isn’t really an option .
.’

@zomg:

I am always on the latest wine version, so this is 0.9.54 at the moment… at the time of my last fst build this should have been about 0.9.51 or something as my fst binary has a date of 2007-12-29.

About the error you encounter: this could be caused by your X Server. Are you using two screens and have an nvidia card using Xinerama and Compiz? If so, try using “TwinView” instead of Xinemara… this could solve the RenderBadPicture (invalid Picture parameter) problem.

Ah… an by the way: the thread is not sticky anymore… I don’t know why though. g

hey thx for your fast reply (:

hm, that’s great actually. that sounds like the problem is solvable without recompiling fst over and over again with all possible version-permutations of all source components (:s)
hihi

as for the rest: i don’t use compiz or any other 3d desktop bleh and i do own only 1 monitor, so xinerama can’t be the problem either. hm, but i use the accelerated nvidia driver (“nvidia” in xorg.conf), i’ll just try if switching to “nv” perhaps already solves this :0

also i always put the vsti on a dedicated “desktop workspace”. i use xfce4. i hope that’s not causing the problems somehow. though i could just use fluxbox again >_>

(/me’s now gonna do sum testing)

edit: well, the “nv” driver didn’t help. atm i’m doing some wine tweakage. say marvin: what windows version are you emulating? and do you have “allow pixel shader (if hardware supports it)” checked? and do you have a “vertex shader” selected, or do you just have “none” there? well, could you just tell me all your wine “graphics” settings? (like “allow window manager to controll the windows” etc) (sry for the many questions :s)

Hi,

this is my current winecfg:

I am emulating windows xp

maybe it’s the dedicated workspace, that’s making problems… have you tried to run other windows software in wine and if so, do you encounter the same problems or is it just with vsts?

hm, our settings are pretty much the same. and no: i haven’t used wine for anything else.

ok, and after some basic googling i did find this: (from http://ladspavst.linuxaudio.org/))

so it actually seems to be a know problem and downgrading my wine version should do just fine. i’ll try and edit this post accordingly.

Just tried with 0.9.51. Didn’t do me any good.
I also get: “warning xpress 200 detected” before it starts up. Stupid integrated ati card. This time I tried with the opensource drivers, the last time was with the proprietary. Same result.

To separate FST problems from wine problems you might try to run your plug ins using dssi-vst (http://dssi.sourceforge.net/download.html)
For me, VST plug ins tend to run more stable with this wrapper, but you can’t save the states using lash which is why I haven’t considered it an optimal solution for now.

meh

vs

i already compiled dssi-vst, but didn’t figure out how it works yet. (where to put the .dll, how to invoke the jack-dssi-host etc.)
but anywho, more interesting right now:

i just compiled wine from source. the wine source directory is directly in the fst-source directory. but fst can’t seem to find the wine sources (windows.h - No such file or directory. :///) well, where do i have to put the wine-source for fst to recognize it?
(for the needed wine binaries (winegcc, winebuild…) i just added some directories to the PATH variable)

do i have to edit the fst Makefile for that? and if yes, how? (i’m asking as you seem to have build it from source, so you should know.)
directorly structure atm is like that:
…/fst-source
…/fst-source/wine-source
…/fst-source/vstsdk2.4

help would sure be much appreciated :x

It doesn’t matter where your wine source directory is. Just do a ‘make install’ in you wine source directory and it puts its headerfiles in /usr/local/include (depending on your prefix of course), so fst should find it if it’s installed correctly.

EDIT: oh… and by the way… I used the vstsdk2.3 to compile fst… I think I have read something about bad compatibility with 2.4 … don’t remember for sure though.

The fst page clearly says get 2.3.

I feel somewhat stupid for trying to get around this. Damn, I got my Linux Renoise like I wanted, didn’t i?

It’s just that I bought Tone2’s Firebird last fall, and I’d like to sample it without booting to Windows. No big deal, though. That synth was just slightly more expensive than Renoise. :D

dude, 1st of all: i’m really sorry for overtaking your thread >_>

but anyway. when i wrote my post i was uncertain about two things, first thing: wether i used the vstsdk2.4 or another version. but i was too lazy to look it up. but of course i use/used the vstsdk2.3 as the fst site suggests.

second thing i wasn’t sure to write about, but i wanted to say explicitly that i don’t consider “make install” a solution ://

well, mainly because i’m trying out with wine-0.9.54 now. and i highly suspect it just won’t work. so if my fears come true i can just use wine-0.9.9. but with “make install” i’m not so sure :x (as i don’t know what exactly it does.)
will it just overwrite the newer version if i do it in the 0.9.9 source dir after doing it in the 0.9.54 dir? <_<

sry, but i’m really not sure about this, as those versions are pretty “far away” from each other. and make install always seems very dirty for me, so i usually don’t do it.

so is it safe to do it and after that do it with another version of wine?

No problem. That’s what this thread is for. I don’t consider this conversation off topic, yet. ;)

Don’t be afraid of ‘make install’. I usually just make sure, that I don’t have another version installed at the time of doing it. As i am always compiling wine (and a lot of other apps) from source, I do a ‘make uninstall’ with the previous version before installing the new one. This way I can easily switch between versions.

What ‘make install’ actually does is copying libraries, binaries and header files to the appropriate places. And ‘make uninstall’ deletes all of the stuff again.

So… don’t be afraid of installing things from source. If there is a ‘make install’ there’s almost certainly a ‘make uninstall’, too (I’ve never seen an app having one and missing the other).

Just make sure to uninstall the old wine version before installing the new one. You can easily uninstall the new one and reinstall the old one after that.

Have fun. ^^

ooooooook, i now installed dssi-vst 0.6 (after trying around different versions of wine, but guess what…) and it seems to work fine with all the vstis i tried out (nk 1001, synth1, crystal, superwavep8). doesn’t seem to work with lash though, what sux. but i’m at least able to tweak without the fear of random “RenderBadPicture” crashes :D/
and crystal and synth1 even have their own preset management where i can store the patches, so i think i’m just gonna stay with dssi-vst. (also: if rns ever supports dssi, i could even use the vstis “inside” of rns, or not? dunno)

note: vsthost (an included program in the dssi-vst pkg) works with .dll filenames including whitespaces, dssi-vst doesn’t. (so you’d have to copy the “Synth1 VST.dll” to “s1.dll” or something for dssi-vst to work with that dll.)

i suspect the reason dssi-vst is working and fst not, is because fst seems to be pretty outdated/abandoned. i mean the latest release is from 31 may 2006 :s

Yups, one of the many problems with open source related stuff…
In one there is always hope somebody else picks it up where it got left for dustcatching but this is a process that may take years of dustcatching before somebody wakes up again.
All causes of change in spare-time- and priority management of the individual hobbyist.