/[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 1377 - (hide annotations) (download) (as text)
Wed Oct 3 21:05:46 2007 UTC (16 years, 6 months ago) by schoenebeck
File MIME type: text/html
File size: 17304 byte(s)
* added API documentation for liblscp and libgig
  to the documentations site, both API docs are now
  automatically generated from CVS once a day

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

  ViewVC Help
Powered by ViewVC