/[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 1780 - (show annotations) (download) (as text)
Sun Sep 28 21:55:42 2008 UTC (11 years, 9 months ago) by iliev
File MIME type: text/html
File size: 20531 byte(s)
- updated documentation

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 </tbody>
171 </table>
172
173 <h2>gigedit</h2>
174 <p class="default">
175 This is our graphical instrument editor based on the Gtk toolkit.
176 It can be used stand-alone or in conjunction with LinuxSampler.
177 Read the <a href="http://download.linuxsampler.org/doc/gigedit/quickstart/gigedit_quickstart.html">Gigedit Quickstart</a>
178 for a short tutorial. Please notice that this quickstart document
179 is automatically generated from CVS and thus might reflect
180 features and behaviors only available in the very latest, bleeding
181 edge development version of gigedit from CVS.
182 </p>
183
184 <h2><a name="jsampler">JSampler</a></h2>
185 <p class="default">
186 JSampler is an opensource, platform-independent,
187 GUI front-end for LinuxSampler, written entirely in Java.
188 Read the <a href="jsampler/manual/html/jsampler.html">JSampler manual</a>
189 for more information.<br>
190 For information about using Fantasia with Miditzer in Puppy Linux VTPO
191 read this <a href="http://organs.110mb.com/Fantasia.htm" target="_blank">HOWTO</a>.
192 </p>
193
194 <h2>libgig</h2>
195 <p class="default">
196 libgig is a C++ library used to load and modify Gigasampler format files.
197 If you're a developer and might want to use libgig, here is its
198 <a href="http://download.linuxsampler.org/doc/libgig/api/">API documentation</a>
199 (automatically daily updated from CVS).
200 </p>
201
202 <a name="lscp_spec"></a>
203 <a name="lscp_specs"></a>
204 <h2>liblscp</h2>
205 <p class="default">
206 liblscp is C library as convenient wrapper around the <i>LinuxSampler Control Protocol</i>.
207 If you're a developer and might want to use liblscp, here is its
208 <a href="http://download.linuxsampler.org/doc/liblscp/">API documentation</a>
209 (automatically daily updated from CVS).
210 </p>
211
212 <h2>LSCP Reference</h2>
213 <p class="default">
214 The following documents define the <i>LinuxSampler Control Protocol</i>,
215 a network protocol with which LinuxSampler can be controlled locally as well as remotely.
216 As this is a simple ASCII based protocol it's possible to write a frontend for LinuxSampler in
217 any programming language and GUI library. There's still a big demand especially for a Gtk and
218 ncurses based frontend, so be encouraged and let
219 <a href="http://www.linuxsampler.org/developers.html">us</a> know if you wrote a frontend for
220 LinuxSampler!
221 </p>
222
223 <table class="decorated">
224 <thead>
225 <tr>
226 <td class="decorated_header">Protocol Name</td>
227 <td class="decorated_header">Document Types</td>
228 <td class="decorated_header">Release Date</td>
229 <td class="decorated_header">Description</td>
230 </tr>
231 </thead>
232 <tbody>
233 <tr>
234 <td class="decorated">LSCP&nbsp;draft</td>
235 <td class="decorated">
236 <a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.txt">TXT</a>,
237 <a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html">HTML</a>,
238 <a href="http://cvs.linuxsampler.org/cgi-bin/viewcvs.cgi/*checkout*/linuxsampler/Documentation/lscp.xml?rev=HEAD&content-type=text/xml">XML</a>
239 </td>
240 <td class="decorated">unreleased</td>
241 <td class="decorated">
242 Very latest draft of the protocol (which usually reflects the
243 latest development state from CVS or may even not be implemented
244 yet).
245 </td>
246 </tr>
247 <tr>
248 <td class="decorated">LSCP&nbsp;1.3</td>
249 <td class="decorated">
250 <a href="http://www.linuxsampler.org/api/lscp-1.3.txt">TXT</a>,
251 <a href="http://www.linuxsampler.org/api/lscp-1.3.html">HTML</a>,
252 <a href="http://www.linuxsampler.org/api/lscp-1.3.xml">XML</a>
253 </td>
254 <td class="decorated">2007-12-06</td>
255 <td class="decorated">
256 Protocol specification of the latest official release of LinuxSampler (0.5.1).
257 </td>
258 </tr>
259 <tr>
260 <td class="decorated">LSCP&nbsp;1.2</td>
261 <td class="decorated">
262 <a href="http://www.linuxsampler.org/api/lscp-1.2.txt">TXT</a>,
263 <a href="http://www.linuxsampler.org/api/lscp-1.2.html">HTML</a>,
264 <a href="http://www.linuxsampler.org/api/lscp-1.2.xml">XML</a>
265 </td>
266 <td class="decorated">2007-10-15</td>
267 <td class="decorated">
268 Protocol specification of the previous official release of LinuxSampler (0.5.0).
269 </td>
270 </tr>
271 <tr>
272 <td class="decorated">LSCP&nbsp;1.1</td>
273 <td class="decorated">
274 <a href="http://www.linuxsampler.org/api/lscp-1.1.txt">TXT</a>,
275 <a href="http://www.linuxsampler.org/api/lscp-1.1.html">HTML</a>,
276 <a href="http://www.linuxsampler.org/api/lscp-1.1.xml">XML</a>
277 </td>
278 <td class="decorated">2006-11-25</td>
279 <td class="decorated">
280 Protocol specification old LinuxSampler release 0.4.0.
281 </td>
282 </tr>
283 <tr>
284 <td class="decorated">LSCP&nbsp;1.0</td>
285 <td class="decorated">
286 <a href="http://www.linuxsampler.org/api/lscp-1.0.txt">TXT</a>,
287 <a href="http://www.linuxsampler.org/api/lscp-1.0.html">HTML</a>,
288 <a href="http://www.linuxsampler.org/api/lscp-1.0.xml">XML</a>
289 </td>
290 <td class="decorated">2005-07-17</td>
291 <td class="decorated">
292 Protocol specification of ancient LinuxSampler release 0.3.3.
293 </td>
294 </tr>
295 </tbody>
296 </table>
297
298 <p class="default">
299 The protocol will be extended from time to time. You may look at the
300 <a href="features.html#LSCP">features</a> site to see which control
301 commands are already implemented and which are not.
302 </p>
303
304
305 <a name="example_lscp_scripts">
306 <h3>Example LSCP scripts</h3>
307 <p class="default">
308 If you don't want / can't use a GUI frontend you will probably write some LSCP scripts for
309 using with linuxsampler to setup your needed sampler session. It follows some common LSCP
310 examples to give you a good starting point for writing your own ones. Adjust it to your needs
311 and send it to the running linuxsampler application with:
312 </p>
313 <pre class="code">cat yourscript.lscp | netcat localhost 8888</pre>
314 <p class="default">
315 Optionally you can also use a graphical frontend like QSampler one time to setup a working
316 sampler session for your needs and save it. Because you have to know that the files saved
317 by our frontends are actually pure LSCP scripts, thus you can i.e. use those files simply with
318 the mentioned netcat command from above to setup the sampler session without a frontend.
319 </p>
320 <p class="default">
321 Here is a simple LSCP example which uses ALSA as MIDI input and as audio output driver as well,
322 it creates only one sampler channel using the Gigasampler engine and loads a Piano instrument
323 on that sampler channel:
324 </p>
325 <pre class="code">#enable echo mode
326 SET ECHO 1
327
328 # load the ALSA audio driver
329 # (parameter CARD is optional, I use it here to select my 2nd sound card
330 # you can use 'GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD' to get
331 # all available sound cards)
332 CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='1,0'
333
334 # load the ALSA MIDI driver
335 CREATE MIDI_INPUT_DEVICE ALSA
336
337 # connect my MIDI keyboard which has ALSA seq ID '72:0'
338 # (see 'aconnect -i' for the IDs of your MIDI devices
339 # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
340 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
341
342 # setup a sampler channel
343 ADD CHANNEL
344 LOAD ENGINE gig 0
345 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
346 SET CHANNEL MIDI_INPUT_DEVICE 0 0
347 LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
348
349 # finally show our channel setup (optional of course)
350 GET CHANNEL INFO 0
351
352 # quit connection
353 QUIT</pre>
354 <p class="default">
355 The next example uses JACK as audio output driver instead and automatically connects the two
356 output channels of LS's JACK client to the first two ALSA PCM channels, so you can hear
357 something without having to manually connect it e.g. with qjackctl:
358 </p>
359 <pre class="code">#enable echo mode
360 SET ECHO 1
361
362 # load the JACK audio driver
363 CREATE AUDIO_OUTPUT_DEVICE JACK
364
365 # connect to ALSA playback JACK client so we can hear something
366 # (you can use 'GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 0 0 JACK_BINDINGS'
367 # to get all available JACK clients / ports)
368 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
369 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
370
371 # load the ALSA MIDI driver
372 CREATE MIDI_INPUT_DEVICE ALSA
373
374 # connect my MIDI keyboard which has ALSA seq ID '72:0'
375 # (see 'aconnect -i' for the IDs of your MIDI devices
376 # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
377 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
378
379 # setup one sampler channel
380 ADD CHANNEL
381 LOAD ENGINE gig 0
382 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
383 SET CHANNEL MIDI_INPUT_DEVICE 0 0
384 LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
385
386 # finally show our channel setup (optional of course)
387 GET CHANNEL INFO 0
388
389 # quit connection
390 QUIT</pre>
391 <p class="default">
392 The next example is a bit more complex.
393 It shows how to setup a more realistic sampler session, handle routing of MIDI input channels,
394 handle routing of audio channels, it uses JACK again as audio
395 output driver, but creates the JACK client with four output channels instead, it creates two
396 sampler channels, loads two different instrument on those two sampler channels and alters
397 the audio channel routing so that the two output channels of sampler channel 1 are routed to
398 the first two JACK output channels and the two output channels of sampler channel 2 are routed
399 the second pair of the JACK client's output channels. That way you could e.g. record the output
400 of those two sampler channels independently or apply independent LADSPA effects on it.
401 </p>
402 <pre class="code"># enable echo mode
403 SET ECHO 1
404
405 # load audio and MIDI driver
406 CREATE AUDIO_OUTPUT_DEVICE JACK
407 CREATE MIDI_INPUT_DEVICE ALSA
408
409 # increase the amount of output channels of the LS"s Jack client e.g. to 4
410 SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4
411
412 # connect to MIDI keyboard
413 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS="64:0"
414
415 # set up 1st sampler channel (using default output channels, that is 0 and 1)
416 ADD CHANNEL
417 LOAD ENGINE gig 0
418 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
419 SET CHANNEL MIDI_INPUT_DEVICE 0 0
420 LOAD INSTRUMENT "/somedir/The Bosendorfer Imperial Grand Version 2.2.gig" 0 0
421 SET CHANNEL VOLUME 0 0.40
422 # by default every sampler channel / engine listens to ALL MIDI channels
423 # but for multi channel setup it makes sense to distinguish the inputs, so
424 # let sampler channel 0 listen to MIDI channel 0 (instead of ALL)
425 SET CHANNEL MIDI_INPUT_CHANNEL 0 0
426
427 # set up 2nd sampler channel (using output channels 2 and 3)
428 ADD CHANNEL
429 LOAD ENGINE gig 1
430 SET CHANNEL AUDIO_OUTPUT_DEVICE 1 0
431 SET CHANNEL MIDI_INPUT_DEVICE 1 0
432 LOAD INSTRUMENT "/home/me/Gigs/NemeSys_1GB_Grand.gig" 0 1
433 SET CHANNEL VOLUME 1 0.40
434 # let sampler channel 1 listen to MIDI channel 1 (instead of ALL)
435 SET CHANNEL MIDI_INPUT_CHANNEL 1 1
436 # this will alter the audio channel routing
437 # connect the engines output channel 0 to JACK clients output 2
438 SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 0 2
439 # connect the engines output channel 1 to JACK clients output 3
440 SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 1 3
441
442 # automatic connection between the four 4 ports of LS's Jack client and the
443 # ALSA PCM JACK client (assuming your sound card has at least 4 outputs ;-)
444 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
445 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
446 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 2 JACK_BINDINGS='alsa_pcm:playback_3'
447 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 3 JACK_BINDINGS='alsa_pcm:playback_4'
448
449 # not necessary, just to see our setup
450 GET CHANNEL INFO 0
451 GET CHANNEL INFO 1</pre>
452 <p class="default">
453 For a detailed description about LSCP read the <a href="api/draft-linuxsampler-protocol.html">LSCP reference</a>.
454 Be welcome to ask details on the mailing list.
455 </p>
456
457
458 </div>
459 </td></tr></table>
460
461 </div>
462
463 </body>
464 </html>

  ViewVC Help
Powered by ViewVC