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:
- JACK low-latency audio server (http://jackaudio.org/)
- JACK Control (http://qjackctl.sourceforge.net/)
- FST (http://www.joebutton.co.uk/fst/)
- WINE (http://www.winehq.com)
- LASH (http://lash.nongnu.org)
- VST SDK (http://ygrabit.steinberg.de/~ygrabit/public_html/index.html)
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.
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.
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.