/[svn]/web/trunk/www.linuxsampler.org/documentation.html
ViewVC logotype

Annotation of /web/trunk/www.linuxsampler.org/documentation.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 941 - (hide annotations) (download) (as text)
Sat Nov 25 17:32:17 2006 UTC (17 years, 5 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 senoner 542 <!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 schoenebeck 941 LinuxSampler! This is the protocol specification of the old
139 schoenebeck 710 official release of LinuxSampler (0.3.3):
140 senoner 542 <br>
141     </p>
142     <center>
143 schoenebeck 594 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 senoner 542 </center>
148     <p class="default">
149 schoenebeck 941 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 schoenebeck 594 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 senoner 542 </p>
165 schoenebeck 594 <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 senoner 542
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