/[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 1434 - (hide annotations) (download) (as text)
Mon Oct 15 12:52:45 2007 UTC (16 years, 5 months ago) by schoenebeck
File MIME type: text/html
File size: 18063 byte(s)
* updated downloads site (new LS release 0.5.0 and new
  libgig release 3.2.0)
* updated documentation site (new LSCP spec release 1.2)

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 1434 <td class="decorated">LSCP&nbsp;1.2</td>
201     <td class="decorated">
202     <a href="http://www.linuxsampler.org/api/lscp-1.2.txt">TXT</a>,
203     <a href="http://www.linuxsampler.org/api/lscp-1.2.html">HTML</a>,
204     <a href="http://www.linuxsampler.org/api/lscp-1.2.xml">XML</a>
205     </td>
206     <td class="decorated">2007-10-15</td>
207     <td class="decorated">
208     Protocol specification of the latest official release of LinuxSampler (0.5.0).
209     </td>
210     </tr>
211     <tr>
212 schoenebeck 1280 <td class="decorated">LSCP&nbsp;1.1</td>
213     <td class="decorated">
214 schoenebeck 1434 <a href="http://www.linuxsampler.org/api/lscp-1.1.txt">TXT</a>,
215 schoenebeck 1280 <a href="http://www.linuxsampler.org/api/lscp-1.1.html">HTML</a>,
216     <a href="http://www.linuxsampler.org/api/lscp-1.1.xml">XML</a>
217     </td>
218 schoenebeck 1434 <td class="decorated">2006-11-25</td>
219 schoenebeck 1280 <td class="decorated">
220 schoenebeck 1434 Protocol specification of the previous official release of LinuxSampler (0.4.0).
221 schoenebeck 1280 </td>
222     </tr>
223     <tr>
224 schoenebeck 1434 <td class="decorated">LSCP&nbsp;1.0</td>
225 schoenebeck 1280 <td class="decorated">
226 schoenebeck 1434 <a href="http://www.linuxsampler.org/api/lscp-1.0.txt">TXT</a>,
227     <a href="http://www.linuxsampler.org/api/lscp-1.0.html">HTML</a>,
228     <a href="http://www.linuxsampler.org/api/lscp-1.0.xml">XML</a>
229 schoenebeck 1280 </td>
230 schoenebeck 1434 <td class="decorated">2005-07-17</td>
231 schoenebeck 1280 <td class="decorated">
232 schoenebeck 1434 Protocol specification of ancient LinuxSampler release 0.3.3.
233 schoenebeck 1280 </td>
234     </tr>
235     </tbody>
236     </table>
237    
238 senoner 542 <p class="default">
239 schoenebeck 594 The protocol will be extended from time to time. You may look at the
240     <a href="features.html#LSCP">features</a> site to see which control
241     commands are already implemented and which are not.
242     </p>
243 senoner 542
244    
245     <a name="example_lscp_scripts">
246     <h3>Example LSCP scripts</h3>
247     <p class="default">
248     If you don't want / can't use a GUI frontend you will probably write some LSCP scripts for
249     using with linuxsampler to setup your needed sampler session. It follows some common LSCP
250     examples to give you a good starting point for writing your own ones. Adjust it to your needs
251     and send it to the running linuxsampler application with:
252     </p>
253 schoenebeck 1280 <pre class="code">cat yourscript.lscp | netcat localhost 8888</pre>
254 senoner 542 <p class="default">
255 schoenebeck 1242 Optionally you can also use a graphical frontend like QSampler one time to setup a working
256     sampler session for your needs and save it. Because you have to know that the files saved
257     by our frontends are actually pure LSCP scripts, thus you can i.e. use those files simply with
258     the mentioned netcat command from above to setup the sampler session without a frontend.
259     </p>
260     <p class="default">
261 senoner 542 Here is a simple LSCP example which uses ALSA as MIDI input and as audio output driver as well,
262     it creates only one sampler channel using the Gigasampler engine and loads a Piano instrument
263     on that sampler channel:
264     </p>
265 schoenebeck 1280 <pre class="code">#enable echo mode
266 senoner 542 SET ECHO 1
267    
268     # load the ALSA audio driver
269     # (parameter CARD is optional, I use it here to select my 2nd sound card
270     # you can use 'GET AUDIO_OUTPUT_DRIVER_PARAMETER INFO ALSA CARD' to get
271     # all available sound cards)
272     CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='1,0'
273    
274     # load the ALSA MIDI driver
275     CREATE MIDI_INPUT_DEVICE ALSA
276    
277     # connect my MIDI keyboard which has ALSA seq ID '72:0'
278     # (see 'aconnect -i' for the IDs of your MIDI devices
279     # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
280     SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
281    
282     # setup a sampler channel
283     ADD CHANNEL
284     LOAD ENGINE gig 0
285     SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
286     SET CHANNEL MIDI_INPUT_DEVICE 0 0
287     LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
288    
289     # finally show our channel setup (optional of course)
290     GET CHANNEL INFO 0
291    
292     # quit connection
293     QUIT</pre>
294     <p class="default">
295     The next example uses JACK as audio output driver instead and automatically connects the two
296     output channels of LS's JACK client to the first two ALSA PCM channels, so you can hear
297     something without having to manually connect it e.g. with qjackctl:
298     </p>
299 schoenebeck 1280 <pre class="code">#enable echo mode
300 senoner 542 SET ECHO 1
301    
302     # load the JACK audio driver
303     CREATE AUDIO_OUTPUT_DEVICE JACK
304    
305     # connect to ALSA playback JACK client so we can hear something
306     # (you can use 'GET AUDIO_OUTPUT_CHANNEL_PARAMETER INFO 0 0 JACK_BINDINGS'
307     # to get all available JACK clients / ports)
308     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
309     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
310    
311     # load the ALSA MIDI driver
312     CREATE MIDI_INPUT_DEVICE ALSA
313    
314     # connect my MIDI keyboard which has ALSA seq ID '72:0'
315     # (see 'aconnect -i' for the IDs of your MIDI devices
316     # or use 'GET MIDI_INPUT_PORT_PARAMETER INFO 0 0 ALSA_SEQ_BINDINGS')
317     SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS='72:0'
318    
319     # setup one sampler channel
320     ADD CHANNEL
321     LOAD ENGINE gig 0
322     SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
323     SET CHANNEL MIDI_INPUT_DEVICE 0 0
324     LOAD INSTRUMENT '/home/me/Gigs/PMI Steinway D.gig' 0 0
325    
326     # finally show our channel setup (optional of course)
327     GET CHANNEL INFO 0
328    
329     # quit connection
330     QUIT</pre>
331     <p class="default">
332     The next example is a bit more complex.
333     It shows how to setup a more realistic sampler session, handle routing of MIDI input channels,
334     handle routing of audio channels, it uses JACK again as audio
335     output driver, but creates the JACK client with four output channels instead, it creates two
336     sampler channels, loads two different instrument on those two sampler channels and alters
337     the audio channel routing so that the two output channels of sampler channel 1 are routed to
338     the first two JACK output channels and the two output channels of sampler channel 2 are routed
339     the second pair of the JACK client's output channels. That way you could e.g. record the output
340     of those two sampler channels independently or apply independent LADSPA effects on it.
341     </p>
342 schoenebeck 1280 <pre class="code"># enable echo mode
343 senoner 542 SET ECHO 1
344    
345     # load audio and MIDI driver
346     CREATE AUDIO_OUTPUT_DEVICE JACK
347     CREATE MIDI_INPUT_DEVICE ALSA
348    
349     # increase the amount of output channels of the LS"s Jack client e.g. to 4
350     SET AUDIO_OUTPUT_DEVICE_PARAMETER 0 CHANNELS=4
351    
352     # connect to MIDI keyboard
353     SET MIDI_INPUT_PORT_PARAMETER 0 0 ALSA_SEQ_BINDINGS="64:0"
354    
355     # set up 1st sampler channel (using default output channels, that is 0 and 1)
356     ADD CHANNEL
357     LOAD ENGINE gig 0
358     SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
359     SET CHANNEL MIDI_INPUT_DEVICE 0 0
360     LOAD INSTRUMENT "/somedir/The Bosendorfer Imperial Grand Version 2.2.gig" 0 0
361     SET CHANNEL VOLUME 0 0.40
362     # by default every sampler channel / engine listens to ALL MIDI channels
363     # but for multi channel setup it makes sense to distinguish the inputs, so
364     # let sampler channel 0 listen to MIDI channel 0 (instead of ALL)
365     SET CHANNEL MIDI_INPUT_CHANNEL 0 0
366    
367     # set up 2nd sampler channel (using output channels 2 and 3)
368     ADD CHANNEL
369     LOAD ENGINE gig 1
370     SET CHANNEL AUDIO_OUTPUT_DEVICE 1 0
371     SET CHANNEL MIDI_INPUT_DEVICE 1 0
372     LOAD INSTRUMENT "/home/me/Gigs/NemeSys_1GB_Grand.gig" 0 1
373     SET CHANNEL VOLUME 1 0.40
374     # let sampler channel 1 listen to MIDI channel 1 (instead of ALL)
375     SET CHANNEL MIDI_INPUT_CHANNEL 1 1
376     # this will alter the audio channel routing
377     # connect the engines output channel 0 to JACK clients output 2
378     SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 0 2
379     # connect the engines output channel 1 to JACK clients output 3
380     SET CHANNEL AUDIO_OUTPUT_CHANNEL 1 1 3
381    
382     # automatic connection between the four 4 ports of LS's Jack client and the
383     # ALSA PCM JACK client (assuming your sound card has at least 4 outputs ;-)
384     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 JACK_BINDINGS='alsa_pcm:playback_1'
385     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 JACK_BINDINGS='alsa_pcm:playback_2'
386     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 2 JACK_BINDINGS='alsa_pcm:playback_3'
387     SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 3 JACK_BINDINGS='alsa_pcm:playback_4'
388    
389     # not necessary, just to see our setup
390     GET CHANNEL INFO 0
391     GET CHANNEL INFO 1</pre>
392     <p class="default">
393     For a detailed description about LSCP read the <a href="api/draft-linuxsampler-protocol.html">LSCP reference</a>.
394     Be welcome to ask details on the mailing list.
395     </p>
396    
397    
398     </div>
399     </td></tr></table>
400    
401     </div>
402    
403     </body>
404     </html>

  ViewVC Help
Powered by ViewVC