22 |
<a href="#bugs">8. Bugs, Problems and Feature Requests</a><br> |
<a href="#bugs">8. Bugs, Problems and Feature Requests</a><br> |
23 |
<a href="#contact">9. Contact</a><br> |
<a href="#contact">9. Contact</a><br> |
24 |
</div> |
</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="http://pagead2.googlesyndication.com/pagead/show_ads.js"> |
37 |
|
</script> |
38 |
|
</center> |
39 |
|
</p> |
40 |
|
|
41 |
<a name="intro"></a> |
<a name="intro"></a> |
42 |
<h3>1. Introduction</h3> |
<h3>1. Introduction</h3> |
116 |
Grab the source code files of libgig (e.g. from our CVS server, as |
Grab the source code files of libgig (e.g. from our CVS server, as |
117 |
described on the |
described on the |
118 |
<a href="http://linuxsampler.org/downloads.html">downloads site</a>). Then you |
<a href="http://linuxsampler.org/downloads.html">downloads site</a>). Then you |
119 |
should optimize the compilation flags for your machine. This really depends |
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 |
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: |
the libgig sources in a text editor and watch out for the following line: |
122 |
<pre> |
<pre> |
123 |
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info |
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info |
124 |
</pre> |
</pre> |
125 |
This is the line where you'll place all your optimization options. Remove the |
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 |
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 |
prefix the line with your preferred optimization flags. So, for a Pentium4 |
128 |
machine it could look like: |
machine it could look like: |
129 |
<pre> |
<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 |
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> |
</pre> |
132 |
save the file and finally you can start the build process (as ordinary user) with: |
save the file and finally you can start the build process (as ordinary user) with: |
133 |
<pre> |
<pre> |
134 |
dpkg-buildpackage -rfakeroot -b |
dpkg-buildpackage -rfakeroot -b |
135 |
</pre> |
</pre> |
139 |
<pre> |
<pre> |
140 |
Unmet build dependencies: ... |
Unmet build dependencies: ... |
141 |
</pre> |
</pre> |
142 |
Simply install the requested packages with "apt-get install" (or whatever you |
Simply install the requested packages with "apt-get install" (or whatever you |
143 |
prefer for package installation) and call the dpkg-buildpackage command |
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 |
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 |
above your libgig source directory. Install those 3 .deb files now, i.e. with |
146 |
dpkg (as root): |
dpkg (as root): |
147 |
<pre> |
<pre> |
148 |
dpkg -i libgig_3.2.1-1_i386.deb libgig-dev_3.2.1-1_i386.deb |
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 |
dpkg -i gigtools_3.2.1-1_i386.deb |
150 |
</pre> |
</pre> |
151 |
and now repeat these steps for LS. That is grab the LS sources, edit the |
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 |
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, |
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: |
the LS compile time options in LS's <i>debian/rules</i> file could become: |
155 |
<pre> |
<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 |
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> |
</pre> |
158 |
Just to let you know the difference: the options you apply to the "CXXFLAGS" |
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, |
variable are options of the compiler (usually the GNU compiler, |
160 |
see "man gcc" for all available gcc options). The parameters after |
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 |
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 |
of disk streams etc. For a full list of LS's compile time options and brief |
163 |
explanations of them you can call: |
explanations of them you can call: |
164 |
<pre> |
<pre> |
165 |
./configure --help |
./configure --help |
166 |
</pre> |
</pre> |
167 |
from LS's source directory. So after you modified the configure line in LS's |
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: |
<i>debian/rules</i> file, you can once again call: |
169 |
<pre> |
<pre> |
170 |
dpkg-buildpackage -rfakeroot -b |
dpkg-buildpackage -rfakeroot -b |
171 |
</pre> |
</pre> |
172 |
to get the LS packages cooked. This time it should take a bit longer. Once |
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 |
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 |
<i>linuxsampler</i>). Install those 3 new LS packages again e.g. with "dpkg -i" like |
175 |
already explained above with libgig.<br> |
already explained above with libgig.<br> |
176 |
<br> |
<br> |
177 |
And that's it!</br> |
And that's it!</br> |
178 |
<br> |
<br> |
179 |
The good thing: if you grabbed the sources of libgig and LS from CVS, you only |
The good thing: if you grabbed the sources of libgig and LS from CVS, you only |
180 |
have to call: |
have to call: |
181 |
<pre> |
<pre> |
182 |
cvs update |
cvs update |
183 |
dpkg-buildpackage -rfakeroot -b |
dpkg-buildpackage -rfakeroot -b |
184 |
</pre> |
</pre> |
185 |
once in a while from the source directory to conveniently compile the latest |
once in a while from the source directory to conveniently compile the latest |
186 |
version with your personal optimizations and configuration parameters for |
version with your personal optimizations and configuration parameters for |
187 |
your system, because "cvs update" updates your local source files to the |
your system, because "cvs update" updates your local source files to the |
188 |
latest bleeding edge version from our CVS server but won't touch your |
latest bleeding edge version from our CVS server but won't touch your |
189 |
modifications! |
modifications! |
190 |
<br> |
<br> |
191 |
The problematic part is to find good compile time options for your specific |
The problematic part is to find good compile time options for your specific |
197 |
<h3>4. Benchmark</h3> |
<h3>4. Benchmark</h3> |
198 |
You're most probably unsure which gcc (compiler) flags to use. |
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 |
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 |
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 |
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 |
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 |
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> |
handle with automake / ./configure crap and compiles really fast.<br> |
205 |
<br> |
<br> |
206 |
Here's how it goes: |
Here's how it goes: |
217 |
</li> |
</li> |
218 |
</ol> |
</ol> |
219 |
which will print you out benchmark values for your system on the console. |
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 |
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. |
on, one with filter off, one with resampling on, one with no resampling, etc. |
222 |
each will shoot its own benchmark result.<br> |
each will shoot its own benchmark result.<br> |
223 |
<br> |
<br> |
224 |
So that way you can easily and quickly play around with CFLAGS (a.k.a |
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. |
CXXFLAGS) and figure out which one is beloved by your machine. |
226 |
|
|
227 |
<a name="build_frontends"></a> |
<a name="build_frontends"></a> |
281 |
<h3>8. Bugs, Problems and Feature Requests</h3> |
<h3>8. Bugs, Problems and Feature Requests</h3> |
282 |
Our Forum is a good place to ask for help:<br> |
Our Forum is a good place to ask for help:<br> |
283 |
<br> |
<br> |
284 |
<a href="https://bb.linuxsampler.org">https://bb.linuxsampler.org</a><br> |
<a href="http://bb.linuxsampler.org">http://bb.linuxsampler.org</a><br> |
285 |
<br> |
<br> |
286 |
We have a dedicated forum section for |
We have a dedicated forum section for |
287 |
newbies and support.<br> |
newbies and support.<br> |