/[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 1576 - (hide annotations) (download) (as text)
Fri Dec 7 08:14:05 2007 UTC (16 years, 3 months ago) by schoenebeck
File MIME type: text/html
File size: 18889 byte(s)
* new release wave (the first one for win32)

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

  ViewVC Help
Powered by ViewVC