/[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 1573 - (hide annotations) (download) (as text)
Fri Dec 7 02:45:05 2007 UTC (16 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 18664 byte(s)
- added a hook to the LSCP specs

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

  ViewVC Help
Powered by ViewVC