/[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 1242 - (show annotations) (download) (as text)
Sat Jun 16 16:26:32 2007 UTC (16 years, 10 months ago) by schoenebeck
File MIME type: text/html
File size: 16622 byte(s)
- removed the "-t" switch from the "netcat" command line example
- added a tip, that the files stored by our frontends are LSCP scripts

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

  ViewVC Help
Powered by ViewVC