/[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 1280 - (show annotations) (download) (as text)
Fri Aug 10 14:05:51 2007 UTC (16 years, 7 months ago) by schoenebeck
File MIME type: text/html
File size: 16354 byte(s)
- overall style cleanup

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

  ViewVC Help
Powered by ViewVC