/[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 1280 - (hide 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 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     <h2>LSCP Reference</h2>
141     <p class="default">
142 schoenebeck 1280 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 senoner 542 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 schoenebeck 1280 LinuxSampler!
149 senoner 542 </p>
150 schoenebeck 1280
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 senoner 542 <p class="default">
199 schoenebeck 594 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 senoner 542
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 schoenebeck 1280 <pre class="code">cat yourscript.lscp | netcat localhost 8888</pre>
214 senoner 542 <p class="default">
215 schoenebeck 1242 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 senoner 542 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 schoenebeck 1280 <pre class="code">#enable echo mode
226 senoner 542 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 schoenebeck 1280 <pre class="code">#enable echo mode
260 senoner 542 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 schoenebeck 1280 <pre class="code"># enable echo mode
303 senoner 542 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