/[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 1241 - (show annotations) (download) (as text)
Sat Jun 16 16:15:03 2007 UTC (16 years, 9 months ago) by schoenebeck
File MIME type: text/html
File size: 16217 byte(s)
- added link to the auto generated quickstart tutorial of gigedit

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 -t localhost 8888</pre>
201 </td>
202 </tr>
203 </table>
204 <p class="default">
205 Here is a simple LSCP example which uses ALSA as MIDI input and as audio output driver as well,
206 it creates only one sampler channel using the Gigasampler engine and loads a Piano instrument
207 on that sampler channel:
208 </p>
209 <table class="default" border="0" cellpadding="1" cellspacing="5">
210 <tr>
211 <td><pre class="code">1
212 2
213 3
214 4
215 5
216 6
217 7
218 8
219 9
220 10
221 11
222 12
223 13
224 14
225 15
226 16
227 17
228 18
229 19
230 20
231 21
232 22
233 23
234 24
235 25
236 26
237 27
238 28
239 29</pre>
240 </td>
241 <td width="100%">
242 <pre class="code">#enable echo mode
243 SET ECHO 1
244
245 # load the ALSA audio driver
246 # (parameter CARD is optional, I use it here to select my 2nd sound card
247 # you can use 'GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD' to get
248 # all available sound cards)
249 CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='1,0'
250
251 # load the ALSA MIDI driver
252 CREATE MIDI_INPUT_DEVICE ALSA
253
254 # connect my MIDI keyboard which has ALSA seq ID '72:0'
255 # (see 'aconnect -i' for the IDs of your MIDI devices
256 # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
257 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
258
259 # setup a sampler channel
260 ADD CHANNEL
261 LOAD ENGINE gig 0
262 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
263 SET CHANNEL MIDI_INPUT_DEVICE 0 0
264 LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
265
266 # finally show our channel setup (optional of course)
267 GET CHANNEL INFO 0
268
269 # quit connection
270 QUIT</pre>
271 </td>
272 </tr>
273 </table>
274 <p class="default">
275 The next example uses JACK as audio output driver instead and automatically connects the two
276 output channels of LS's JACK client to the first two ALSA PCM channels, so you can hear
277 something without having to manually connect it e.g. with qjackctl:
278 </p>
279 <table class="default" border="0" cellpadding="1" cellspacing="5">
280 <tr>
281 <td><pre class="code">1
282 2
283 3
284 4
285 5
286 6
287 7
288 8
289 9
290 10
291 11
292 12
293 13
294 14
295 15
296 16
297 17
298 18
299 19
300 20
301 21
302 22
303 23
304 24
305 25
306 26
307 27
308 28
309 29
310 30
311 31
312 32</pre>
313 </td>
314 <td width="100%">
315 <pre class="code">#enable echo mode
316 SET ECHO 1
317
318 # load the JACK audio driver
319 CREATE AUDIO_OUTPUT_DEVICE JACK
320
321 # connect to ALSA playback JACK client so we can hear something
322 # (you can use 'GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 0 0 JACK_BINDINGS'
323 # to get all available JACK clients / ports)
324 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
325 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
326
327 # load the ALSA MIDI driver
328 CREATE MIDI_INPUT_DEVICE ALSA
329
330 # connect my MIDI keyboard which has ALSA seq ID '72:0'
331 # (see 'aconnect -i' for the IDs of your MIDI devices
332 # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
333 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
334
335 # setup one sampler channel
336 ADD CHANNEL
337 LOAD ENGINE gig 0
338 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
339 SET CHANNEL MIDI_INPUT_DEVICE 0 0
340 LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
341
342 # finally show our channel setup (optional of course)
343 GET CHANNEL INFO 0
344
345 # quit connection
346 QUIT</pre>
347 </td>
348 </tr>
349 </table>
350 <p class="default">
351 The next example is a bit more complex.
352 It shows how to setup a more realistic sampler session, handle routing of MIDI input channels,
353 handle routing of audio channels, it uses JACK again as audio
354 output driver, but creates the JACK client with four output channels instead, it creates two
355 sampler channels, loads two different instrument on those two sampler channels and alters
356 the audio channel routing so that the two output channels of sampler channel 1 are routed to
357 the first two JACK output channels and the two output channels of sampler channel 2 are routed
358 the second pair of the JACK client's output channels. That way you could e.g. record the output
359 of those two sampler channels independently or apply independent LADSPA effects on it.
360 </p>
361 <table class="default" border="0" cellpadding="1" cellspacing="5">
362 <tr>
363 <td><pre class="code">1
364 2
365 3
366 4
367 5
368 6
369 7
370 8
371 9
372 10
373 11
374 12
375 13
376 14
377 15
378 16
379 17
380 18
381 19
382 20
383 21
384 22
385 23
386 24
387 25
388 26
389 27
390 28
391 29
392 30
393 31
394 32
395 33
396 34
397 35
398 36
399 37
400 38
401 39
402 40
403 41
404 42
405 43
406 44
407 45
408 46
409 47
410 48
411 49
412 50</pre>
413 </td>
414 <td width="100%">
415 <pre class="code"># enable echo mode
416 SET ECHO 1
417
418 # load audio and MIDI driver
419 CREATE AUDIO_OUTPUT_DEVICE JACK
420 CREATE MIDI_INPUT_DEVICE ALSA
421
422 # increase the amount of output channels of the LS"s Jack client e.g. to 4
423 SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4
424
425 # connect to MIDI keyboard
426 SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS="64:0"
427
428 # set up 1st sampler channel (using default output channels, that is 0 and 1)
429 ADD CHANNEL
430 LOAD ENGINE gig 0
431 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
432 SET CHANNEL MIDI_INPUT_DEVICE 0 0
433 LOAD INSTRUMENT "/somedir/The Bosendorfer Imperial Grand Version 2.2.gig" 0 0
434 SET CHANNEL VOLUME 0 0.40
435 # by default every sampler channel / engine listens to ALL MIDI channels
436 # but for multi channel setup it makes sense to distinguish the inputs, so
437 # let sampler channel 0 listen to MIDI channel 0 (instead of ALL)
438 SET CHANNEL MIDI_INPUT_CHANNEL 0 0
439
440 # set up 2nd sampler channel (using output channels 2 and 3)
441 ADD CHANNEL
442 LOAD ENGINE gig 1
443 SET CHANNEL AUDIO_OUTPUT_DEVICE 1 0
444 SET CHANNEL MIDI_INPUT_DEVICE 1 0
445 LOAD INSTRUMENT "/home/me/Gigs/NemeSys_1GB_Grand.gig" 0 1
446 SET CHANNEL VOLUME 1 0.40
447 # let sampler channel 1 listen to MIDI channel 1 (instead of ALL)
448 SET CHANNEL MIDI_INPUT_CHANNEL 1 1
449 # this will alter the audio channel routing
450 # connect the engines output channel 0 to JACK clients output 2
451 SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 0 2
452 # connect the engines output channel 1 to JACK clients output 3
453 SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 1 3
454
455 # automatic connection between the four 4 ports of LS's Jack client and the
456 # ALSA PCM JACK client (assuming your sound card has at least 4 outputs ;-)
457 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
458 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
459 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 2 JACK_BINDINGS='alsa_pcm:playback_3'
460 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 3 JACK_BINDINGS='alsa_pcm:playback_4'
461
462 # not necessary, just to see our setup
463 GET CHANNEL INFO 0
464 GET CHANNEL INFO 1</pre>
465 </td>
466 </tr>
467 </table>
468 <p class="default">
469 For a detailed description about LSCP read the <a href="api/draft-linuxsampler-protocol.html">LSCP reference</a>.
470 Be welcome to ask details on the mailing list.
471 </p>
472
473
474 </div>
475 </td></tr></table>
476
477 </div>
478
479 </body>
480 </html>

  ViewVC Help
Powered by ViewVC