/[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 1242 - (hide 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 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 schoenebeck 1241 <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 senoner 542
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 schoenebeck 941 LinuxSampler! This is the protocol specification of the old
148 schoenebeck 710 official release of LinuxSampler (0.3.3):
149 senoner 542 <br>
150     </p>
151     <center>
152 schoenebeck 594 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 senoner 542 </center>
157     <p class="default">
158 schoenebeck 941 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 schoenebeck 594 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 senoner 542 </p>
174 schoenebeck 594 <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 senoner 542
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 schoenebeck 1242 <pre class="code">cat yourscript.lscp | netcat localhost 8888</pre>
201 senoner 542 </td>
202     </tr>
203     </table>
204     <p class="default">
205 schoenebeck 1242 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 senoner 542 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