1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
2 |
<html> |
3 |
<head> |
4 |
|
5 |
<link rel="stylesheet" type="text/css" href="index.css"> |
6 |
<title>The Linux Sampler Project</title> |
7 |
|
8 |
<meta http-equiv="content-type" |
9 |
content="text/html; charset=ISO-8859-1"> |
10 |
|
11 |
<script language="javascript" type="text/javascript"> |
12 |
<!-- |
13 |
var dir = "gfx/"; |
14 |
|
15 |
if(document.images) { |
16 |
|
17 |
newsover = new Image(); |
18 |
newsover.src = dir + "mnewshover.png"; |
19 |
|
20 |
newsout = new Image(); |
21 |
newsout.src = dir + "mnews.png"; |
22 |
|
23 |
aboutover = new Image(); |
24 |
aboutover.src = dir + "mabouthover.png"; |
25 |
|
26 |
aboutout = new Image(); |
27 |
aboutout.src = dir + "mabout.png"; |
28 |
|
29 |
featuresover = new Image(); |
30 |
featuresover.src = dir + "mfeatureshover.png"; |
31 |
|
32 |
featuresout = new Image(); |
33 |
featuresout.src = dir + "mfeatures.png"; |
34 |
|
35 |
screenshotsover = new Image(); |
36 |
screenshotsover.src = dir + "mscreenshotshover.png"; |
37 |
|
38 |
screenshotsout = new Image(); |
39 |
screenshotsout.src = dir + "mscreenshots.png"; |
40 |
|
41 |
demosover = new Image(); |
42 |
demosover.src = dir + "mdemoshover.png"; |
43 |
|
44 |
demosout = new Image(); |
45 |
demosout.src = dir + "mdemos.png"; |
46 |
|
47 |
downloadsover = new Image(); |
48 |
downloadsover.src = dir + "mdownloadshover.png"; |
49 |
|
50 |
downloadsout = new Image(); |
51 |
downloadsout.src = dir + "mdownloads.png"; |
52 |
|
53 |
developersover = new Image(); |
54 |
developersover.src = dir + "mdevelopershover.png"; |
55 |
|
56 |
developersout = new Image(); |
57 |
developersout.src = dir + "mdevelopers.png"; |
58 |
|
59 |
instrumentsover = new Image(); |
60 |
instrumentsover.src = dir + "minstrumentshover.png"; |
61 |
|
62 |
instrumentsout = new Image(); |
63 |
instrumentsout.src = dir + "minstruments.png"; |
64 |
|
65 |
linksover = new Image(); |
66 |
linksover.src = dir + "mlinkshover.png"; |
67 |
|
68 |
linksout = new Image(); |
69 |
linksout.src = dir + "mlinks.png"; |
70 |
|
71 |
documentationover = new Image(); |
72 |
documentationover.src = dir + "mdocumentationhover.png"; |
73 |
|
74 |
documentationout = new Image(); |
75 |
documentationout.src = dir + "mdocumentation.png"; |
76 |
|
77 |
creditsover = new Image(); |
78 |
creditsover.src = dir + "mcreditshover.png"; |
79 |
|
80 |
creditsout = new Image(); |
81 |
creditsout.src = dir + "mcredits.png"; |
82 |
|
83 |
faqover = new Image(); |
84 |
faqover.src = dir + "mfaqhover.png"; |
85 |
|
86 |
faqout = new Image(); |
87 |
faqout.src = dir + "mfaq.png"; |
88 |
|
89 |
bugsover = new Image(); |
90 |
bugsover.src = dir + "mbugshover.png"; |
91 |
|
92 |
bugsout = new Image(); |
93 |
bugsout.src = dir + "mbugs.png"; |
94 |
} |
95 |
--> |
96 |
</script> |
97 |
|
98 |
</head> |
99 |
|
100 |
<body> |
101 |
|
102 |
<div id="mainwindow"><img name="LinuxSampler" src="gfx/lsbackground.jpg" alt="LinuxSampler"> |
103 |
|
104 |
<h1><span class="hidden">The LinuxSampler Project</span></h1> |
105 |
|
106 |
<table border=0 cellspacing=0 cellpadding=0><tr><th colspan=2 align=left> |
107 |
<img name="h1about" src="gfx/h1about.png" alt="About"><span class="hidden">about</span></th></tr> |
108 |
<tr><td valign=top> |
109 |
<a id="news" href="index.php" onmouseover="javascript:if(document.images)document.news.src = newsover.src" onmouseout="javascript:if(document.images)document.news.src = newsout.src"><img name="news" src="gfx/mnews.png" alt="news"></a> |
110 |
<a id="about" href="about.html" onmouseover="javascript:if(document.images)document.about.src = aboutover.src" onmouseout="javascript:if(document.images)document.about.src = aboutout.src"><img name="about" src="gfx/mabout.png" alt="about"></a> |
111 |
<a id="features" href="features.html" onmouseover="javascript:if(document.images)document.features.src = featuresover.src" onmouseout="javascript:if(document.images)document.features.src = featuresout.src"><img name="features" src="gfx/mfeatures.png" alt="features"></a> |
112 |
<a id="screenshots" href="screenshots.html" onmouseover="javascript:if(document.images)document.screenshots.src = screenshotsover.src" onmouseout="javascript:if(document.images)document.screenshots.src = screenshotsout.src"><img name="screenshots" src="gfx/mscreenshots.png" alt="screenshots"></a> |
113 |
<a id="demos" href="demos.html" onmouseover="javascript:if(document.images)document.demos.src = demosover.src" onmouseout="javascript:if(document.images)document.demos.src = demosout.src"><img name="demos" src="gfx/mdemos.png" alt="demos"></a> |
114 |
<a id="downloads" href="downloads.html" onmouseover="javascript:if(document.images)document.downloads.src = downloadsover.src" onmouseout="javascript:if(document.images)document.downloads.src = downloadsout.src"><img name="downloads" src="gfx/mdownloads.png" alt="download"></a> |
115 |
<a id="developers" href="developers.html" onmouseover="javascript:if(document.images)document.developers.src = developersover.src" onmouseout="javascript:if(document.images)document.developers.src = developersout.src"><img name="developers" src="gfx/mdevelopers.png" alt="developers"></a> |
116 |
<a id="faq" href="faq.html" onmouseover="javascript:if(document.images)document.faq.src = faqover.src" onmouseout="javascript:if(document.images)document.faq.src = faqout.src"><img name="faq" src="gfx/mfaq.png" alt="faq"></a> |
117 |
<a id="documentation" href="documentation.html" onmouseover="javascript:if(document.images)document.documentation.src = documentationover.src" onmouseout="javascript:if(document.images)document.documentation.src = documentationout.src"><img name="documentation" src="gfx/mdocumentation.png" alt="documentation"></a> |
118 |
<a id="bugs" href="http://bugs.linuxsampler.org" onmouseover="javascript:if(document.images)document.bugs.src = bugsover.src" onmouseout="javascript:if(document.images)document.bugs.src = bugsout.src"><img name="bugs" src="gfx/mbugs.png" alt="bugs"></a> |
119 |
<a id="instruments" href="instruments.html" onmouseover="javascript:if(document.images)document.instruments.src = instrumentsover.src" onmouseout="javascript:if(document.images)document.instruments.src = instrumentsout.src"><img name="instruments" src="gfx/minstruments.png" alt="instruments"></a> |
120 |
<a id="links" href="links.html" onmouseover="javascript:if(document.images)document.links.src = linksover.src" onmouseout="javascript:if(document.images)document.links.src = linksout.src"><img name="links" src="gfx/mlinks.png" alt="links"></a> |
121 |
<a id="credits" href="credits.html" onmouseover="javascript:if(document.images)document.credits.src = creditsover.src" onmouseout="javascript:if(document.images)document.credits.src = creditsout.src"><img name="credits" src="gfx/mcredits.png" alt="credits"></a> |
122 |
</td><td valign=top width="100%"> |
123 |
<div id="contents"> |
124 |
|
125 |
<h2>The Project</h2> |
126 |
<p class="default"> |
127 |
The LinuxSampler proect was founded / established / formed with the |
128 |
goal to produce a free, open source pure software audio sampler |
129 |
with professional grade features, comparable to both hardware and |
130 |
commercial Windows/Mac software samplers |
131 |
and to introduce new features not yet available by any other |
132 |
sampler in the world. |
133 |
</p> |
134 |
|
135 |
<h2>The Engine</h2> |
136 |
<p class="default"> |
137 |
<u><b>LinuxSampler</b></u> was designed very modular, especially |
138 |
(and in contrast to other samplers) it was decoupled from any user |
139 |
interface. LinuxSampler itself usually runs as own process in the |
140 |
background of the computer and usually does not show up anything on |
141 |
the screen, or at most it can be launched to show status |
142 |
informations and debug messages in a console window:<br> |
143 |
<br> |
144 |
<a href="screenshots/ls_0_5_1_console.png"> |
145 |
<img src="screenshots/ls_0_5_1_console_preview.png"> |
146 |
</a><br> |
147 |
<br> |
148 |
That means LinuxSampler itself is the "engine" of the sampler, it |
149 |
is the software component which performs all the heavy and time |
150 |
critical computational tasks of handling MIDI events, calculating |
151 |
the audio data and sending the final audio data to your sound |
152 |
card(s). We call LinuxSampler the <i>sampler backend</i>. |
153 |
</p> |
154 |
|
155 |
<h2>The Face(s)</h2> |
156 |
<p class="default"> |
157 |
Obviously you need some way to control the sampler. That's where a |
158 |
2nd application comes into game, which we call a |
159 |
<i>sampler frontend</i> application. A frontend is (usually) a |
160 |
graphical application, visible on the screen, providing the user |
161 |
a set of e.g. menus, buttons, sliders, dials, etc. to allow the |
162 |
user to control the sampler in a convenient way. It merely sends |
163 |
the user requests to the sampler engine (LinuxSampler) and in turn |
164 |
shows the engine's status informations on the screen. A frontend |
165 |
does not perform any signal processing tasks, so you can see it as |
166 |
a "face" of the sampler.<br> |
167 |
<br> |
168 |
For luxury we already provide you two different frontends / "faces" |
169 |
for LinuxSampler: |
170 |
</p> |
171 |
<ul> |
172 |
<li> |
173 |
<u><b>QSampler</b></u> is a light-weight frontend written in |
174 |
C++, using straightforward native graphical controls of the |
175 |
underlying operating system. That way the appearance of |
176 |
QSampler on the screen is very fast and it only consumes very |
177 |
little resources. Due to its utilization of the operating |
178 |
system's common GUI controls, it looks slightly different on |
179 |
every operating system (also dependent of the user's selected |
180 |
theme on his OS):<br> |
181 |
<br> |
182 |
<a href="screenshots/qs_0_2_1_win.jpg"> |
183 |
<img src="screenshots/qs_0_2_1_win_preview.jpg"> |
184 |
</a> |
185 |
<a href="screenshots/qs_0_2_1_ubuntu.jpg"> |
186 |
<img src="screenshots/qs_0_2_1_ubuntu_preview.png"> |
187 |
</a><br> |
188 |
<br> |
189 |
</li> |
190 |
|
191 |
<li> |
192 |
<u><b>JSampler</b></u> is a full-fledged frontend for |
193 |
LinuxSampler, written in Java and currently comes in two |
194 |
flavors: <b>JSampler "Classic"</b> offers straightforward GUI |
195 |
controls whereas <b>JSampler "Fantasia"</b> provides a modern |
196 |
skin based user interface:<br> |
197 |
<br> |
198 |
<a href="screenshots/fantasia.png"><img src="screenshots/fantasia-preview.png"></a> |
199 |
<br> |
200 |
JSampler supports all features currently available in the |
201 |
sampler engine (LinuxSampler).<br> |
202 |
</li> |
203 |
</ul> |
204 |
<p class="default"> |
205 |
It's completely up to you which frontend to use. You could even use |
206 |
both parallel at the same time for the same sampler engine |
207 |
instance, really! ;-) |
208 |
</p> |
209 |
|
210 |
<h2>The Format</h2> |
211 |
<p class="default"> |
212 |
It is planned to support all common sampler formats in |
213 |
LinuxSampler, but at the moment we chose to concentrate on the |
214 |
Gigasampler format, because when we started this project, the |
215 |
Gigasampler format was (in our opinion) the most popular |
216 |
and "best" sampler format in regards of quality and power, |
217 |
especially for the synthesis of natural instruments like pianos, |
218 |
brass and bowed instruments. But we already made good advance in |
219 |
implementing this format, so we are optimistic to start with |
220 |
adding other formats soon. Beside that we also planned to |
221 |
design our own, sophisticated sampler format to introduce a more |
222 |
powerful and more flexible sampler format compared to |
223 |
any sampler format currently available in the world. Be encouraged |
224 |
to share your ideas about such a new format with us! |
225 |
</p> |
226 |
|
227 |
<h2>The Editor</h2> |
228 |
<p class="default"> |
229 |
<u><b>gigedit</b></u> allows you to edit and create instruments |
230 |
for the Gigasampler format, which can be used with LinuxSampler |
231 |
as well as with Tascam's Gigastudio. Following our line of |
232 |
modularity we also made the instrument editors independent |
233 |
applications. Because let's face it: every sampler format is |
234 |
different, so in our opinion it is better to honor the specific |
235 |
features of one format with its own instrument editor application |
236 |
instead of trying to fiddle everything into one single bloated |
237 |
application. So gigedit is our first editor, dedicated to the .gig |
238 |
format:<br> |
239 |
<br> |
240 |
<a href="screenshots/gigedit_0_0_3.png"><img src="screenshots/gigedit_0_0_3_preview.jpg"></a> |
241 |
<br> |
242 |
You can use gigedit as stand-alone application or in conjunction |
243 |
with LinuxSampler. For the latter case gigedit installs a plugin |
244 |
into the sampler engine, so the engine (and with it the frontends) |
245 |
knows that gigedit actually exists and can handle the .gig format. |
246 |
So even though we decoupled the sampler's components into |
247 |
independent applications, they all work seamlessly together. Just |
248 |
press the "Edit" button on a channel strip of a frontend and |
249 |
gigedit will automatically popup on the screen and you're |
250 |
immediately ready to edit your selected instrument, making all your |
251 |
modifications audible in realtime. Even when editing huge |
252 |
instruments of 1GB or more, tweak the instrument with gigedit and |
253 |
immediately hear it while playing on the keyboard at the same time. |
254 |
And the good thing: even with new sampler formats we're going to |
255 |
add soon (and with it new editors), you don't have to remember |
256 |
which instrument you loaded uses which format. Simply click on |
257 |
"Edit" in a frontend and the sampler engine will choose the right |
258 |
instrument editor application for the respective instrument for |
259 |
you. |
260 |
</p> |
261 |
|
262 |
<h2>The Technical Interface</h2> |
263 |
<p class="default"> |
264 |
As the components of the sampler are independent applications, |
265 |
there must be a way to let the applications communicate with each |
266 |
other. For this LinuxSampler provides a native C++ |
267 |
<a href="http://en.wikipedia.org/wiki/Application_programming_interface">API</a> |
268 |
as well as a network interface using an ASCII based protocol which |
269 |
we call "<a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html" title="LinuxSampler Control Protocol">LSCP</a>" |
270 |
for controlling the sampler engine and managing sampler sessions. |
271 |
Our frontends support that network interface, which also allwos |
272 |
control the sampler engine with the GUI frontend(s) remotely from |
273 |
another computer, probably even running a completely different |
274 |
Operating System. |
275 |
</p> |
276 |
|
277 |
<h2>The Community</h2> |
278 |
<p class="default"> |
279 |
All applications are under active development. However we all work |
280 |
on this project for fun in our spare time. There are still so many |
281 |
things to do and our hands are limited. So don't hesitate on |
282 |
participating to the project! You don't necessarily need to be a |
283 |
skilled programmer to help the project. Testing the applications, |
284 |
<a href="http://bugs.linuxsampler.org.">reporting bugs</a>, writing |
285 |
documentation, providing artwork, themes for frontends, etc. helps |
286 |
us and all users a lot! Simply subscribe to our |
287 |
<a href="http://lists.sourceforge.net/lists/listinfo/linuxsampler-devel"> |
288 |
mailing list |
289 |
</a> and we'll of course take you by the hand in case you want to |
290 |
participate with active source code development. Don't be afraid! |
291 |
You have your own ideas and concepts for making the sampler better? |
292 |
Great, share them with us!<br> |
293 |
<br> |
294 |
</p> |
295 |
|
296 |
</div> |
297 |
</td></tr></table> |
298 |
|
299 |
</div> |
300 |
|
301 |
</body> |
302 |
</html> |