1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
2 |
<html> |
3 |
<head> |
4 |
<meta content="text/html; charset=ISO-8859-1" |
5 |
http-equiv="content-type"> |
6 |
<title>LinuxSampler for Debian</title> |
7 |
<link rel="shortcut icon" href="http://download.linuxsampler.org/favicon.ico" type="image/x-icon"> |
8 |
<link rel="stylesheet" type="text/css" href="libgig/css/content.css" title="content" media="all"> |
9 |
</head> |
10 |
<body> |
11 |
<h2><center>LinuxSampler for Debian <img src="gfx/logos/debian.png"> HOWTO by Christian Schoenebeck </center></h2> |
12 |
<br> |
13 |
<center>February 7th, 2008</center><br> |
14 |
<div style="background-color: #F4F4FF; margin: 1em 3em 1em 3em; padding: 1em 1em 1em 2.2em;"> |
15 |
<a href="#intro">1. Introduction</a><br> |
16 |
<a href="#requirements">2. Requirements</a><br> |
17 |
<a href="#build_backend">3. Building the Backend</a><br> |
18 |
<a href="#benchmark">4. Benchmark</a><br> |
19 |
<a href="#build_frontends">5. Building the Frontend(s) and Instrument Editor</a><br> |
20 |
<a href="#houston">6. Troubleshooting</a><br> |
21 |
<a href="#docs">7. Detailed Documentation</a><br> |
22 |
<a href="#bugs">8. Bugs, Problems and Feature Requests</a><br> |
23 |
<a href="#contact">9. Contact</a><br> |
24 |
</div> |
25 |
<p> |
26 |
<center> |
27 |
<script type="text/javascript"><!-- |
28 |
google_ad_client = "pub-3408196773880325"; |
29 |
/* 728x90, created 8/3/09 */ |
30 |
google_ad_slot = "7744776541"; |
31 |
google_ad_width = 728; |
32 |
google_ad_height = 90; |
33 |
//--> |
34 |
</script> |
35 |
<script type="text/javascript" |
36 |
src="//pagead2.googlesyndication.com/pagead/show_ads.js"> |
37 |
</script> |
38 |
</center> |
39 |
</p> |
40 |
|
41 |
<a name="intro"></a> |
42 |
<h3>1. Introduction</h3> |
43 |
There are two ways to install LS & friends on your Debian system. You can |
44 |
either <a href="http://linuxsampler.org/downloads.html">download</a> and |
45 |
install our precompiled Debian binary packages (x86 only), or you can compile |
46 |
those Debian packages by yourself. Our precompiled Debian packages are cooked |
47 |
for the latest Debian <i>stable</i> distribution (a.k.a. <i>"etch"</i>). |
48 |
Installing them is pretty easy. Just download the latest versions of the |
49 |
Debian binary packages from our server and install them (as root) with: |
50 |
<pre> |
51 |
dpkg -i REPLACE_BY_DEB_FILE |
52 |
</pre> |
53 |
However we recommend you to recompile at least libgig and LinuxSampler |
54 |
(the backend) by yourself, to get the maximum performance out of your box |
55 |
(because libgig and LinuxSampler are the software components which take the |
56 |
most of your machine's resources under heavy setups which you're probably |
57 |
going to do). Another reason at the moment for you to recompile them is when |
58 |
you have an old machine that doesn't support |
59 |
<a href="http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions">SSE</a> |
60 |
instructions. Because the latest Debian binary packages were accidently |
61 |
compiled with using |
62 |
<a href="http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions">SSE</a> |
63 |
floating point instructions (see |
64 |
<a href="https://bugs.linuxsampler.org/cgi-bin/show_bug.cgi?id=71">bug report #71</a>). |
65 |
In the latter case, linuxsampler would die with a |
66 |
<i>"FATAL ERROR: Illegal instruction (SIGILL) occured!"</i> error message. |
67 |
We're going to address this Debian binary issue with the next |
68 |
LS (LinuxSampler) release. And of course, if you don't have a x86 based |
69 |
system, you currently have to build the Debian packages by yourself as |
70 |
well.<br> |
71 |
<br> |
72 |
So this HOWTO is focused on how to cook optimized Debian packages of |
73 |
LS & friends for your specific system. Of course you could also |
74 |
compile everything the old fashioned way, that is: |
75 |
<pre> |
76 |
cd SOURCEDIR |
77 |
make -f Makefile.cvs |
78 |
./configure |
79 |
make |
80 |
su |
81 |
make install |
82 |
</pre> |
83 |
But many users who use a Debian based system (e.g. Ubuntu) prefer |
84 |
(building and) installing Debian packages, since it's cleaner for their |
85 |
environment and, which is probably more important to you, the Debian |
86 |
packaging mechanism takes care of compile time and runtime library |
87 |
dependencies etc. |
88 |
|
89 |
<a name="requirements"></a> |
90 |
<h3>2. Requirements</h3> |
91 |
<ul> |
92 |
<li>g++ (the GNU C++ compiler, 4.x recommended)</li> |
93 |
<li>debhelper (Debian package build tools)</li> |
94 |
<li>pkg-config (manages compiler and linker flags for libraries)</li> |
95 |
<li>automake (automatic Makefile builder, 1.5 or higher required)</li> |
96 |
<li>autoconf (automatic configure script builder)</li> |
97 |
<li>libtool (generic library build tool)</li> |
98 |
<li>fakeroot (required to build Debian packages as ordinary user)</li> |
99 |
<li>couple more ... :-)</li> |
100 |
</ul> |
101 |
Each of the software components you're going to compile will have additional |
102 |
requirements, but we'll address this later. The ones mentioned above are |
103 |
absolute prerequisites for continueing, so make sure you have them installed. |
104 |
If not, do so now (as root): |
105 |
<pre> |
106 |
apt-get install g++ debhelper pkg-config automake1.8 libtool fakeroot |
107 |
</pre> |
108 |
If this is the first Debian packages you're going to build, you may wonder |
109 |
about the <i>fakeroot</i> tool. This is needed to "fool" the Debian |
110 |
packaging tools that we're compiling as root. Because usually you don't |
111 |
actually want to compile things as root, but the Debian packaging scripts |
112 |
expect it. |
113 |
|
114 |
<a name="build_backend"></a> |
115 |
<h3>3. Building the Backend</h3> |
116 |
Grab the source code files of libgig (e.g. from our Subversion server, as |
117 |
described on the |
118 |
<a href="http://linuxsampler.org/downloads.html">downloads site</a>). Then you |
119 |
should optimize the compilation flags for your machine. This really depends |
120 |
on what kind of CPU and other hardware you use. Open the file <i>debian/rules</i> of |
121 |
the libgig sources in a text editor and watch out for the following line: |
122 |
<pre> |
123 |
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info |
124 |
</pre> |
125 |
This is the line where you'll place all your optimization options. Remove the |
126 |
arguments --host and --build which are only meant for cross compilation and |
127 |
prefix the line with your preferred optimization flags. So, for a Pentium4 |
128 |
machine it could look like: |
129 |
<pre> |
130 |
CXXFLAGS="-O3 -msse -march=pentium4 -mfpmath=sse -ffast-math -fomit-frame-pointer -funroll-loops" ./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info |
131 |
</pre> |
132 |
save the file and finally you can start the build process (as ordinary user) with: |
133 |
<pre> |
134 |
dpkg-buildpackage -rfakeroot -b |
135 |
</pre> |
136 |
from the libgig source directory, which should compile and build the .deb |
137 |
files for you. In case it immediately aborts with the following error |
138 |
message: |
139 |
<pre> |
140 |
Unmet build dependencies: ... |
141 |
</pre> |
142 |
Simply install the requested packages with "apt-get install" (or whatever you |
143 |
prefer for package installation) and call the dpkg-buildpackage command |
144 |
again. After a minute or so it should have left 3 .deb files one directory |
145 |
above your libgig source directory. Install those 3 .deb files now, i.e. with |
146 |
dpkg (as root): |
147 |
<pre> |
148 |
dpkg -i libgig_3.2.1-1_i386.deb libgig-dev_3.2.1-1_i386.deb |
149 |
dpkg -i gigtools_3.2.1-1_i386.deb |
150 |
</pre> |
151 |
and now repeat these steps for LS. That is grab the LS sources, edit the |
152 |
debian/rules files at the similar configure line. The only difference with LS |
153 |
is that you have much more options now. For example on a recent Pentium4 machine, |
154 |
the LS compile time options in LS's <i>debian/rules</i> file could become: |
155 |
<pre> |
156 |
CXXFLAGS="-O3 -msse -march=pentium4 -mfpmath=sse -ffast-math -fomit-frame-pointer -funroll-loops" ./configure --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --enable-refill-streams=2 --enable-stream-size=320000 --enable-preload-samples=65536 --enable-max-voices=200 --enable-max-streams=220 |
157 |
</pre> |
158 |
Just to let you know the difference: the options you apply to the "CXXFLAGS" |
159 |
variable are options of the compiler (usually the GNU compiler, |
160 |
see "man gcc" for all available gcc options). The parameters after |
161 |
the "./configure" token are LS specific compile time options, i.e. the amount |
162 |
of disk streams etc. For a full list of LS's compile time options and brief |
163 |
explanations of them you can call: |
164 |
<pre> |
165 |
./configure --help |
166 |
</pre> |
167 |
from LS's source directory. So after you modified the configure line in LS's |
168 |
<i>debian/rules</i> file, you can once again call: |
169 |
<pre> |
170 |
dpkg-buildpackage -rfakeroot -b |
171 |
</pre> |
172 |
to get the LS packages cooked. This time it should take a bit longer. Once |
173 |
again you'll get 3 Debian packages (<i>liblinuxsampler</i>, <i>liblinuxsampler-dev</i> and |
174 |
<i>linuxsampler</i>). Install those 3 new LS packages again e.g. with "dpkg -i" like |
175 |
already explained above with libgig.<br> |
176 |
<br> |
177 |
And that's it!</br> |
178 |
<br> |
179 |
The good thing: if you grabbed the sources of libgig and LS from Subversion, you only |
180 |
have to call: |
181 |
<pre> |
182 |
svn update |
183 |
dpkg-buildpackage -rfakeroot -b |
184 |
</pre> |
185 |
once in a while from the source directory to conveniently compile the latest |
186 |
version with your personal optimizations and configuration parameters for |
187 |
your system, because "svn update" updates your local source files to the |
188 |
latest bleeding edge version from our Subversion server but won't touch your |
189 |
modifications! |
190 |
<br> |
191 |
The problematic part is to find good compile time options for your specific |
192 |
system. Unfortunately there is no real recipe for that, it always requires |
193 |
to play around a bit with the various options. A little help on this however is |
194 |
described next. |
195 |
|
196 |
<a name="benchmark"></a> |
197 |
<h3>4. Benchmark</h3> |
198 |
You're most probably unsure which gcc (compiler) flags to use. |
199 |
As said, this always means a bit playing around. For that you can use our stripped |
200 |
down benchmark, which is located in the "benchmarks" directory of the LS |
201 |
sources. The good thing about the benchmark: it's really light-weight, that |
202 |
is it's a benchmark of our full gig sampling engine, but it doesn't depend on |
203 |
any MIDI or audio drivers, nor does it require to load any sounds or to |
204 |
handle with automake / ./configure crap and compiles really fast.<br> |
205 |
<br> |
206 |
Here's how it goes: |
207 |
<ol> |
208 |
<li> |
209 |
adjust the file <i>benchmarks/Makefile</i> in the LS source directory with the |
210 |
CFLAGS (pretty much the same as CXXFLAGS) of your choice |
211 |
</li> |
212 |
<li> |
213 |
call "make" from the benchmarks/ directory |
214 |
</li> |
215 |
<li> |
216 |
run the compiled binary "benchmarks/gigsynth" |
217 |
</li> |
218 |
</ol> |
219 |
which will print you out benchmark values for your system on the console. |
220 |
There are different kind of so called "synthesis modes", i.e. one with filter |
221 |
on, one with filter off, one with resampling on, one with no resampling, etc. |
222 |
each will shoot its own benchmark result.<br> |
223 |
<br> |
224 |
So that way you can easily and quickly play around with CFLAGS (a.k.a |
225 |
CXXFLAGS) and figure out which one is beloved by your machine. |
226 |
|
227 |
<a name="build_frontends"></a> |
228 |
<h3>5. Building the Frontend(s) and Instrument Editor</h3> |
229 |
<b>QSampler:</b> Building the QSampler Debian package is pretty much the same |
230 |
process are described above for the backend. However usually you don't need |
231 |
to take the hassle to optimize the compile time flags as thoroughly as you |
232 |
would do for the backend. Since the frontend doesn't use much resources |
233 |
anyway. Note however that you need to cook <b>and install</b> the liblscp Debian |
234 |
packages <b>before</b> starting to build the QSampler package.<br> |
235 |
<br> |
236 |
<b>JSampler:</b> Many users prefer to use JSampler instead of QSampler, |
237 |
since it currently provides more features and has a very slick skin based |
238 |
user interface. Unfortunately JSampler hasn't been debianized yet, so there |
239 |
is no way at the moment to build JSampler and jlscp Debian packages yet. |
240 |
But this certainly going to change as soon as the GPL transition of the |
241 |
Java SDK has been completed. So for now please use either the precompiled |
242 |
JSampler .jar file (e.g. from our |
243 |
<a href="http://linuxsampler.org/downloads.html">downloads site</a>) or |
244 |
refer to the |
245 |
<a href="http://linuxsampler.org/jsampler/manual/html/jsampler.html#BUILDING_FROM_SOURCE"> |
246 |
build instructions</a> of the JSampler documentation.<br> |
247 |
<br> |
248 |
<b>gigedit:</b> This is the graphical instrument editor for .gig files. |
249 |
Once again, building Debian packages of gigedit is similar to the |
250 |
other software components. Just note that you should build gigedit |
251 |
<b>after</b> you compiled <b>and installed</b> libgig and linuxsampler. |
252 |
Otherwise gigedit might just be compiled as a stand-alone editor, that is |
253 |
you might not use it in conjunction with LS & friends. If you have |
254 |
any trouble getting gigedit to work with LS, please refer to the |
255 |
<a href="http://download.linuxsampler.org/doc/gigedit/quickstart/gigedit_quickstart.html#live_editing"> |
256 |
"live mode"</a> chapter of the gigedit documentation and its respective |
257 |
<a href="http://download.linuxsampler.org/doc/gigedit/quickstart/gigedit_quickstart.html#live_trouble"> |
258 |
trouble shooting</a> section. |
259 |
|
260 |
<a name="houston"></a> |
261 |
<h3>6. Troubleshooting</h3> |
262 |
<ul> |
263 |
<li> |
264 |
<div style="background-color: #FFF2F2;"> |
265 |
<u>Problem:</u> required libgig version not found |
266 |
</div> |
267 |
<div style="background-color: #F2FFF2;"> |
268 |
<u>Reason / Solution:</u> |
269 |
make sure you don't have another, old version of libgig installed at another place ( e.g. under /usr/local ) |
270 |
</div> |
271 |
</li> |
272 |
</ul> |
273 |
|
274 |
<a name="docs"></a> |
275 |
<h3>7. Detailed Documentation</h3> |
276 |
You find more detailed documentation about our software, i.e. about JSampler |
277 |
or gigedit on our official <a href="http://linuxsampler.org/documentation.html"> |
278 |
LinuxSampler documentation site</a>. |
279 |
|
280 |
<a name="bugs"></a> |
281 |
<h3>8. Bugs, Problems and Feature Requests</h3> |
282 |
Our Forum is a good place to ask for help:<br> |
283 |
<br> |
284 |
<a href="http://bb.linuxsampler.org">http://bb.linuxsampler.org</a><br> |
285 |
<br> |
286 |
We have a dedicated forum section for |
287 |
newbies and support.<br> |
288 |
<br> |
289 |
No software is perfect, nor is ours, if you found bugs, please |
290 |
report them using our bug tracking system:<br> |
291 |
<br> |
292 |
<a href="http://bugs.linuxsampler.org/">http://bugs.linuxsampler.org/</a> |
293 |
|
294 |
<a name="contact"></a> |
295 |
<h3>9. Contact</h3> |
296 |
If you have questions or want to help us to improve the sampler, please |
297 |
subscribe to the <a href="http://www.linuxsampler.org/developers.html"> |
298 |
LinuxSampler Developer's mailing list</a>. If you want to contact a |
299 |
certain developer instead, your can find our email addresses here:<br> |
300 |
<br> |
301 |
<a href="http://www.linuxsampler.org/developers.html">http://www.linuxsampler.org/developers.html</a> |
302 |
<br><br> |
303 |
That's it, enjoy!<br> |
304 |
<br> |
305 |
|
306 |
</body> |
307 |
</html> |