1 |
<chapter id="live_editing"><title>Live Editing</title> |
2 |
<section id="about"><title>Only trust what you hear...</title> |
3 |
<para> |
4 |
So far we've been using <application>gigedit</application> as stand-alone |
5 |
application. The main drawback of this approach is that you cannot |
6 |
immediately hear the effect of your modifications unless you explicitly |
7 |
(re)load the respective instrument into a sampler, which is unconvenient |
8 |
and wastes a lot of time (especially with big instruments). Fortunately |
9 |
gigedit and <application>LinuxSampler</application> are friends and |
10 |
politely share the same instrument(s) at the same time if you tell them to |
11 |
do so. |
12 |
</para> |
13 |
<para> |
14 |
To do this, you first have to load the respective instrument(s) into |
15 |
<application>LinuxSampler</application>, i.e. by using a frontend |
16 |
application like <application>JSampler</application> or |
17 |
<application>QSampler</application>. Here's how you do it with |
18 |
<application>QSampler</application>: Select the channel strip of the |
19 |
instrument you want to edit and click on the "Edit" button on the same |
20 |
channel strip, like shown in <xref linkend="shot_qsampler_edit" />. |
21 |
|
22 |
Alternatively you can also select this function from the menu ( |
23 |
<menuchoice> |
24 |
<guimenu>"Edit"</guimenu> |
25 |
<guimenuitem>"Edit Channel..."</guimenuitem> |
26 |
</menuchoice> ). In any case |
27 |
<application>gigedit</application> should popup on the screen in less |
28 |
than 5 seconds. This time you can see <application>gigedit</application> |
29 |
like being "attached" to <application>LinuxSampler</application>. |
30 |
|
31 |
<figure id="shot_qsampler_edit"><title>Selecting an instrument to edit from QSampler</title> |
32 |
<screenshot><mediaobject><imageobject> |
33 |
<imagedata fileref="shot_qsampler_edit.png" format="PNG"/> |
34 |
</imageobject></mediaobject></screenshot> |
35 |
</figure> |
36 |
|
37 |
In <application>JSampler</application> you won't see an "Edit" button |
38 |
by default. Instead you have to move the mouse pointer over the channel |
39 |
strip which contains the instrument you want to edit. The channel strip |
40 |
display will change immediately and a round, small "Edit" button |
41 |
appears like shown in <xref linkend="shot_jsampler_edit" />. Click on |
42 |
that button and gigedit will appear like with |
43 |
<application>QSampler</application>, so it's pretty much the same thing. |
44 |
|
45 |
<figure id="shot_jsampler_edit"><title>Selecting an instrument to edit from JSampler "Fantasia" 0.8a</title> |
46 |
<screenshot><mediaobject><imageobject> |
47 |
<imagedata fileref="shot_jsampler_edit.png" format="PNG"/> |
48 |
</imageobject></mediaobject></screenshot> |
49 |
</figure> |
50 |
|
51 |
<figure id="shot_gigedit_hosted"><title>Gigedit running "attached" to LinuxSampler</title> |
52 |
<screenshot><mediaobject><imageobject> |
53 |
<imagedata fileref="shot_gigedit_hosted.png" format="PNG"/> |
54 |
</imageobject></mediaobject></screenshot> |
55 |
</figure> |
56 |
|
57 |
If nothing appears on the screen or in case you get an error when clicking |
58 |
on the "Edit" button, refer to <xref linkend="live_trouble" />. |
59 |
</para> |
60 |
<para> |
61 |
All modifications you do on the selected instrument with |
62 |
<application>gigedit</application> will immediately be audible when you |
63 |
play notes. |
64 |
When you close <application>gigedit</application> you'll notice that it |
65 |
won't ask you to save the instrument, which it would usually do when you |
66 |
run <application>gigedit</application> as stand-alone application. This is |
67 |
because the modifications are not lost when you close it, at least not |
68 |
unless you kill the sampler as well. So when you click again on "Edit" |
69 |
you'll see that all the modifications you made are still there. Also note |
70 |
when selecting "New" or "Open" from the menu to create a completely new |
71 |
instrument or open another one from a file, |
72 |
<application>gigedit</application> will be "detached" from the sampler, |
73 |
that is the other instrument will not be audible with the sampler. This is |
74 |
currently (2007-10-07) a minor limitation of the sampler and |
75 |
<application>gigedit</application>. So if you want to create a completely |
76 |
new instrument from scratch you first have to create that instrument with |
77 |
<application>gigedit</application>, save it to a file and then load it into |
78 |
the sampler. After that you can continue like described in this chapter and |
79 |
edit the new instrument "live" by clicking on the respective "Edit" button |
80 |
in <application>QSampler</application>. |
81 |
</para> |
82 |
</section> |
83 |
|
84 |
<section id="live_trouble"><title>Trouble with live-editing</title> |
85 |
<para> |
86 |
<application>LinuxSampler</application> and |
87 |
<application>gigedit</application> need to be compiled properly to be able |
88 |
to use the described "live editing" feature between those two applications. |
89 |
So here is a short technical explanation how the interaction between those |
90 |
two applications work: <application>LinuxSampler</application> per se |
91 |
doesn't actually know anything that an application like |
92 |
<application>gigedit</application> exists in this world. However the |
93 |
sampler provides a plugin system to extend it for this functionality. When |
94 |
you compile the sampler you define a directory where the sampler shall look |
95 |
for plugin DLLs to load on startup. So first check if that directory |
96 |
actually exists or if the sampler was not compiled with the correct / |
97 |
desired plugin directory. When you start the sampler from the console |
98 |
simply by typing the command <command>linuxsampler</command> and you see |
99 |
something like this: |
100 |
<screen> |
101 |
<prompt>bob@mybox ~ $</prompt> <command>linuxsampler</command> |
102 |
LinuxSampler 0.4.0.7cvs |
103 |
Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck |
104 |
Copyright (C) 2005-2007 Christian Schoenebeck |
105 |
Detected features: MMX SSE |
106 |
Creating Sampler...OK |
107 |
Registered sampler engines: 'GIG' |
108 |
Registered MIDI input drivers: ALSA |
109 |
Registered audio output drivers: ALSA,ARTS,JACK |
110 |
Loading instrument editor plugins...<errortext>Could not open instrument editor plugins directory (/usr/local/lib/linuxsampler/plugins): No such file or directory</errortext> |
111 |
Registered instrument editors: |
112 |
Starting LSCP network server (0.0.0.0:8888)...OK |
113 |
LinuxSampler initialization completed. :-) |
114 |
</screen> |
115 |
Then there's definitely something wrong. :) So either create the mentioned |
116 |
directory (in this case "/usr/local/lib/linuxsampler/plugins") manually or |
117 |
recompile <application>LinuxSampler</application> in case you want it to use |
118 |
another directory as plugins directory. Assuming you want it to use the directory "/usr/lib/linuxsampler/plugins" instead you could compile the sampler i.e. this way: |
119 |
<screen> |
120 |
<prompt>bob@mybox ~/cvs/linuxsampler $</prompt> <command>./configure --enable-plugin-dir=/usr/lib/linuxsampler/plugins && make</command> |
121 |
</screen> |
122 |
probably in conjunction with some other configure script parameters and some |
123 |
nice CXXFLAGS to optimize the sampler for your machine, but this is out of |
124 |
the scope of this document. After the compilation completed, you would |
125 |
install the sampler as user root as usual: |
126 |
<screen> |
127 |
<prompt>bob@mybox ~/cvs/linuxsampler $</prompt> <command>su</command> |
128 |
Password: |
129 |
<prompt>mybox linuxsampler #</prompt> <command>make install</command> |
130 |
</screen> |
131 |
Again make sure that your chosen plugin directory exists, if not create it |
132 |
and when running <application>LinuxSampler</application> now again, the |
133 |
error message on the console ("Could not open instrument editor plugins |
134 |
directory") should be gone. |
135 |
</para> |
136 |
<para> |
137 |
Now you must recompile <application>gigedit</application>, because it has |
138 |
to compile the appropriate plugin and has to place that plugin DLL into the |
139 |
samplers plugins directory. It should look like this: |
140 |
<screen> |
141 |
<prompt>bob@mybox ~/cvs/gigedit $</prompt> <command>./configure</command> |
142 |
checking build system type... i686-pc-linux-gnu |
143 |
checking host system type... i686-pc-linux-gnu |
144 |
checking for gcc... gcc |
145 |
checking for C compiler default output file name... a.out |
146 |
checking whether the C compiler works... yes |
147 |
checking whether we are cross compiling... no |
148 |
... |
149 |
checking for gmsgfmt... /usr/bin/gmsgfmt |
150 |
checking for xgettext... /usr/bin/xgettext |
151 |
checking for pkg-config... /usr/bin/pkg-config |
152 |
checking pkg-config is at least version 0.9.0... yes |
153 |
checking for GTKMM... yes |
154 |
checking for GIG... yes |
155 |
checking for SNDFILE... yes |
156 |
checking for SF_INSTRUMENT.loops... yes |
157 |
<errortext>checking for LINUXSAMPLER... yes |
158 |
Found linuxsampler 0.4.0.5cvs |
159 |
Retrieving LinuxSampler's plugin dir... /usr/lib/linuxsampler/plugins |
160 |
Relative plugin dir: ${libdir}/linuxsampler/plugins</errortext> |
161 |
configure: creating ./config.status |
162 |
config.status: creating Makefile |
163 |
config.status: creating src/Makefile |
164 |
config.status: creating src/gigedit/Makefile |
165 |
config.status: creating src/plugin/Makefile |
166 |
config.status: creating po/Makefile.in |
167 |
config.status: creating debian/Makefile |
168 |
config.status: creating doc/Makefile |
169 |
config.status: creating doc/quickstart/Makefile |
170 |
config.status: creating config.h |
171 |
config.status: config.h is unchanged |
172 |
config.status: executing depfiles commands |
173 |
config.status: executing intltool commands |
174 |
config.status: executing default-1 commands |
175 |
config.status: executing po/stamp-it commands |
176 |
<prompt>bob@mybox ~/cvs/gigedit $</prompt> <command>make</command> |
177 |
</screen> |
178 |
Make sure the higlighted section of the configure script output looks |
179 |
similar like above. After compilation completed, you once again install |
180 |
with the common procedure: |
181 |
<screen> |
182 |
<prompt>bob@mybox ~/cvs/gigedit $</prompt> <command>su</command> |
183 |
Password: |
184 |
<prompt>mybox gigedit #</prompt> <command>make install</command> |
185 |
</screen> |
186 |
This will install the <application>gigedit</application> binary, as well |
187 |
as its plugin .so file into the directory "/usr/lib/linuxsampler/plugins" |
188 |
(or whatever you chose). And when you start the sampler now from the |
189 |
console, it should look like this: |
190 |
<screen> |
191 |
<prompt>bob@mybox ~ $</prompt> <command>linuxsampler</command> |
192 |
LinuxSampler 0.4.0.7cvs |
193 |
Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck |
194 |
Copyright (C) 2005-2007 Christian Schoenebeck |
195 |
Detected features: MMX SSE |
196 |
Creating Sampler...OK |
197 |
Registered sampler engines: 'GIG' |
198 |
Registered MIDI input drivers: ALSA |
199 |
Registered audio output drivers: ALSA,ARTS,JACK |
200 |
Loading instrument editor plugins...OK |
201 |
<errortext>Registered instrument editors: 'gigedit'</errortext> |
202 |
Starting LSCP network server (0.0.0.0:8888)...OK |
203 |
LinuxSampler initialization completed. :-) |
204 |
</screen> |
205 |
Now you're done with setup and the steps described in |
206 |
<xref linkend="about" /> should work for you. If not, you probably found a |
207 |
bug. Feel free to contact us via our mailing list or open a bug report on |
208 |
our website. |
209 |
<note>If you just used precompiled binary packages of |
210 |
<application>LinuxSampler</application> and |
211 |
<application>gigedit</application>, i.e. from the Linux distribution of |
212 |
your choice, you shouldn't have to recompile them by yourself. Either the |
213 |
versions of <application>LinuxSampler</application> and / or |
214 |
<application>gigedit</application> are too old or they were simply not |
215 |
compiled / packaged correctly. In both cases, please report it to the |
216 |
respective package maintainer of your distribution!</note> |
217 |
</para> |
218 |
</section> |
219 |
</chapter> |