/[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 1573 - (show 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 <!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 <a name="lscp_spec"></a>
157 <a name="lscp_specs"></a>
158 <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 <h2>LSCP Reference</h2>
167 <p class="default">
168 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 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 LinuxSampler!
175 </p>
176
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 <td class="decorated_header">Release Date</td>
183 <td class="decorated_header">Description</td>
184 </tr>
185 </thead>
186 <tbody>
187 <tr>
188 <td class="decorated">LSCP&nbsp;draft</td>
189 <td class="decorated">
190 <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 </td>
194 <td class="decorated">unreleased</td>
195 <td class="decorated">
196 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 </td>
200 </tr>
201 <tr>
202 <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 <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 Protocol specification of the previous official release of LinuxSampler (0.5.0).
223 </td>
224 </tr>
225 <tr>
226 <td class="decorated">LSCP&nbsp;1.1</td>
227 <td class="decorated">
228 <a href="http://www.linuxsampler.org/api/lscp-1.1.txt">TXT</a>,
229 <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 <td class="decorated">2006-11-25</td>
233 <td class="decorated">
234 Protocol specification old LinuxSampler release 0.4.0.
235 </td>
236 </tr>
237 <tr>
238 <td class="decorated">LSCP&nbsp;1.0</td>
239 <td class="decorated">
240 <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 </td>
244 <td class="decorated">2005-07-17</td>
245 <td class="decorated">
246 Protocol specification of ancient LinuxSampler release 0.3.3.
247 </td>
248 </tr>
249 </tbody>
250 </table>
251
252 <p class="default">
253 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
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 <pre class="code">cat yourscript.lscp | netcat localhost 8888</pre>
268 <p class="default">
269 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 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 <pre class="code">#enable echo mode
280 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 <pre class="code">#enable echo mode
314 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 <pre class="code"># enable echo mode
357 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