[PlanetCCRMA] VST on FC3 on Planet CCRMA HOWTO V 1.0

Timo Sivula timo.sivula@gmail.com
Fri Sep 23 11:37:02 2005

Content-Type: text/plain
Content-Transfer-Encoding: 7bit


I finally got to releasing version 1.0 of the VST Howto for Planet CCRMA
and FC3. The file is attached.

I would kindly ask if someone of you who also subscribe to the LAU
lists, if you could forward this there, please. I would also need a web
place for this. I guess the Linux Audio DJ site would be perfect, if the
document is accepted, that is.

br, Timo

Content-Disposition: attachment; filename="VST on FC3 on Planet CCRMA HOWTO.html"
Content-Type: text/html; name="VST on FC3 on Planet CCRMA HOWTO.html"; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.3  (Linux)">
	<META NAME="CREATED" CONTENT="20050807;19533000">
	<META NAME="CHANGED" CONTENT="20050923;21343700">
		@page { size: 8.5in 11in; margin-left: 1.25in; margin-right: 1.25in; margin-top: 1in; margin-bottom: 1in }
		H1 { margin-bottom: 0.08in }
		H1.western { font-family: "Nimbus Sans L", sans-serif; font-size: 16pt }
		H1.cjk { font-family: "HG Mincho Light J", "MS Mincho", "HG Mincho J", "HG Mincho L", "HG Mincho", "Mincho", "MS PMincho", "HG Mincho Light J", "MS Gothic", "HG Gothic J", "HG Gothic B", "HG Gothic", "Gothic", "MS PGothic", "Andale Sans UI", "Arial Unicode MS", "Lucida Sans Unicode", "Tahoma"; font-size: 16pt }
		H1.ctl { font-family: "Tahoma", "Lucidasans", "Lucida Sans", "Arial Unicode MS"; font-size: 16pt }
		P { margin-bottom: 0.08in }
		H2 { margin-bottom: 0.08in }
		H2.western { font-family: "Nimbus Sans L", sans-serif; font-size: 14pt; font-style: italic }
		H2.cjk { font-family: "HG Mincho Light J", "MS Mincho", "HG Mincho J", "HG Mincho L", "HG Mincho", "Mincho", "MS PMincho", "HG Mincho Light J", "MS Gothic", "HG Gothic J", "HG Gothic B", "HG Gothic", "Gothic", "MS PGothic", "Andale Sans UI", "Arial Unicode MS", "Lucida Sans Unicode", "Tahoma"; font-size: 14pt; font-style: italic }
		H2.ctl { font-size: 14pt; font-style: italic }
<H1 CLASS="western">VST on FC3 Planet CCRMA HOWTO</H1>
<P STYLE="margin-bottom: 0in">Version 1.0 
<P STYLE="margin-bottom: 0in"><SUP>23rd</SUP> of September 2005</P>
<P STYLE="margin-bottom: 0in">Timo Sivula</P>
<H2 CLASS="western">Overview</H2>
<P>This document outlines the procedure to make VST effects and
instruments run on a Planet CCRMA environment on Fedora Core 3.
Fedora Core 3 was chosen for this purpose due to its maturity at the
time of writing. Other versions of Fedora Core, such as FC1, 2 or 4
are not covered in this document. 
<P>The steps involved to make VSTs run in FC3 CCRMA are the
installation of:</P>
<P>A) Fedora Core 3</P>
<P>B) The Planet CCRMA environment and tuning the system for audio
<P>C) Wine 20040505 from rpm.</P>
<P>D) fst-1.6 from sources</P>
<P>E) Jack_fst.1.2 from sources</P>
<P>Steps C, D, and E are covered by this document.</P>
<H2 CLASS="western">Intended audience</H2>
<P>This HOWTO is intended for the Linux audio user who wishes to use
VST effects and -instruments on Planet CCRMA in Fedora Core 3. 
<H2 CLASS="western">The purpose of the HOWTO</H2>
<P>This document is intended to complement the excellent generic
Linux VST tutorial at
<A HREF="http://www.djcj.org/LAU/quicktoots/toots/vst-plugins/">http://www.djcj.org/LAU/quicktoots/toots/vst-plugins/</A>
with Fedora Core 3 and Planet CCRMA specific issues. This HOWTO is
intended to to be a sufficient guide to enable VST work in the Planet
CCRMA environment on Fedora Core 3.</P>
<H2 CLASS="western">List of prerequisites</H2>
<P>It is assumed that before starting the installation of the VST
software, the user has an working installation of Planet CCRMA on
Fedora Core 3. 
<P>For instructions on how to install Fedora Core 3 see
instructions on how to install Planet CCRMA on Fedora Core 3 see
<A HREF="http://ccrma.stanford.edu/planetccrma/software/installtwosix.html">http://ccrma.stanford.edu/planetccrma/software/installtwosix.html</A>.
The reader is reminded to follow the planet CCRMA instructions to the
dot in order to achieve a working DAW. The planet CCRMA apt-get
repository is used later when installing the VST software.</P>
<P>A connection to the Internet is needed to download the needed
<P>It is also assumed that Intel processors are used simply because I
have a P4 and have not tested this on a PC running an AMD chip.</P>
<H1 CLASS="western">Making VSTs work on the planet</H1>
<H2 CLASS="western">Step 1: Installing Wine and Wine-devel</H2>
<P>The first thing to do for the VST emulators to work is to install
Wine which is needed to make VST work on FC3 CCRMA. For a number of
reasons the suite of software needed for VSTs seems to agree to work
only with wine-20040505. Newer or older versions will fail with
probability. Hence, stick to wine-20040505. 
<P>The safest and most maintainable method is to install wine using
rpm from some of the rpm repositories on the Internet. rpms for
Fedora Core 3 of wine-20040505 are hard to find. Luckily to the
Fedora Core 1 rpm of wine-20040505 installs and works fine on the FC3
planet. To install, first become root by typing:</P>
<P STYLE="margin-left: 0.49in"><FONT FACE="Palatino, serif">su</FONT></P>
<P>reply to the password prompt with your root password. Then install
wine using rpm:</P>
<P STYLE="margin-left: 0.49in"><FONT FACE="Times, serif">rpm -Uvh
<A HREF="ftp://ftp.ximian.com/pub/mono/fedora-1-i386/wine-20040505-1fc1winehq.i686.rpm">ftp://ftp.ximian.com/pub/mono/fedora-1-i386/wine-20040505-1fc1winehq.i686.rpm</A></FONT></P>
<P><FONT FACE="Times, serif">The development packages are needed,
<P STYLE="margin-left: 0.49in"><FONT FACE="Times, serif">rpm -Uvh
<A HREF="ftp://rpmfind.net/linux/sourceforge/w/wi/wine/wine-devel-20040505-">ftp://rpmfind.net/linux/sourceforge/w/wi/wine/wine-devel-20040505-</A>1fc1winehq.i386.rpm</FONT></P>
<P>If you are using older hardware than P4 replace the i686 with i386
in the wine url above.</P>
<H2 CLASS="western">Step 2: Compiling and installing fst-1.6</H2>
<P>Fst-1.6 will be compiled from source code. Remaining as root,
change to your local source directory:</P>
<P STYLE="margin-left: 0.79in"><FONT FACE="Times, serif">cd
<P>Download the fst-1.6 source code:</P>
<P STYLE="margin-left: 0.79in"><FONT FACE="Times, serif">wget
<P>unpack it into its own directory:</P>
<P STYLE="margin-left: 0.79in">tar xzfv fst-1.6.tar.gz</P>
<P>We need one more component, the mkinstalldirs utility, copy it
from your Fedora system files:</P>
<P STYLE="margin-left: 0.79in">cp
/usr/share/automake-1.9/mkinstalldirs /usr/local/src/fst-1.6</P>
<P>Next we need to download the Steinberg VST Service Development Kit
SDK to get access to a a couple of files we need. Browse to:
<A HREF="http://ygrabit.steinberg.de/users/ygrabit/public_html/index.html">http://ygrabit.steinberg.de/users/ygrabit/public_html/index.html</A>.</P>
<P>Read the license agreement and register.<SPAN STYLE="text-decoration: none">
The link Steinberg sends is dead, but the files exist on Steinberg's
public Internet page so do not worry.</SPAN></P>
<P>Next we need to edit some of the source files to make the whole
thing compile. First we need to create a directory for the SDK source
<P STYLE="margin-left: 0.79in">mkdir /usr/local/src/fst-1.6/vst</P>
<P>move to the directory you created:</P>
<P STYLE="margin-left: 0.79in">cd /usr/local/src/fst-1.6/vst</P>
<P>Now download the two source files we need from the sdk to this
directory using wget:</P>
<P STYLE="margin-left: 0.49in">wget
<A HREF="http://ygrabit.steinberg.de/users/ygrabit/public_html/vstsdk/OnlineDoc/source/common/AEffect.h">http://ygrabit.steinberg.de/users/ygrabit/public_html/vstsdk/OnlineDoc/source/common/AEffect.h</A></P>
<P STYLE="margin-left: 0.49in">wget
<A HREF="http://ygrabit.steinberg.de/users/ygrabit/public_html/vstsdk/OnlineDoc/source/common/aeffectx.h">http://ygrabit.steinberg.de/users/ygrabit/public_html/vstsdk/OnlineDoc/source/common/aeffectx.h</A></P>
<P>Check with 
<P STYLE="margin-left: 0.79in">ls</P>
<P>that you have both AEffect.h and aeffectx.h in your
/usr/local/src/fst-1.6/vst directory. If you have them run the
“fixheaders” utilty while in /usr/local/src/fst-1.6/vst:</P>
<P STYLE="margin-left: 0.79in">../fixheaders</P>
<P>Now move to the root directory of fst-1.6:</P>
<P STYLE="margin-left: 0.79in">cd /usr/local/src/fst-1.6</P>
<P>Next run autogen to update the configuration files:</P>
<P STYLE="margin-left: 0.79in">./autogen.sh</P>
<P>You will get a couple of warnings, ignore them. For fst to
compile, /usr/local/lib/pkgconfig needs to be linked to
<P STYLE="margin-left: 0.79in">ln -s /usr/lib/pkgconfig/
<P>Now compile and install fst:</P>
<P STYLE="margin-left: 0.79in">./configure; make; make install</P>
<P>Update your system library cache:</P>
<P STYLE="margin-left: 0.79in">/sbin/ldconfig</P>
<P>Copy the library to your /usr/lib directory</P>
<P STYLE="margin-left: 0.79in">cp /usr/local/lib/libfst.so /usr/lib</P>
<P>You should now have the fst library at your disposal.</P>
<H2 CLASS="western">Step 3: Compiling and installing jack_fst.1.2</H2>
<P>The next step is to compile and install jack_fst.1.2. To do that
we need the jack development packages. 
<P STYLE="margin-left: 0.79in">apt-get install
<P>Let's then change to the local sources directory:</P>
<P STYLE="margin-left: 0.79in">cd /usr/local/src</P>
<P>Then download the jack_fst.1.2 sources:</P>
<P STYLE="margin-left: 0.79in">wget
<A HREF="http://www.linuxaudiosystems.com/fst/jack_fst-1.2.tar.gz">http://www.linuxaudiosystems.com/fst/jack_fst-1.2.tar.gz</A></P>
<P>Unpack them,</P>
<P STYLE="margin-left: 0.79in">tar xzfv jack_fst-1.2.tar.gz</P>
<P>change to the jack directory,</P>
<P STYLE="margin-left: 0.79in">cd jack_fst-1.2</P>
<P>run the configuration script:</P>
<P STYLE="margin-left: 0.79in">./configure</P>
<P>Here we need to do a small trick to make jack_fst compile. There
are some cryptic messages in the readme of jack_fst about unnecessary
constructors. Whatever that means, this is how jack_fst can be made
compiling: We need to edit some source code. Make sure you have a
monospace font and size 10 selected in the gedit preferences before
attempting this. Otherwise you will not find the right line...</P>
<P STYLE="margin-left: 0.79in">gedit
<P>Line 934 should look like this in the original aeffectx.hfile: 
<P STYLE="margin-left: 1.58in">VstFileType *fileTypes; // list of
<P>add the word “struct” in front of this line to make it look
<P STYLE="margin-left: 1.58in">struct VstFileType *fileTypes; // list
of fileTypes</P>
<P>Save it, and now you can compile jack_fst:</P>
<P STYLE="margin-left: 0.79in">make; make install</P>
<P>This concludes the compiling phase. Exit the super user mode and
change back to your home directory:</P>
<P STYLE="margin-left: 0.79in">exit</P>
<P STYLE="margin-left: 0.79in">cd /home/yourname</P>
<H2 CLASS="western">Using VST in the CCRMA FC3 environment</H2>
<P>Whoever believes there are no hidden messages in music should read
through the three passages above and think again. Obscuring the use
of VST in Linux in this way is the work of evil forces. However, if
you have survived until now, things are getting better: we will now
start testing the VST function. 
<P>First test that jack_fst really exists and exists in your path by
issuing the following command as a regular user in your home
<P STYLE="margin-left: 0.79in">jack_fst</P>
<P>If you get the reply 
<P STYLE="margin-left: 0.79in">usage: jack_vst &lt;plugin&gt;</P>
<P>things look really good: jack_fst exists and is usable. Next let's
try to start a VST instrument. First start jack or qjacktl so that
the VST has something to talk to. I am using the Native Instruments
B4 organ and the dll is located in ./vst:</P>
<P STYLE="margin-left: 0.79in">jack_fst ./vst/B4.dll</P>
<P>And the B4 fires up. Using the qjackctl connections I can connect
B4 to jack outputs, and play, which concludes this exercise. 
<H2 CLASS="western">Summary</H2>
<P>This HOWTO describes how to set up a Planet CCRMA system on Fedora
Core 3 system with wine-20040505, fst-1.6, and jack_fst to run VST
instruments and effects. 
<H2 CLASS="western">References</H2>
<H2 CLASS="western">FAQ</H2>
<P><A NAME="st"></A>Q: Will all my VST(i)s working under Win32 apps
be supported with FC3?</P>
<P>A: Unfortunately not. Please check
<A HREF="http://www.djcj.org/LAU/ladspavst/">http://www.djcj.org/LAU/ladspavst/</A>
for a compatibilty list</P>
<P STYLE="margin-bottom: 0in"><A NAME="st1"></A>Q: Is there any
limitation of the number of running VST(i)s at the same time?</P>
<P>A: I do not know. I have really not tested this with more than one
VST at a time.</P>
<P>Q: Can i use them standalone as was in Windows?</P>
<P>A: Yes you can, as long as you have the Jack audio server running.</P>
<P><A NAME="st2"></A>Q: Is there any issue about latency when using
VST(i)s? Or is it all<BR>depends on configuration and hardware?</P>
<P>A: It all depends on your configuration and HW. Jack takes care of
the latency.</P>
<P STYLE="margin-bottom: 0in"><BR>
<P STYLE="margin-bottom: 0in"><A NAME="st3"></A>Q: My VST(i)s is not
working or some features are missing there or<BR>sounds totally crap.
Then, what must i do?</P>
<P>A: This is a difficult one. Please google for a possible linux
project working on making your VST work. If none exists you
unfortunately have to wait until someone makes it work.</P>
<H2 CLASS="western">Acknowledgements</H2>
<P>A ginormours thank you to Dave Phillips and his VST tutorial
without which this document could not have been written. I have
borrowed, stolen, plagiated and obscured text and findings presented
in his tutorial to create this document. 
<P>Nando for the Planet</P>
<P>Turkay Guner for the FAQ questions.</P>
<P>Thank you!</P>