/[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 1620 - (show 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 <!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 <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 <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 <a name="lscp_spec"></a>
173 <a name="lscp_specs"></a>
174 <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 <h2>LSCP Reference</h2>
183 <p class="default">
184 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 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 LinuxSampler!
191 </p>
192
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 <td class="decorated_header">Release Date</td>
199 <td class="decorated_header">Description</td>
200 </tr>
201 </thead>
202 <tbody>
203 <tr>
204 <td class="decorated">LSCP&nbsp;draft</td>
205 <td class="decorated">
206 <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 </td>
210 <td class="decorated">unreleased</td>
211 <td class="decorated">
212 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 </td>
216 </tr>
217 <tr>
218 <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 <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 Protocol specification of the previous official release of LinuxSampler (0.5.0).
239 </td>
240 </tr>
241 <tr>
242 <td class="decorated">LSCP&nbsp;1.1</td>
243 <td class="decorated">
244 <a href="http://www.linuxsampler.org/api/lscp-1.1.txt">TXT</a>,
245 <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 <td class="decorated">2006-11-25</td>
249 <td class="decorated">
250 Protocol specification old LinuxSampler release 0.4.0.
251 </td>
252 </tr>
253 <tr>
254 <td class="decorated">LSCP&nbsp;1.0</td>
255 <td class="decorated">
256 <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 </td>
260 <td class="decorated">2005-07-17</td>
261 <td class="decorated">
262 Protocol specification of ancient LinuxSampler release 0.3.3.
263 </td>
264 </tr>
265 </tbody>
266 </table>
267
268 <p class="default">
269 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
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 <pre class="code">cat yourscript.lscp | netcat localhost 8888</pre>
284 <p class="default">
285 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 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 <pre class="code">#enable echo mode
296 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 <pre class="code">#enable echo mode
330 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 <pre class="code"># enable echo mode
373 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