/[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 1241 - (hide annotations) (download) (as text)
Sat Jun 16 16:15:03 2007 UTC (16 years, 10 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 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     <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