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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1290 - (hide annotations) (download) (as text)
Fri Aug 10 22:45:25 2007 UTC (16 years, 8 months ago) by iliev
File MIME type: text/html
File size: 16643 byte(s)
- updating JSampler manual

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

  ViewVC Help
Powered by ViewVC