/[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 1674 - (show annotations) (download) (as text)
Thu Feb 7 14:10:44 2008 UTC (16 years, 2 months ago) by schoenebeck
File MIME type: text/html
File size: 19931 byte(s)
* added Debian Howto

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

  ViewVC Help
Powered by ViewVC