/[svn]/web/trunk/www.linuxsampler.org/documentation.html
ViewVC logotype

Contents of /web/trunk/www.linuxsampler.org/documentation.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1822 - (show annotations) (download) (as text)
Sun Dec 28 09:53:14 2008 UTC (11 years, 6 months ago) by persson
File MIME type: text/html
File size: 20809 byte(s)
- added Windows build link

1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <link rel="stylesheet" type="text/css" href="index.css">
5 <title>The Linux Sampler Project</title>
6
7 <meta http-equiv="content-type"
8 content="text/html; charset=ISO-8859-1">
9
10 <script language="javascript" type="text/javascript">
11 <!--
12 var dir = "gfx/";
13
14 if(document.images) {
15
16 newsover = new Image();
17 newsover.src = dir + "mnewshover.png";
18
19 newsout = new Image();
20 newsout.src = dir + "mnews.png";
21
22 aboutover = new Image();
23 aboutover.src = dir + "mabouthover.png";
24
25 aboutout = new Image();
26 aboutout.src = dir + "mabout.png";
27
28 featuresover = new Image();
29 featuresover.src = dir + "mfeatureshover.png";
30
31 featuresout = new Image();
32 featuresout.src = dir + "mfeatures.png";
33
34 screenshotsover = new Image();
35 screenshotsover.src = dir + "mscreenshotshover.png";
36
37 screenshotsout = new Image();
38 screenshotsout.src = dir + "mscreenshots.png";
39
40 demosover = new Image();
41 demosover.src = dir + "mdemoshover.png";
42
43 demosout = new Image();
44 demosout.src = dir + "mdemos.png";
45
46 downloadsover = new Image();
47 downloadsover.src = dir + "mdownloadshover.png";
48
49 downloadsout = new Image();
50 downloadsout.src = dir + "mdownloads.png";
51
52 supportover = new Image();
53 supportover.src = dir + "msupporthover.png";
54 supportout = new Image();
55 supportout.src = dir + "msupport.png";
56
57 developersover = new Image();
58 developersover.src = dir + "mdevelopershover.png";
59
60 developersout = new Image();
61 developersout.src = dir + "mdevelopers.png";
62
63 instrumentsover = new Image();
64 instrumentsover.src = dir + "minstrumentshover.png";
65
66 instrumentsout = new Image();
67 instrumentsout.src = dir + "minstruments.png";
68
69 linksover = new Image();
70 linksover.src = dir + "mlinkshover.png";
71
72 linksout = new Image();
73 linksout.src = dir + "mlinks.png";
74
75 documentationover = new Image();
76 documentationover.src = dir + "mdocumentationhover.png";
77
78 documentationout = new Image();
79 documentationout.src = dir + "mdocumentation.png";
80
81 creditsover = new Image();
82 creditsover.src = dir + "mcreditshover.png";
83
84 creditsout = new Image();
85 creditsout.src = dir + "mcredits.png";
86
87 faqover = new Image();
88 faqover.src = dir + "mfaqhover.png";
89
90 faqout = new Image();
91 faqout.src = dir + "mfaq.png";
92
93 bugsover = new Image();
94 bugsover.src = dir + "mbugshover.png";
95
96 bugsout = new Image();
97 bugsout.src = dir + "mbugs.png";
98 }
99 -->
100 </script>
101
102 </head>
103
104 <body>
105
106 <div id="mainwindow"><img name="LinuxSampler" src="gfx/lsbackground.jpg" alt="LinuxSampler">
107
108 <h1><span class="hidden">The LinuxSampler Project</span></h1>
109
110 <table border=0 cellspacing=0 cellpadding=0><tr><th colspan=2 align=left>
111 <img name="h1blank" src="gfx/h1blank.png" alt="blank"><span class="hidden">about</span></th></tr>
112 <tr><td valign=top>
113 <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>
114 <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>
115 <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>
116 <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>
117 <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>
118 <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>
119 <a id="support" href="support.html" onmouseover="javascript:if(document.images)document.support.src = supportover.src" onmouseout="javascript:if(document.images)document.support.src = supportout.src"><img name="support" src="gfx/msupport.png" alt="support"></a>
120 <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>
121 <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>
122 <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>
123 <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>
124 <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>
125 <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>
126 <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>
127 </td><td valign=top width="100%">
128 <div id="contents">
129
130 <h2>Documentation</h2>
131 <p class="default">
132 This is still quite under construction. Be welcome to help us with writing some documentation!
133 </p>
134
135 <a name="windows"></a>
136 <a name="osx"></a>
137 <a name="debian"></a>
138 <h2>Howtos</h2>
139 <p class="default">
140 To ease new users the first contact with the Linuxsampler applications,
141 we have written the following short Howtos:
142 </p>
143 <table class="decorated">
144 <thead>
145 <tr>
146 <td class="decorated_header">Name</td>
147 <td class="decorated_header">Descripton</td>
148 </tr>
149 </thead>
150 <tbody>
151 <tr>
152 <td class="decorated"><a href="windows.html">Windows HOWTO</a></td>
153 <td class="decorated">
154 LinuxSampler quickstart guide for the MS Windows operating system.
155 </td>
156 </tr>
157 <tr>
158 <td class="decorated"><a href="osx.html">OS X HOWTO</a></td>
159 <td class="decorated">
160 LinuxSampler quickstart guide for the Apple OS X operating system.
161 </td>
162 </tr>
163 <tr>
164 <td class="decorated"><a href="debian.html">Debian HOWTO</a></td>
165 <td class="decorated">
166 Guide for how to build optimized Debian packages of LS &amp;
167 friends for your specific machine.
168 </td>
169 </tr>
170 <tr>
171 <td class="decorated"><a href="msys.html">Windows Build HOWTO</a></td>
172 <td class="decorated">
173 Guide for how to build libgig, linuxsampler and gigedit
174 for Windows by using MSYS.
175 </td>
176 </tr>
177 </tbody>
178 </table>
179
180 <h2>gigedit</h2>
181 <p class="default">
182 This is our graphical instrument editor based on the Gtk toolkit.
183 It can be used stand-alone or in conjunction with LinuxSampler.
184 Read the <a href="http://download.linuxsampler.org/doc/gigedit/quickstart/gigedit_quickstart.html">Gigedit Quickstart</a>
185 for a short tutorial. Please notice that this quickstart document
186 is automatically generated from CVS and thus might reflect
187 features and behaviors only available in the very latest, bleeding
188 edge development version of gigedit from CVS.
189 </p>
190
191 <h2><a name="jsampler">JSampler</a></h2>
192 <p class="default">
193 JSampler is an opensource, platform-independent,
194 GUI front-end for LinuxSampler, written entirely in Java.
195 Read the <a href="jsampler/manual/html/jsampler.html">JSampler manual</a>
196 for more information.<br>
197 For information about using Fantasia with Miditzer in Puppy Linux VTPO
198 read this <a href="http://organs.110mb.com/Fantasia.htm" target="_blank">HOWTO</a>.
199 </p>
200
201 <h2>libgig</h2>
202 <p class="default">
203 libgig is a C++ library used to load and modify Gigasampler format files.
204 If you're a developer and might want to use libgig, here is its
205 <a href="http://download.linuxsampler.org/doc/libgig/api/">API documentation</a>
206 (automatically daily updated from CVS).
207 </p>
208
209 <a name="lscp_spec"></a>
210 <a name="lscp_specs"></a>
211 <h2>liblscp</h2>
212 <p class="default">
213 liblscp is C library as convenient wrapper around the <i>LinuxSampler Control Protocol</i>.
214 If you're a developer and might want to use liblscp, here is its
215 <a href="http://download.linuxsampler.org/doc/liblscp/">API documentation</a>
216 (automatically daily updated from CVS).
217 </p>
218
219 <h2>LSCP Reference</h2>
220 <p class="default">
221 The following documents define the <i>LinuxSampler Control Protocol</i>,
222 a network protocol with which LinuxSampler can be controlled locally as well as remotely.
223 As this is a simple ASCII based protocol it's possible to write a frontend for LinuxSampler in
224 any programming language and GUI library. There's still a big demand especially for a Gtk and
225 ncurses based frontend, so be encouraged and let
226 <a href="http://www.linuxsampler.org/developers.html">us</a> know if you wrote a frontend for
227 LinuxSampler!
228 </p>
229
230 <table class="decorated">
231 <thead>
232 <tr>
233 <td class="decorated_header">Protocol Name</td>
234 <td class="decorated_header">Document Types</td>
235 <td class="decorated_header">Release Date</td>
236 <td class="decorated_header">Description</td>
237 </tr>
238 </thead>
239 <tbody>
240 <tr>
241 <td class="decorated">LSCP&nbsp;draft</td>
242 <td class="decorated">
243 <a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.txt">TXT</a>,
244 <a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html">HTML</a>,
245 <a href="http://cvs.linuxsampler.org/cgi-bin/viewcvs.cgi/*checkout*/linuxsampler/Documentation/lscp.xml?rev=HEAD&content-type=text/xml">XML</a>
246 </td>
247 <td class="decorated">unreleased</td>
248 <td class="decorated">
249 Very latest draft of the protocol (which usually reflects the
250 latest development state from CVS or may even not be implemented
251 yet).
252 </td>
253 </tr>
254 <tr>
255 <td class="decorated">LSCP&nbsp;1.3</td>
256 <td class="decorated">
257 <a href="http://www.linuxsampler.org/api/lscp-1.3.txt">TXT</a>,
258 <a href="http://www.linuxsampler.org/api/lscp-1.3.html">HTML</a>,
259 <a href="http://www.linuxsampler.org/api/lscp-1.3.xml">XML</a>
260 </td>
261 <td class="decorated">2007-12-06</td>
262 <td class="decorated">
263 Protocol specification of the latest official release of LinuxSampler (0.5.1).
264 </td>
265 </tr>
266 <tr>
267 <td class="decorated">LSCP&nbsp;1.2</td>
268 <td class="decorated">
269 <a href="http://www.linuxsampler.org/api/lscp-1.2.txt">TXT</a>,
270 <a href="http://www.linuxsampler.org/api/lscp-1.2.html">HTML</a>,
271 <a href="http://www.linuxsampler.org/api/lscp-1.2.xml">XML</a>
272 </td>
273 <td class="decorated">2007-10-15</td>
274 <td class="decorated">
275 Protocol specification of the previous official release of LinuxSampler (0.5.0).
276 </td>
277 </tr>
278 <tr>
279 <td class="decorated">LSCP&nbsp;1.1</td>
280 <td class="decorated">
281 <a href="http://www.linuxsampler.org/api/lscp-1.1.txt">TXT</a>,
282 <a href="http://www.linuxsampler.org/api/lscp-1.1.html">HTML</a>,
283 <a href="http://www.linuxsampler.org/api/lscp-1.1.xml">XML</a>
284 </td>
285 <td class="decorated">2006-11-25</td>
286 <td class="decorated">
287 Protocol specification old LinuxSampler release 0.4.0.
288 </td>
289 </tr>
290 <tr>
291 <td class="decorated">LSCP&nbsp;1.0</td>
292 <td class="decorated">
293 <a href="http://www.linuxsampler.org/api/lscp-1.0.txt">TXT</a>,
294 <a href="http://www.linuxsampler.org/api/lscp-1.0.html">HTML</a>,
295 <a href="http://www.linuxsampler.org/api/lscp-1.0.xml">XML</a>
296 </td>
297 <td class="decorated">2005-07-17</td>
298 <td class="decorated">
299 Protocol specification of ancient LinuxSampler release 0.3.3.
300 </td>
301 </tr>
302 </tbody>
303 </table>
304
305 <p class="default">
306 The protocol will be extended from time to time. You may look at the
307 <a href="features.html#LSCP">features</a> site to see which control
308 commands are already implemented and which are not.
309 </p>
310
311
312 <a name="example_lscp_scripts">
313 <h3>Example LSCP scripts</h3>
314 <p class="default">
315 If you don't want / can't use a GUI frontend you will probably write some LSCP scripts for
316 using with linuxsampler to setup your needed sampler session. It follows some common LSCP
317 examples to give you a good starting point for writing your own ones. Adjust it to your needs
318 and send it to the running linuxsampler application with:
319 </p>
320 <pre class="code">cat yourscript.lscp | netcat localhost 8888</pre>
321 <p class="default">
322 Optionally you can also use a graphical frontend like QSampler one time to setup a working
323 sampler session for your needs and save it. Because you have to know that the files saved
324 by our frontends are actually pure LSCP scripts, thus you can i.e. use those files simply with
325 the mentioned netcat command from above to setup the sampler session without a frontend.
326 </p>
327 <p class="default">
328 Here is a simple LSCP example which uses ALSA as MIDI input and as audio output driver as well,
329 it creates only one sampler channel using the Gigasampler engine and loads a Piano instrument
330 on that sampler channel:
331 </p>
332 <pre class="code">#enable echo mode
333 SET ECHO 1
334
335 # load the ALSA audio driver
336 # (parameter CARD is optional, I use it here to select my 2nd sound card
337 # you can use 'GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD' to get
338 # all available sound cards)
339 CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='1,0'
340
341 # load the ALSA MIDI driver
342 CREATE MIDI_INPUT_DEVICE ALSA
343
344 # connect my MIDI keyboard which has ALSA seq ID '72:0'
345 # (see 'aconnect -i' for the IDs of your MIDI devices
346 # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
347 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
348
349 # setup a sampler channel
350 ADD CHANNEL
351 LOAD ENGINE gig 0
352 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
353 SET CHANNEL MIDI_INPUT_DEVICE 0 0
354 LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
355
356 # finally show our channel setup (optional of course)
357 GET CHANNEL INFO 0
358
359 # quit connection
360 QUIT</pre>
361 <p class="default">
362 The next example uses JACK as audio output driver instead and automatically connects the two
363 output channels of LS's JACK client to the first two ALSA PCM channels, so you can hear
364 something without having to manually connect it e.g. with qjackctl:
365 </p>
366 <pre class="code">#enable echo mode
367 SET ECHO 1
368
369 # load the JACK audio driver
370 CREATE AUDIO_OUTPUT_DEVICE JACK
371
372 # connect to ALSA playback JACK client so we can hear something
373 # (you can use 'GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 0 0 JACK_BINDINGS'
374 # to get all available JACK clients / ports)
375 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
376 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
377
378 # load the ALSA MIDI driver
379 CREATE MIDI_INPUT_DEVICE ALSA
380
381 # connect my MIDI keyboard which has ALSA seq ID '72:0'
382 # (see 'aconnect -i' for the IDs of your MIDI devices
383 # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
384 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
385
386 # setup one sampler channel
387 ADD CHANNEL
388 LOAD ENGINE gig 0
389 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
390 SET CHANNEL MIDI_INPUT_DEVICE 0 0
391 LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
392
393 # finally show our channel setup (optional of course)
394 GET CHANNEL INFO 0
395
396 # quit connection
397 QUIT</pre>
398 <p class="default">
399 The next example is a bit more complex.
400 It shows how to setup a more realistic sampler session, handle routing of MIDI input channels,
401 handle routing of audio channels, it uses JACK again as audio
402 output driver, but creates the JACK client with four output channels instead, it creates two
403 sampler channels, loads two different instrument on those two sampler channels and alters
404 the audio channel routing so that the two output channels of sampler channel 1 are routed to
405 the first two JACK output channels and the two output channels of sampler channel 2 are routed
406 the second pair of the JACK client's output channels. That way you could e.g. record the output
407 of those two sampler channels independently or apply independent LADSPA effects on it.
408 </p>
409 <pre class="code"># enable echo mode
410 SET ECHO 1
411
412 # load audio and MIDI driver
413 CREATE AUDIO_OUTPUT_DEVICE JACK
414 CREATE MIDI_INPUT_DEVICE ALSA
415
416 # increase the amount of output channels of the LS"s Jack client e.g. to 4
417 SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4
418
419 # connect to MIDI keyboard
420 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS="64:0"
421
422 # set up 1st sampler channel (using default output channels, that is 0 and 1)
423 ADD CHANNEL
424 LOAD ENGINE gig 0
425 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
426 SET CHANNEL MIDI_INPUT_DEVICE 0 0
427 LOAD INSTRUMENT "/somedir/The Bosendorfer Imperial Grand Version 2.2.gig" 0 0
428 SET CHANNEL VOLUME 0 0.40
429 # by default every sampler channel / engine listens to ALL MIDI channels
430 # but for multi channel setup it makes sense to distinguish the inputs, so
431 # let sampler channel 0 listen to MIDI channel 0 (instead of ALL)
432 SET CHANNEL MIDI_INPUT_CHANNEL 0 0
433
434 # set up 2nd sampler channel (using output channels 2 and 3)
435 ADD CHANNEL
436 LOAD ENGINE gig 1
437 SET CHANNEL AUDIO_OUTPUT_DEVICE 1 0
438 SET CHANNEL MIDI_INPUT_DEVICE 1 0
439 LOAD INSTRUMENT "/home/me/Gigs/NemeSys_1GB_Grand.gig" 0 1
440 SET CHANNEL VOLUME 1 0.40
441 # let sampler channel 1 listen to MIDI channel 1 (instead of ALL)
442 SET CHANNEL MIDI_INPUT_CHANNEL 1 1
443 # this will alter the audio channel routing
444 # connect the engines output channel 0 to JACK clients output 2
445 SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 0 2
446 # connect the engines output channel 1 to JACK clients output 3
447 SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 1 3
448
449 # automatic connection between the four 4 ports of LS's Jack client and the
450 # ALSA PCM JACK client (assuming your sound card has at least 4 outputs ;-)
451 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
452 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
453 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 2 JACK_BINDINGS='alsa_pcm:playback_3'
454 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 3 JACK_BINDINGS='alsa_pcm:playback_4'
455
456 # not necessary, just to see our setup
457 GET CHANNEL INFO 0
458 GET CHANNEL INFO 1</pre>
459 <p class="default">
460 For a detailed description about LSCP read the <a href="api/draft-linuxsampler-protocol.html">LSCP reference</a>.
461 Be welcome to ask details on the mailing list.
462 </p>
463
464
465 </div>
466 </td></tr></table>
467
468 </div>
469
470 </body>
471 </html>

  ViewVC Help
Powered by ViewVC