/[svn]/web/trunk/www.linuxsampler.org/documentation.html
ViewVC logotype

Contents of /web/trunk/www.linuxsampler.org/documentation.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1572 - (show annotations) (download) (as text)
Fri Dec 7 01:07:11 2007 UTC (16 years, 3 months ago) by schoenebeck
File MIME type: text/html
File size: 18607 byte(s)
* new LS release (0.5.1)

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

  ViewVC Help
Powered by ViewVC