Fix readme
[terminatorX.git] / website / faq.xml
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE section SYSTEM "./tX.dtd">
3 <section name="faq"> &db; <faq>
4     <qa>
5       <question>What is terminatorX?</question>
6       <answer>
7         <para>terminatorX is a realtime audio synthesizer that allows you to &quot;scratch&quot; on
8           digitally sampled audio data (*.wav, *.au, *.ogg, *.mp3, etc.) the way hiphop-DJs scratch
9           on vinyl records. It features multiple turntables, realtime effects (buit-in as well as
10             <dblink id="ladspa"/> plugin effects), a sequencer and MIDI interface - all accessible
11           through an easy-to-use gtk+ GUI. <bold>This software is designed to run under Linux,
12             FreeBSD and the like</bold>.</para>
13       </answer>
14     </qa>
15     <qa>
16       <question>What does it cost?</question>
17       <answer>
18         <para>Nothing. TerminatorX is <link ref="">free
19           software</link>. Read the <link ref="COPYING">license</link> (GPL V2).</para>
20       </answer>
21     </qa>
22     <qa>
23       <question>What platforms does it run on?</question>
24       <answer>
25         <para>TerminatorX should run on any recent Linux or FreeBSD system. I develop terminatorX on
26           an X86-System, but the source contains support for big endian machines (PowerPC for
27           example). If you experience platform related troubles, please let me know.</para>
28       </answer>
29     </qa>
30     <qa>
31       <question>What audio quality is supported?</question>
32       <answer>
33         <para>TerminatorX operates at an arbitrary sampling rate with 16Bit samples and 2 channels
34           (aka stereo). Samples will be converted to mono on loading.</para>
35       </answer>
36     </qa>
37     <qa>
38       <question>Why does it take terminatorX so long to load samples?</question>
39       <answer>
40         <para>This depends on the file your loading. Wavfiles are loaded with the buit-in wave loading
41           routines (if enabled on compile time) and this happens very fast. For compressed audio
42           files the necessary decompression will consume quite some CPU time on loading.</para>
43         <para>Since Version 3.73 loading of audio files has been significantly accelerated with the
44           libaudiofile, libvorbis and mad methods.</para>
45       </answer>
46     </qa>
47     <qa>
48       <question>Why doesn't terminatorX support mmap'ed wav reading?</question>
49       <answer>
50         <para>Oh well due to my laziness I guess. <person>
51             <name>Benno Senoner</name>
52             <email></email>
53           </person> wrote a <link
54             ref=""> patch</link>
55           against 3.2 to support &quot;on-the-fly&quot; reading of wavfiles. The problem is the
56           patch wasn't applicable to later versions of terminatorX, nor would it work with sox/mpg123
57           support. I still plan to port the patch to the newer releases sometime.</para>
58       </answer>
59     </qa>
60     <qa>
61       <question>How can I use a second mouse, a joystick or other input devices for scratching?</question>
62       <answer>
63         <para>
64           <bold>Update:</bold> If you want to use your joystick along with your mouse I suggest
65           using my tiny <dblink id="aseqjoy"/> tool to connect your joystick to the MIDI input port
66           of terminatorX.</para>
67         <para>If you want to use another mouse however, you need to configure this mouse as an
68           XFree86 XInput devices and from what I've read I assume you'll need to have XFree86
69  or higher. If you want to know how to do this read your XF86Config manual page
70           (run man XF86Config) and find the part on &quot;the optional XInput section&quot;. If you
71           successfully configured your second (third ...) mouse / input device for XFree86 you now
72           need to turn on XInput-support in the Options-dialog of terminatorX and you have to select
73           the XInput device you want terminatorX to initialize. Now either press &quot;Apply&quot;
74           or &quot;Ok&quot; and you should be able to scratch with that devices next time you press &quot;Start&quot;.</para>
75       </answer>
76     </qa>
77     <qa>
78       <question>Why do I get &quot;./terminatorX: undefined symbol:
79         _t24__default_alloc_template2b1i0.free_list&quot; when I run terminatorX?</question>
80       <answer>
81         <para>You probably downloaded the binary-rpm-package and your libstdc++ is outdated. This
82           seems to occur on Mandrake systems only. Upgrading with a newer libstdc++ package should
83           fix this.</para>
84       </answer>
85     </qa>
86     <qa>
87       <question>Why do I get &quot;tX_seqpar.h:25: list: No such file or directory&quot; when
88         building terminatorX myself?</question>
89       <answer>
90         <para>You don't have the libstdc++ headers installed. Install the libstdc++-devel package
91           for the libstdc++-package you have installed.</para>
92       </answer>
93     </qa>
94     <qa>
95       <question>What can I do if my mouse doesn't work in scratch mode?</question>
96       <answer>
97         <para>Now this issue is rather tricky, as it seems a lot of problems can be the reason here,
98           but there are some things you can try: <itemizedlist>
99             <listitem>
100               <nopara>Make sure that your X-Server supports XFree86-DGA. Remove any lines that read</nopara>
101               <para>
102                 <screen>Option &quot;omit xfree86-dga&quot;</screen>
103               </para>
104               <para>from your <screen>XF86Config</screen>. Check whether the Server loaded DGA by
105                 running <bold>xdpyinfo</bold> - if DGA is loaded one of the lines you get from
106                 xdpyinfo should read <italic>XFree86-DGA</italic>. To check whether DGA actually
107                 works run <bold>dga</bold> as root - <red>Warning:</red> the only way to exit this
108                 tool is pressing 'q' on your keyboard - and it might take some seconds until it reacts.</para>
109             </listitem>
110             <listitem>
111               <nopara>Try running terminatorX as root. This fixes the problem for most people.</nopara>
112             </listitem>
113           </itemizedlist>
114         </para>
115         <para>If all this doesn't help let me know.</para>
116       </answer>
117     </qa>
118     <qa>
119       <question>Should I install terminatorX suid root?</question>
120       <answer>
121         <para>Like all audio applications terminatorX' performance improves significantly
122           from running with realtime scheduling priority. However current Linux or *BSD
123           systems don't allow regular users to achieve realtime priority, so you need
124           to install terminatorX suid-root if you want to allow regular users to run terminatorX
125           with realtime priority.
126         </para>
128         <para><red><bold>Note:</bold></red> installing any program suid-root is potentially <bold>dangerous</bold>
129           and could be exploited - so if other people have access to this machine, too, you
130           should reduce the number of suid-root programs.
131         </para>
133         <para>The old suid-root method has gone - you have to configure terminatorX with
134                         POSIX capabilities to allow running suid-root:
135           <itemizedlist>
136             <listitem><para><screen>--enable-capabilities</screen>: this method (enabled
137               by default) drops root privileges very early (which is good) and only keeps
138               the capability of renice-ing processes. It is Linux-specific though and requires
139               a not-too-old 2.4.* kernel and the <dblink id="libcap"/> library.
140             </para></listitem>
141 <!--            <listitem><para><screen>-enable-suidroot</screen>: this method is now disabled
142               by default as it is potientially more dangerous. The problems discussed in this
143               <link ref="">bugtraq post</link>
144               have been fixed - but there might be other problems. Note that exploiting this
145               makes only sense on current Linux systems that use an extra manager thread
146               for threaded applications.</para>
147               <para><bold>Note:</bold> RedHat 9 Kernels seem to not support this method
148                 anymore which is probably related to their NPTL implementation. So, if you
149                 want suid-root with RH 9 use the capabilities method.
150               </para>
151             </listitem> -->
152           </itemizedlist>          
153         </para>
155         <para>
156           <red><bold>Again:</bold></red> this method might have yet unknown flaws so if you 
157           want to be 100% sure that your terminatorX installation is no security
158           threat <bold>do not install terminatorX suid-root</bold>.
159         </para>
160         <!--<para><bold>No</bold>. While I recommended installing terminatorX suid root before - I no 
161           longer do for two reasons:
162           <itemizedlist>            
163             <listitem><nopara>According to this
164               <link ref="">bugtraq posting</link> it is 
165               insecure (I've always warned you before). Although this specific exploit is fixable I'm 
166               rather sure it would be easy to create others.</nopara></listitem>
167             <listitem><nopara>Some machines seem to deadlock with the engine thread
168               running with rt-scheduling for no obvious reason. Unluckily this is pretty hard
169               to debug.</nopara></listitem>
170           </itemizedlist>         
171         </para>
172         <para>So instead of running terminatorX suid root I recommend using either 
173           <link ref="">Linux 2.6.x</link> or
174           <person>
175             <name>Con Kolivas</name>
176             <email></email>
177           </person>' <link ref="">patches</link>
178           against Linux 2.4.x. With these new scheduler tweaks terminatorX performs very well without
179           extra privileges.</para>
180           <para>Installing terminatorX <italic>suid root</italic> improves terminatorX' performance
181           significantly for non-root users - as terminatorX will use the suid-root privileges to
182           create the engine thread with realtime-scheduling-priority. Immediately after the creation
183           of the thread terminatorX drops root privileges before any files or devices are accessed.
184           The problem is: the Linux pthreads manager thread can not be told to drop it's root
185           privileges, which means that while the two threads executing terminatorX code run with the
186           real user's privileges, the pthread manager thread still runs with root-privileges. While
187           I cannot see how a malicious user or software could utilize this thread to acquire root
188           privileges it might still be possible, so you'll have to make your on decision on
189           performance vs security.</para>-->
190       </answer>
191     </qa>
192     <qa>
193       <question>How do I install terminatorX suid root?</question>
194       <answer>
195         <para>Ensure that you have read the <link ref="#11">entry above</link> before you 
196            consider following the instructions below.
197         </para>
198         <para>As root <italic>cd</italic> into the directory you installed terminatorX to (typically
199           that is <italic>/usr/local/bin</italic> or <italic>/usr/bin</italic>) and run the
200           following commandline:</para>
201         <para>
202           <screen>chown root: ./terminatorX &amp;&amp; chmod u+s ./terminatorX</screen>
203         </para>
204       </answer>
205     </qa>
206     <qa>
207       <question>Is there a Windows version of terminatorX?</question>
208       <answer>
209         <para>No, there is no such version, nor will I port it myself - as I hardly have the time
210           to maintain the regular version. If you plan to port it,
211           please let <person>
212             <name>me</name>
213             <email></email>
214           </person> 
215           know.</para>
216       </answer>
217     </qa>
218     <qa>
219       <question>Where does the name come from?</question>
220       <answer>
221         <para>If you don't know find out a little something about <link
222             ref="">Public Enemy</link>. Learn who <link
223             ref=""> TerminatorX</link> is or <link
224             ref="">see him</link> do his work</para>
225       </answer>
226     </qa>
227   </faq>
228 </section>