/[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 1572 - (hide annotations) (download) (as text)
Fri Dec 7 01:07:11 2007 UTC (16 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 18607 byte(s)
* new LS release (0.5.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 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 iliev 1290 <h2>JSampler</h2>
141     <p class="default">
142     JSampler is an opensource, platform-independent,
143     GUI front-end for LinuxSampler, written entirely in Java.
144     Read the <a href="jsampler/manual/html/jsampler.html">JSampler manual</a>
145     for more information.
146     </p>
147    
148 schoenebeck 1377 <h2>libgig</h2>
149     <p class="default">
150     libgig is a C++ library used to load and modify Gigasampler format files.
151     If you're a developer and might want to use libgig, here is its
152     <a href="http://download.linuxsampler.org/doc/libgig/api/">API documentation</a>
153     (automatically daily updated from CVS).
154     </p>
155    
156     <h2>liblscp</h2>
157     <p class="default">
158     liblscp is C library as convenient wrapper around the <i>LinuxSampler Control Protocol</i>.
159     If you're a developer and might want to use liblscp, here is its
160     <a href="http://download.linuxsampler.org/doc/liblscp/">API documentation</a>
161     (automatically daily updated from CVS).
162     </p>
163    
164 senoner 542 <h2>LSCP Reference</h2>
165     <p class="default">
166 schoenebeck 1280 The following documents define the <i>LinuxSampler Control Protocol</i>,
167     a network protocol with which LinuxSampler can be controlled locally as well as remotely.
168 senoner 542 As this is a simple ASCII based protocol it's possible to write a frontend for LinuxSampler in
169     any programming language and GUI library. There's still a big demand especially for a Gtk and
170     ncurses based frontend, so be encouraged and let
171     <a href="http://www.linuxsampler.org/developers.html">us</a> know if you wrote a frontend for
172 schoenebeck 1280 LinuxSampler!
173 senoner 542 </p>
174 schoenebeck 1280
175     <table class="decorated">
176     <thead>
177     <tr>
178     <td class="decorated_header">Protocol Name</td>
179     <td class="decorated_header">Document Types</td>
180 schoenebeck 1434 <td class="decorated_header">Release Date</td>
181 schoenebeck 1280 <td class="decorated_header">Description</td>
182     </tr>
183     </thead>
184     <tbody>
185     <tr>
186 schoenebeck 1434 <td class="decorated">LSCP&nbsp;draft</td>
187 schoenebeck 1280 <td class="decorated">
188 schoenebeck 1434 <a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.txt">TXT</a>,
189     <a href="http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html">HTML</a>,
190     <a href="http://cvs.linuxsampler.org/cgi-bin/viewcvs.cgi/*checkout*/linuxsampler/Documentation/lscp.xml?rev=HEAD&content-type=text/xml">XML</a>
191 schoenebeck 1280 </td>
192 schoenebeck 1434 <td class="decorated">unreleased</td>
193 schoenebeck 1280 <td class="decorated">
194 schoenebeck 1434 Very latest draft of the protocol (which usually reflects the
195     latest development state from CVS or may even not be implemented
196     yet).
197 schoenebeck 1280 </td>
198     </tr>
199     <tr>
200 schoenebeck 1572 <td class="decorated">LSCP&nbsp;1.3</td>
201     <td class="decorated">
202     <a href="http://www.linuxsampler.org/api/lscp-1.3.txt">TXT</a>,
203     <a href="http://www.linuxsampler.org/api/lscp-1.3.html">HTML</a>,
204     <a href="http://www.linuxsampler.org/api/lscp-1.3.xml">XML</a>
205     </td>
206     <td class="decorated">2007-12-06</td>
207     <td class="decorated">
208     Protocol specification of the latest official release of LinuxSampler (0.5.1).
209     </td>
210     </tr>
211     <tr>
212 schoenebeck 1434 <td class="decorated">LSCP&nbsp;1.2</td>
213     <td class="decorated">
214     <a href="http://www.linuxsampler.org/api/lscp-1.2.txt">TXT</a>,
215     <a href="http://www.linuxsampler.org/api/lscp-1.2.html">HTML</a>,
216     <a href="http://www.linuxsampler.org/api/lscp-1.2.xml">XML</a>
217     </td>
218     <td class="decorated">2007-10-15</td>
219     <td class="decorated">
220 schoenebeck 1572 Protocol specification of the previous official release of LinuxSampler (0.5.0).
221 schoenebeck 1434 </td>
222     </tr>
223     <tr>
224 schoenebeck 1280 <td class="decorated">LSCP&nbsp;1.1</td>
225     <td class="decorated">
226 schoenebeck 1434 <a href="http://www.linuxsampler.org/api/lscp-1.1.txt">TXT</a>,
227 schoenebeck 1280 <a href="http://www.linuxsampler.org/api/lscp-1.1.html">HTML</a>,
228     <a href="http://www.linuxsampler.org/api/lscp-1.1.xml">XML</a>
229     </td>
230 schoenebeck 1434 <td class="decorated">2006-11-25</td>
231 schoenebeck 1280 <td class="decorated">
232 schoenebeck 1572 Protocol specification old LinuxSampler release 0.4.0.
233 schoenebeck 1280 </td>
234     </tr>
235     <tr>
236 schoenebeck 1434 <td class="decorated">LSCP&nbsp;1.0</td>
237 schoenebeck 1280 <td class="decorated">
238 schoenebeck 1434 <a href="http://www.linuxsampler.org/api/lscp-1.0.txt">TXT</a>,
239     <a href="http://www.linuxsampler.org/api/lscp-1.0.html">HTML</a>,
240     <a href="http://www.linuxsampler.org/api/lscp-1.0.xml">XML</a>
241 schoenebeck 1280 </td>
242 schoenebeck 1434 <td class="decorated">2005-07-17</td>
243 schoenebeck 1280 <td class="decorated">
244 schoenebeck 1434 Protocol specification of ancient LinuxSampler release 0.3.3.
245 schoenebeck 1280 </td>
246     </tr>
247     </tbody>
248     </table>
249    
250 senoner 542 <p class="default">
251 schoenebeck 594 The protocol will be extended from time to time. You may look at the
252     <a href="features.html#LSCP">features</a> site to see which control
253     commands are already implemented and which are not.
254     </p>
255 senoner 542
256    
257     <a name="example_lscp_scripts">
258     <h3>Example LSCP scripts</h3>
259     <p class="default">
260     If you don't want / can't use a GUI frontend you will probably write some LSCP scripts for
261     using with linuxsampler to setup your needed sampler session. It follows some common LSCP
262     examples to give you a good starting point for writing your own ones. Adjust it to your needs
263     and send it to the running linuxsampler application with:
264     </p>
265 schoenebeck 1280 <pre class="code">cat yourscript.lscp | netcat localhost 8888</pre>
266 senoner 542 <p class="default">
267 schoenebeck 1242 Optionally you can also use a graphical frontend like QSampler one time to setup a working
268     sampler session for your needs and save it. Because you have to know that the files saved
269     by our frontends are actually pure LSCP scripts, thus you can i.e. use those files simply with
270     the mentioned netcat command from above to setup the sampler session without a frontend.
271     </p>
272     <p class="default">
273 senoner 542 Here is a simple LSCP example which uses ALSA as MIDI input and as audio output driver as well,
274     it creates only one sampler channel using the Gigasampler engine and loads a Piano instrument
275     on that sampler channel:
276     </p>
277 schoenebeck 1280 <pre class="code">#enable echo mode
278 senoner 542 SET ECHO 1
279    
280     # load the ALSA audio driver
281     # (parameter CARD is optional, I use it here to select my 2nd sound card
282     # you can use 'GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD' to get
283     # all available sound cards)
284     CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='1,0'
285    
286     # load the ALSA MIDI driver
287     CREATE MIDI_INPUT_DEVICE ALSA
288    
289     # connect my MIDI keyboard which has ALSA seq ID '72:0'
290     # (see 'aconnect -i' for the IDs of your MIDI devices
291     # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
292     SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
293    
294     # setup a sampler channel
295     ADD CHANNEL
296     LOAD ENGINE gig 0
297     SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
298     SET CHANNEL MIDI_INPUT_DEVICE 0 0
299     LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
300    
301     # finally show our channel setup (optional of course)
302     GET CHANNEL INFO 0
303    
304     # quit connection
305     QUIT</pre>
306     <p class="default">
307     The next example uses JACK as audio output driver instead and automatically connects the two
308     output channels of LS's JACK client to the first two ALSA PCM channels, so you can hear
309     something without having to manually connect it e.g. with qjackctl:
310     </p>
311 schoenebeck 1280 <pre class="code">#enable echo mode
312 senoner 542 SET ECHO 1
313    
314     # load the JACK audio driver
315     CREATE AUDIO_OUTPUT_DEVICE JACK
316    
317     # connect to ALSA playback JACK client so we can hear something
318     # (you can use 'GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 0 0 JACK_BINDINGS'
319     # to get all available JACK clients / ports)
320     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
321     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
322    
323     # load the ALSA MIDI driver
324     CREATE MIDI_INPUT_DEVICE ALSA
325    
326     # connect my MIDI keyboard which has ALSA seq ID '72:0'
327     # (see 'aconnect -i' for the IDs of your MIDI devices
328     # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
329     SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
330    
331     # setup one sampler channel
332     ADD CHANNEL
333     LOAD ENGINE gig 0
334     SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
335     SET CHANNEL MIDI_INPUT_DEVICE 0 0
336     LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
337    
338     # finally show our channel setup (optional of course)
339     GET CHANNEL INFO 0
340    
341     # quit connection
342     QUIT</pre>
343     <p class="default">
344     The next example is a bit more complex.
345     It shows how to setup a more realistic sampler session, handle routing of MIDI input channels,
346     handle routing of audio channels, it uses JACK again as audio
347     output driver, but creates the JACK client with four output channels instead, it creates two
348     sampler channels, loads two different instrument on those two sampler channels and alters
349     the audio channel routing so that the two output channels of sampler channel 1 are routed to
350     the first two JACK output channels and the two output channels of sampler channel 2 are routed
351     the second pair of the JACK client's output channels. That way you could e.g. record the output
352     of those two sampler channels independently or apply independent LADSPA effects on it.
353     </p>
354 schoenebeck 1280 <pre class="code"># enable echo mode
355 senoner 542 SET ECHO 1
356    
357     # load audio and MIDI driver
358     CREATE AUDIO_OUTPUT_DEVICE JACK
359     CREATE MIDI_INPUT_DEVICE ALSA
360    
361     # increase the amount of output channels of the LS"s Jack client e.g. to 4
362     SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4
363    
364     # connect to MIDI keyboard
365     SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS="64:0"
366    
367     # set up 1st sampler channel (using default output channels, that is 0 and 1)
368     ADD CHANNEL
369     LOAD ENGINE gig 0
370     SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
371     SET CHANNEL MIDI_INPUT_DEVICE 0 0
372     LOAD INSTRUMENT "/somedir/The Bosendorfer Imperial Grand Version 2.2.gig" 0 0
373     SET CHANNEL VOLUME 0 0.40
374     # by default every sampler channel / engine listens to ALL MIDI channels
375     # but for multi channel setup it makes sense to distinguish the inputs, so
376     # let sampler channel 0 listen to MIDI channel 0 (instead of ALL)
377     SET CHANNEL MIDI_INPUT_CHANNEL 0 0
378    
379     # set up 2nd sampler channel (using output channels 2 and 3)
380     ADD CHANNEL
381     LOAD ENGINE gig 1
382     SET CHANNEL AUDIO_OUTPUT_DEVICE 1 0
383     SET CHANNEL MIDI_INPUT_DEVICE 1 0
384     LOAD INSTRUMENT "/home/me/Gigs/NemeSys_1GB_Grand.gig" 0 1
385     SET CHANNEL VOLUME 1 0.40
386     # let sampler channel 1 listen to MIDI channel 1 (instead of ALL)
387     SET CHANNEL MIDI_INPUT_CHANNEL 1 1
388     # this will alter the audio channel routing
389     # connect the engines output channel 0 to JACK clients output 2
390     SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 0 2
391     # connect the engines output channel 1 to JACK clients output 3
392     SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 1 3
393    
394     # automatic connection between the four 4 ports of LS's Jack client and the
395     # ALSA PCM JACK client (assuming your sound card has at least 4 outputs ;-)
396     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
397     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
398     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 2 JACK_BINDINGS='alsa_pcm:playback_3'
399     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 3 JACK_BINDINGS='alsa_pcm:playback_4'
400    
401     # not necessary, just to see our setup
402     GET CHANNEL INFO 0
403     GET CHANNEL INFO 1</pre>
404     <p class="default">
405     For a detailed description about LSCP read the <a href="api/draft-linuxsampler-protocol.html">LSCP reference</a>.
406     Be welcome to ask details on the mailing list.
407     </p>
408    
409    
410     </div>
411     </td></tr></table>
412    
413     </div>
414    
415     </body>
416     </html>

  ViewVC Help
Powered by ViewVC