/[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 1674 - (hide annotations) (download) (as text)
Thu Feb 7 14:10:44 2008 UTC (16 years, 2 months ago) by schoenebeck
File MIME type: text/html
File size: 19931 byte(s)
* added Debian Howto

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

  ViewVC Help
Powered by ViewVC