/[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 1620 - (hide annotations) (download) (as text)
Thu Jan 3 21:45:45 2008 UTC (16 years, 3 months ago) by schoenebeck
File MIME type: text/html
File size: 19099 byte(s)
- added link to OSX howto to the documentation site

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

  ViewVC Help
Powered by ViewVC