/[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 941 - (show annotations) (download) (as text)
Sat Nov 25 17:32:17 2006 UTC (13 years, 10 months ago) by schoenebeck
File MIME type: text/html
File size: 15656 byte(s)
updated documentation site for the new official
LSCP release (v1.1)

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
130
131 <h2>LSCP Reference</h2>
132 <p class="default">
133 The following document defines the network protocol with which LinuxSampler can be controlled.
134 As this is a simple ASCII based protocol it's possible to write a frontend for LinuxSampler in
135 any programming language and GUI library. There's still a big demand especially for a Gtk and
136 ncurses based frontend, so be encouraged and let
137 <a href="http://www.linuxsampler.org/developers.html">us</a> know if you wrote a frontend for
138 LinuxSampler! This is the protocol specification of the old
139 official release of LinuxSampler (0.3.3):
140 <br>
141 </p>
142 <center>
143 LinuxSampler Control Protocol v1.0
144 (<a href="http://www.linuxsampler.org/api/lscp-1.0.txt">ASCII</a>,
145 <a href="http://www.linuxsampler.org/api/lscp-1.0.html">HTML</a>,
146 <a href="http://www.linuxsampler.org/api/lscp-1.0.xml">XML</a>)
147 </center>
148 <p class="default">
149 This is the protocol specification of the latest
150 official release of LinuxSampler (0.4.0):
151 <br>
152 </p>
153 <center>
154 LinuxSampler Control Protocol v1.1
155 (<a href="http://www.linuxsampler.org/api/lscp-1.1.txt">ASCII</a>,
156 <a href="http://www.linuxsampler.org/api/lscp-1.1.html">HTML</a>,
157 <a href="http://www.linuxsampler.org/api/lscp-1.1.xml">XML</a>)
158 </center>
159 <p class="default">
160 The following is the very latest draft of the protocol (which
161 usually reflects the latest development state from CVS or may
162 even not be implemented yet):
163 <br>
164 </p>
165 <center>
166 LinuxSampler Control Protocol Draft
167 (<a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.txt">ASCII</a>,
168 <a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html">HTML</a>,
169 <a href="http://cvs.linuxsampler.org/cgi-bin/viewcvs.cgi/*checkout*/linuxsampler/Documentation/lscp.xml?rev=HEAD&content-type=text/xml">XML</a>)
170 </center>
171 <p class="default">
172 The protocol will be extended from time to time. You may look at the
173 <a href="features.html#LSCP">features</a> site to see which control
174 commands are already implemented and which are not.
175 </p>
176
177
178 <a name="example_lscp_scripts">
179 <h3>Example LSCP scripts</h3>
180 <p class="default">
181 If you don't want / can't use a GUI frontend you will probably write some LSCP scripts for
182 using with linuxsampler to setup your needed sampler session. It follows some common LSCP
183 examples to give you a good starting point for writing your own ones. Adjust it to your needs
184 and send it to the running linuxsampler application with:
185 </p>
186 <table class="default" border="0" cellpadding="1" cellspacing="5">
187 <tr>
188 <td><pre class="code">1</pre>
189 </td>
190 <td width="100%">
191 <pre class="code">cat yourscript.lscp | netcat -t localhost 8888</pre>
192 </td>
193 </tr>
194 </table>
195 <p class="default">
196 Here is a simple LSCP example which uses ALSA as MIDI input and as audio output driver as well,
197 it creates only one sampler channel using the Gigasampler engine and loads a Piano instrument
198 on that sampler channel:
199 </p>
200 <table class="default" border="0" cellpadding="1" cellspacing="5">
201 <tr>
202 <td><pre class="code">1
203 2
204 3
205 4
206 5
207 6
208 7
209 8
210 9
211 10
212 11
213 12
214 13
215 14
216 15
217 16
218 17
219 18
220 19
221 20
222 21
223 22
224 23
225 24
226 25
227 26
228 27
229 28
230 29</pre>
231 </td>
232 <td width="100%">
233 <pre class="code">#enable echo mode
234 SET ECHO 1
235
236 # load the ALSA audio driver
237 # (parameter CARD is optional, I use it here to select my 2nd sound card
238 # you can use 'GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD' to get
239 # all available sound cards)
240 CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='1,0'
241
242 # load the ALSA MIDI driver
243 CREATE MIDI_INPUT_DEVICE ALSA
244
245 # connect my MIDI keyboard which has ALSA seq ID '72:0'
246 # (see 'aconnect -i' for the IDs of your MIDI devices
247 # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
248 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
249
250 # setup a sampler channel
251 ADD CHANNEL
252 LOAD ENGINE gig 0
253 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
254 SET CHANNEL MIDI_INPUT_DEVICE 0 0
255 LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
256
257 # finally show our channel setup (optional of course)
258 GET CHANNEL INFO 0
259
260 # quit connection
261 QUIT</pre>
262 </td>
263 </tr>
264 </table>
265 <p class="default">
266 The next example uses JACK as audio output driver instead and automatically connects the two
267 output channels of LS's JACK client to the first two ALSA PCM channels, so you can hear
268 something without having to manually connect it e.g. with qjackctl:
269 </p>
270 <table class="default" border="0" cellpadding="1" cellspacing="5">
271 <tr>
272 <td><pre class="code">1
273 2
274 3
275 4
276 5
277 6
278 7
279 8
280 9
281 10
282 11
283 12
284 13
285 14
286 15
287 16
288 17
289 18
290 19
291 20
292 21
293 22
294 23
295 24
296 25
297 26
298 27
299 28
300 29
301 30
302 31
303 32</pre>
304 </td>
305 <td width="100%">
306 <pre class="code">#enable echo mode
307 SET ECHO 1
308
309 # load the JACK audio driver
310 CREATE AUDIO_OUTPUT_DEVICE JACK
311
312 # connect to ALSA playback JACK client so we can hear something
313 # (you can use 'GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 0 0 JACK_BINDINGS'
314 # to get all available JACK clients / ports)
315 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
316 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
317
318 # load the ALSA MIDI driver
319 CREATE MIDI_INPUT_DEVICE ALSA
320
321 # connect my MIDI keyboard which has ALSA seq ID '72:0'
322 # (see 'aconnect -i' for the IDs of your MIDI devices
323 # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
324 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
325
326 # setup one sampler channel
327 ADD CHANNEL
328 LOAD ENGINE gig 0
329 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
330 SET CHANNEL MIDI_INPUT_DEVICE 0 0
331 LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
332
333 # finally show our channel setup (optional of course)
334 GET CHANNEL INFO 0
335
336 # quit connection
337 QUIT</pre>
338 </td>
339 </tr>
340 </table>
341 <p class="default">
342 The next example is a bit more complex.
343 It shows how to setup a more realistic sampler session, handle routing of MIDI input channels,
344 handle routing of audio channels, it uses JACK again as audio
345 output driver, but creates the JACK client with four output channels instead, it creates two
346 sampler channels, loads two different instrument on those two sampler channels and alters
347 the audio channel routing so that the two output channels of sampler channel 1 are routed to
348 the first two JACK output channels and the two output channels of sampler channel 2 are routed
349 the second pair of the JACK client's output channels. That way you could e.g. record the output
350 of those two sampler channels independently or apply independent LADSPA effects on it.
351 </p>
352 <table class="default" border="0" cellpadding="1" cellspacing="5">
353 <tr>
354 <td><pre class="code">1
355 2
356 3
357 4
358 5
359 6
360 7
361 8
362 9
363 10
364 11
365 12
366 13
367 14
368 15
369 16
370 17
371 18
372 19
373 20
374 21
375 22
376 23
377 24
378 25
379 26
380 27
381 28
382 29
383 30
384 31
385 32
386 33
387 34
388 35
389 36
390 37
391 38
392 39
393 40
394 41
395 42
396 43
397 44
398 45
399 46
400 47
401 48
402 49
403 50</pre>
404 </td>
405 <td width="100%">
406 <pre class="code"># enable echo mode
407 SET ECHO 1
408
409 # load audio and MIDI driver
410 CREATE AUDIO_OUTPUT_DEVICE JACK
411 CREATE MIDI_INPUT_DEVICE ALSA
412
413 # increase the amount of output channels of the LS"s Jack client e.g. to 4
414 SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4
415
416 # connect to MIDI keyboard
417 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS="64:0"
418
419 # set up 1st sampler channel (using default output channels, that is 0 and 1)
420 ADD CHANNEL
421 LOAD ENGINE gig 0
422 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
423 SET CHANNEL MIDI_INPUT_DEVICE 0 0
424 LOAD INSTRUMENT "/somedir/The Bosendorfer Imperial Grand Version 2.2.gig" 0 0
425 SET CHANNEL VOLUME 0 0.40
426 # by default every sampler channel / engine listens to ALL MIDI channels
427 # but for multi channel setup it makes sense to distinguish the inputs, so
428 # let sampler channel 0 listen to MIDI channel 0 (instead of ALL)
429 SET CHANNEL MIDI_INPUT_CHANNEL 0 0
430
431 # set up 2nd sampler channel (using output channels 2 and 3)
432 ADD CHANNEL
433 LOAD ENGINE gig 1
434 SET CHANNEL AUDIO_OUTPUT_DEVICE 1 0
435 SET CHANNEL MIDI_INPUT_DEVICE 1 0
436 LOAD INSTRUMENT "/home/me/Gigs/NemeSys_1GB_Grand.gig" 0 1
437 SET CHANNEL VOLUME 1 0.40
438 # let sampler channel 1 listen to MIDI channel 1 (instead of ALL)
439 SET CHANNEL MIDI_INPUT_CHANNEL 1 1
440 # this will alter the audio channel routing
441 # connect the engines output channel 0 to JACK clients output 2
442 SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 0 2
443 # connect the engines output channel 1 to JACK clients output 3
444 SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 1 3
445
446 # automatic connection between the four 4 ports of LS's Jack client and the
447 # ALSA PCM JACK client (assuming your sound card has at least 4 outputs ;-)
448 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
449 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
450 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 2 JACK_BINDINGS='alsa_pcm:playback_3'
451 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 3 JACK_BINDINGS='alsa_pcm:playback_4'
452
453 # not necessary, just to see our setup
454 GET CHANNEL INFO 0
455 GET CHANNEL INFO 1</pre>
456 </td>
457 </tr>
458 </table>
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