/[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 1576 - (show annotations) (download) (as text)
Fri Dec 7 08:14:05 2007 UTC (16 years, 4 months ago) by schoenebeck
File MIME type: text/html
File size: 18889 byte(s)
* new release wave (the first one for win32)

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

  ViewVC Help
Powered by ViewVC