Contributors:
licmak.awk: Christian <eleet@altern.org>
tX_wavfunc.c-patch: "Andrew C. Bul+hac?k" <acb@zikzak.net>
+MK II icon: Michael Kahl <m.kahl@student.hu-berlin.de>
+
+Authors of files not written for tX but included in this distribution:
+mmx.h README.MMX: Hank Dietz <hankd@ecn.purdue.ed> and
+ Randy Fisher <rfisher@ecn.purdue.edu>
+3dnow.h: Robert Dale <rob@nb.net>
The lowpass filter is based on:
reso_lop.txt: Paul Kellett <paul.kellett@maxim.abel.co.uk>
terminatorX - ChangeLog
-All changes were done by me (Alexander Koenig) if not stated otherwise.
+All changes were done by me (Alexander König) if not stated otherwise.
This is not a GNU-style ChangeLog but you sort of get the idea what was
changed.
+[v3.65]
+- new GUI
+- Plugins
+- setformat
+- mappable parameters
+
+[v3.61] (unreleased)
+- applied a tiny patch from Atsushi Yamagata <yamagata@plathome.co.jp>
+ to set locale on startup.
+
+[v3.60]
+- terminatorX has a sequencer now. Warning: with the current design the
+ sequencer will correctly play back recorded events only when the buffer size
+ (of the audio device) is set to the same size as it was when recording the
+ events. I know this is annoying and I will try to find a solution to this.
+ Please take a look at the README to find out how the sequencer works.
+- fixed a bug causing the lowpass filter produce a constant signal
+- fixed the load file / drag'n'drop segfault bug
+- fixed the prelisten zombie processes bug
+- fixed the segfault on termination bug (with the audio engine running)
+- hacked the mixer code to use 3DNow! too. This improves 3DNow! performance gain
+ from previously ~6% to more than 20% (depending on compiler optimizations)
+- extended the set-file-format to allow storing of sequencer events. This
+ release allows loading old tX-sets too.
+- some gui icons. Choose Text/Icon / Icon only / Text only display of these
+ icons in the Options dialog. You'll have to restart tX to see the changes
+ though.
+- "soundfile-editor support": Enter the soundfile-editor of your choice in the
+ tX-Options dialog (Still looking for an editor? Checkout Dave's Linux
+ Sound and MIDI Pages: http://www.bright.net/~dlphilp/linuxsound/).
+ Click the edit button in the Main-Panel to start your editor with the
+ turntable's soundfile - edit ;) - save and click the reload button.
+- big endian bug fixes by Scott C. Knight <scknight@indiana.edu>
+- --enable-benchmark will now produce a benchmark binary. This takes a set file
+ as a parameter (that set file should autotrigger all tables, else the
+ benchmark will measure how fast tX can generate zeros ;) WARNING: the
+ benchmark binary is not a usable terminatorX binary.
+- a new dial-widget. I created this for the upcoming GUI-redesign - and decided
+ I let you debug it right now ;) If you don't want it run configure with the
+ --disable-dial switch.
+- some gui redesign. The volume scales are now located near their corresponding
+ "flash"-widget. This release fits into very small windows - so it should be
+ usable on smaller displays as well.
+- Adrian told me configure doesn´t have to check for glib after checking for
+ gtk+ - I guess he´s right so the glib-test has gone.
+- more minor fixes
+
+[v3.55]
+- implemented "sequenceable parameters" (see tX_seqpar.*). This means the
+ groundwork for the sequencer is done. Although this release does not yet
+ feature a sequencer - there's still a profit: you can now see the GUI (e.g.
+ the lowpass-freq slider) update while you change that value with your mouse in
+ dga grab mode (e.g. up/down with the default X/Y-Control settings).
+- fixed (libmmx) mmx.h to work with gcc 2.95 and above
+- fixed compilation problems for big endian machines. still runtime probs
+ reported though.
+- fixed configure-script as the new bash complains about == in string compares
+- fixed some gui segfaults
+- added an ugly GNOME-mimetype installer. This installs the ".tX"-mime type, an
+ terminatorX-application icon and a ".tX"-icon. I could use some hints on how
+ I could make automake install that instead of an extra script.
+ (see README.GNOME)
+- added Drag'n Drop support. Works with the great gmc. Drop an audio file over
+ the filename-button or the wavdisplay of a turntable to load it into that
+ table. Drop an audiofile over the "Add Turntable" Button to create a new
+ turntable and load that file into that turntable. Drop a tX-set file over the
+ "Load Set" button to load the set.
+
+[v3.51]
+- fixes the load_piped() compilation error if you use neither sox nor mpg123.
+ Note that you have no "pre-listening" without mpg123 for mp3s and no
+ "pre-listening" for any other file without sox.
+
+[v3.5]
+- Yet another redesign ;) Oh well this project moved from c++/multithreaded
+ to c++/singlethreaded, to c/multithreaded and now, finally, back to
+ c++/multithreaded. This shows quite some foresight, I'd say ;)
+- Due to the redesign I had to change a lot (everything?) again so this document
+ can impossibly hold all changes. but let's see:
+- tX now uses floats instead of doubles for a lot of parameters. Therefore the
+ old .terminatorXrc.bin is now called .terminatorX3rc.bin to allow parallel
+ use of older releases. But you'll have to configure the new release again
+ the first time you run it.
+- tX now supports an unlimited no of turntables. The only limit is your display
+ really.
+- Each of these turntables has their own pitch / volume settings and a
+ dedicated lowpass and echo effect section.
+- You can now map mouse motion to a function of your choice (scratching/
+ volume/cutoff/echo-feedback and nothing)
+- Recording will now happen straight to disk. You'll have to specify a filename
+ before you start recording.
+- You can sync the turntables to one master turntable.
+- There are two master settings for pitch and volume available to modify all
+ turntables. The turntable pitch is relative to the master pitch.
+- You can save a complete set (of turntables and settings) to a .tX set file.
+ The audiofile data will *not* be saved within that file, but it'll contain
+ the absolut filename to these files. I know this makes the act of exchanging
+ sets over the net more complex so if somebody wants to code set files with
+ integrated audio data... ;)
+- The way audiofiles are loaded has been redesigned too: the builtin wav
+ routines, the sox support and mpg123 are no longer connected. This means
+ you can use mpg123 support without sox support and still have the builtin
+ wav routines enabled. If you have the builtin wav reader and sox enabled, tX
+ will try try to use the builtin routines first, and if they fail sox will be
+ used as a fallback which is of course slower as you know... There's some
+ support for Benno Senoner's brilliant 3.2-mmap() patch but the patch still
+ needs to be ported.
+- You can now select which parameter to map to a mouse axis.
+- experimental 3DNow! support (works with gcc < 2.95 only)
+- tX-windows now have an icon, thanks Michael!
+
[v3.2]
- implemented 2D-Scratching ;) You can now use the other axis of your mouse
two modify the cutoff frequency of the lowpass filter (if enabled). The
terminatorX INSTALL:
-Copyright (C) 1999 by Alexander König <alkoit00@fht-esslingen.de>
+Copyright (C) 1999, 2000 by Alexander König <alkoit00@fht-esslingen.de>
Quickstart:
-----------
if use bash: > export CFLAGS="-O2"
with tcsh: > setenv CFLAGS "-O2"
- I use CFLAGS="-O7 -mpentium" btw. You'll need to have a "pentium-aware"
- compiler to use that though (egcs-pgcc).
+ I use CFLAGS="-O6 -mpentiumpro" btw. You'll need to have a
+ "pentium-aware" compiler to use that though (gcc/pgcc).
- The configure Options:
-
- --enable-wavonly
+ All of the following configure options can be either enabled with
+ --enable-option or disabled with --disable-option.
- Since Version 3.2 the terminatorX configure script automatically
- enables sox and mpg123 support, if these programs are found on
- the target system. So to be able to load close to any audiofile
- simply ensure you have sox and mpg123 installed an run the
- configure script - if you want to use the builtin wav-loading
- routines specify --enable-wavonly. These will be enabled if
- sox is not found of course.
-
- WARNING: Loading mp3's usually takes quite some time and
- requires a whole lot of memory! tX does not support on-the-fly
- mp3 decoding, and therefor the whole mp3 will be decoded (by
- mpg123) before tX can handle the data.
+ The configure Options:
+
+ Performance Options:
+ --------------------
--enable-scheduler
- This option is only intended for people who have audiobuffer
- underruns (clicks) with their desired latency settings.
+ NEW: since 3.5 this option is enabled by default, as you can
+ now operate the GUI while sound is playing, which can cause
+ audio dropouts when the GUI and the sound thread run at the
+ same priority. You still need root privileges though.
+
If you run terminatorX compiled with this option as root, the
engine thread will be run with FIFO-scheduling policy at the
highest priority. This is somewhat dangerous I guess, as is
I WARNED YOU! Anybody who can run this binary can completely
erase your hardisk. BE CAREFUL.
- --enable-closedev=no
+ --disable-flash
+
+ This turns off the "flash"-widgets that display the current
+ signal of the turntables and the master out. This might help
+ fighting performance probs. Oh, If you have a better name
+ for the widget please tell me ;)
+
+ --enable-3dnow
+
+ This enables EXPERIMENTAL 3DNow! support. It seems as if the
+ current libmmx (which is included) doesn't work with the new
+ gcc 2.95. So if you use that compiler do not enable this option.
+
+ The built binary will run on CPUs with 3DNow! support only.
+ AFAIK these are the K6II, K6III and the Athlon (K7). INTEL CPUs
+ don't have 3DNow! support!
+
+ For now this the only thing that might run a little faster is
+ the echo effect. I planned to hack more 3DNow! code but at the
+ moment I simply don't have the time.
+
+ File support options:
+ ---------------------
+
+ All of these are enabled by default. Nevertheless the configure
+ script checks for the availability of the helper application
+ and if it's not found disables support for it. Check the
+ terminatorX homepage for links to those apps if you don't have
+ them - or check your distribution first, AFAIK all bring these
+ tools nowaday.
+
+ --enable-wav
- The old "KEEP_DEV_OPEN" flag. Still does the same thing: Once
- the audiodevice is opened it won't be closed until you exit
- terminatorX. Good for devices that click when opened.
+ This enables the builtin wav routines. They load 16Bit/44Khz
+ MONO RIFF/WAV files only but they do that significantly faster
+ than using sox. If these routines fail and sox support is
+ enabled, terminatorX will try to load the file with sox as
+ a fallback. Disable them only if they don't load your files
+ correctly.
+
+ --enable-sox
+
+ This enables sox support. As sox can load nearly any audio file
+ it makes sense to use it. You have to have sox installed of
+ course.
+
+ --enable-mpg123
+
+ This enables mpg123 support. If you want to be able to load mp3
+ files keep this option enabled. You have to have mpg123
+ installed of course.
+
+ Misc options:
+ -------------
+
+ --disable-dial
+
+ The resulting binary will not use the new dial-widget, but
+ scales instead.
+ --enable-closedev
+
+ This has no effect at the moment. Sorry. Don't disable it.
+
+ --enable-debug
+
+ This will cause terminatorX to display some debug messages on
+ your console.
+
Just as an example my configure line is (works with bash only):
- > CFLAGS="-O7 -mpentium" ./configure
+ > CFLAGS="-O2 -mpentiumpro" ./configure
Step 2: Build the binary.
-------------------------
-terminatorX V3.2 README
------------------------
+terminatorX V3.60 README
+------------------------
-Copyright (C) 1999 Alexander König
+New:
+ 6.4 : Drag And Drop
+ 6.5 : The Sequencer
+
+Updated:
+ 6.2.1 : The Main Panel
+ 7 : Options
+
+Copyright (C) 1999, 2000 Alexander König
eMail: alkoit00@fht-esslingen.de
-Homepage: http://termX.cjb.net
+Homepage: http://www.terminatorX.cx
This is free software see the COPYING file that came with this
distribution for details.
-WARNING: TerminatorX comes with ABSOLUTELY NO WARRANTY. Version 3.0 introduces
- some features that are not too heavily tested and a crashing
- terminatorX may now result in locked X-Pointer.
+WARNING: TerminatorX comes with ABSOLUTELY NO WARRANTY. This software is known
+to lockup X11 or cause other problems under rare conditions. Don't use
+it on production servers. You have been warned!
Contens:
--------
4.......Requirements
5.......Installation
6.......Operation
+ 6.1.....The Master GUI
+ 6.2.....The Turntable GUI
+ 6.2.1...The Main Panel
+ 6.2.2...The Trigger Panel
+ 6.2.2.1.Syncing Turntables
+ 6.2.3...The X- and Y-Control Panels
+ 6.2.4...The Lowpass Panel
+ 6.2.5...The Echo Panel
+ 6.3.....Grab Mode Operation
+ 6.4.....Drag And Drop
+ 6.5.....The Sequencer
7.......Options/Configuration
7.......Further notes
8.......Contact/Homepage
1. What it is
-------------
-TerminatorX is a realtime audio synthesizer. It enables you to scratch
-on wavfiles like you might have heard HipHop-DJs scratch on vinyl records.
+terminatorX is a realtime audio synthesizer that allows you to "scratch"
+on digitally sampled audio data (*.wav, *.au, *.mp3, etc.) the way hiphop-DJs
+scratch on vinyl records. It features multiple turntables, realtime effects and
+an easy-to-use gtk+ GUI.
This is BETA Software please help me fix bugs. See section Contact/Homepage.
-Please read this README and take a look at the homepage
-http://www.termX.cjb.net BEFORE you complain.
+Please read this README and take a look at the homepage http://www.terminatorX.cx.
2. Quickstart:
----------------
o Install terminatorX (see INSTALL)
o Run terminatorX
- o Load a scratch file (and a loop if you want)
- o Click Start
+ o Load an audiofile into the available turntable (you can add
+ more turntables if you want) (Hint: Click on the button that
+ holds "NONE" in the "Main"-panel)
+ o Click on the "Audio Engine"-button to start playback.
+ o Click on the "Mouse-Grab"-button to enter grab mode. The turntable
+ with the red border has the input focus.
o Press <SPACE> or left mouse button to scratch
- o Release <SPAVE> or left mouse button to let the scratch-file run at
+ o Release <SPACE> or left mouse button to let the scratch-file run at
the turntable's default speed
- o Press ESC or middle (third) mouse button to stop
+ o Press <ESC> to quit grab mode.
3. Features:
------------
- Pre-3.0 Features (still there):
- -------------------------------
-
- o CD-Quality operation
- o Audio aliasing
- o Optional playback of an additional loop wavfile to
- enable rhythm based scratching
- o Recording of your scratching in a memory buffer, customizable by user
- o Save that buffer (as a wavfile) with or without the loop mixed to it,
- no matter whether you recorded it with our without a loop playback
- o Visual feedback to "see" current position in scratch-wavfile
- o Kernel-level audio latency configurable
- o Run terminatorX on the hardware platform of your choice,
- this software is known to run on the following platforms
- - X86 (i386) (Linux)
- - PowerPC (Linux)
- - SUN Sparcs (Linux)
- It should run on other Linux hardware as well, if you manage to
- run it on any other platform (or you have prolems) please contact
- me.
-
- New Features (3.0++):
- ---------------------
-
- o Easy to use GUI (gtk+)
- o No more commandline switches - settings are now configurable via
- the options dialog and saved on exit.
- o Better mouse handling (now requires DGA)
- o Support for other (XInput) devices
- o (If enabled) Support for .mp3, .wav, .au, .iff, .smp, .cdr ....
- o Improved visual feedback for better scratching.
- o Mouse-button support ;)
- o Mouse Y-axis support (see Options)
- o Time-display
- o Heavily enhanced audio-rendering engine. It is now 100% click free.
- (Btw: if you hear clicks these may result either:
- - from a buffer underrun -> enlarge audio buffersize (Options)
- - from "dirty" samples (either loop or scratch)
- - from importing audiofiles with a samplerate != 44.1 kHz)
- o You can now mute the scratch (try <M>, <STRG>, right mouse button
- or (different!) <ALT>)
+ NOTE: I decided to remove the old ridiculous feature list and replace
+ it by a shorter version.
+ - Scratching ;)
+ - Multiple turntables
+ - Builtin Sequencer
+ - Pitch / Volume settings for each turntable
+ - Effects (Lowpass/Echo) configurable for each turntable
+ - Syncing tables to one master turntable
+ - Broad audiofile-type support through the use of sox and mpg123
+ - Recording (straight to disk now)
+ - Save turntable sets (.tX - files)
+ - and more
4. Requirements:
----------------
- o A Linux system with gcc/egcs and X-Windows installed.
-
- You now need pthreads (alias LinuxThreads an implementation of POSIX
- threads) and a threadsafe libc: glibc2(++) as terminatorX is
- multithreaded again (Hi, Andy ;))
+ - Software:
+ ---------
+ required:
+ o Linux (>= 2.0)
+ o glibc2 (pthreads)
+ o XFree86 (with DGA DirectMouse support)
+ o gtk+ (>= 1.2.0)
+ o a compiler (gcc)
+ optional:
+ o XFree86 >= 3.3.3.1 to support other XInput devices
+ o sox for enhanced audio file support
+ o mpg123 for mp3 support
- For the GUI you now need: gtk+ >= 1.2.0
-
- If you want to use other devices than your main X-Pointer
- you proabably need: XFree86 >= 3.3.3.1
-
- For enhanced audiofile support you need sox (and mpg123 for mp3s)
-
- o A soundcard that's supported either by OSS our ALSA.
- o A good clean mouse and pad, a good X-Pointer setup. see the mouse
- section on the homepage.
-
-Notes: On performance the only thing I can say is this: it runs fine on my
- P(I)233MMX with 98MB of RAM. On slower machines you might have to
- enlarge the kernel-level audio buffer (see Options). Nobody ever
- told me it didn't run (due to cpu-power) so if you think your machine's
- to slow please tell me so I can specify machines to slow...
-
-NEW: Since Version 3.2 tX contains a lowpass filter which seems to eat quite
- some CPU power. So a bigger machine wont hurt, I guess a 200MMX is sort
- of the lower limit. Maybe I'll find ways to accelerate that stuff for
- future versions...
+ - Hardware:
+ ---------
+ o A OSS compatible soundcard.
+ o A good clean mouse and pad, a good X-Pointer setup.
+
+NOTE on performance: tX is known to run pretty smooth on "current" PCs
+ (200MHz++). If you experience problems take a look at the config
+ options section in INSTALL.
5. Installation:
----------------
For GNU-standards' sake this information is now located in the INSTALL file
-that came with your distribution of terminatorX.
+that came with this distribution of terminatorX.
6. Operation:
-------------
-This chapter was heavily cut as terminatorX now has a very easy to handle
-GUI. This GUI btw features tooltips, so if you want to know what a button/slider
-is about leave your mouse above that widget for a second or two and a short
-explanation will pop up.
+Since V3.5 terminatorX has separated GUIs for main operation and the turntable
+settings and therefore I'll (try to ;) explain these in different sections.
-Still if you're new to terminatorX (and not familiar with 3.0+) you should
-read the following.
+6.1 The Master GUI
+------------------
-About Scratching:
+The controls of the master gui are located in the top and the right bar of the
+terminatorX main window.
-At first you have to select the operation Mode:
+- Audio Engine Power / Mouse Grab
+With the Audio Engine Button you can en- and disable the audio playback
+engine without activating the sequencer. Unlike earlier versions you will
+not automatically enter mouse-grab mode so you can modify volume/pitch/echo
+settings etc. while you actually hear what you do. Some functions are not
+available when the audio engine is on, their controls will be marked insensitive
+when you enable the engine. To actually enter grab mode you'll have to click on
+the "Mouse Grab" button. See the "Grab Mode Operation" section to find out how
+to control the software then.
-- Free Scratch:
- This Mode enables scratching. The scratching is not recorded and therefore
- the playback will only stop if you hit either the middle mouse button
- or <ESC> ("Escape").
-
-- Record Scratch:
- This Mode enables scratching. The scratching will be recorded into the
- record buffer. Playback either stops when the record buffer is full or you
- pressed one of buttons described above.
-
-- Playback Scratch:
- This mode disables scratching. For now your mouse will be locked anyway.
- In this mode terminatorX will playback the record buffer. Playback will
- either stop when all of the recorded data was played back or you pressed
- on of the buttons described above.
-
-If you have a scratch-file (== a file to scratch on) loaded and maybe a loop
-as well you can hit the "Start" button to start Playback.
-
-Both samples (scratch and loop) will playback at normal speed. To actually
-scratch you will have to keep either <SPACE> or left mouse button. Now the
-scratch sample is played back at the same speed you move your mouse -> you
-scratch ;). If you want to temporarily mute the scratch-sample press either,
-<M>, right mouse button or <CTRL>. You can also use <ALT> but the "meaning"
-of this key is inverted:
- - ALT pressed -> scratch NOT muted.
- - ALT released -> scratch muted.
-This is of course not true when playback starts. The scratch will be unmuted
-then. Why there are multiple ways of muting? So you can use whatever you
-prefer.
-
-If you want to "move" through the sample a little faster you can keep <F>
-(alias fast) pressed to accelerate by factor 10.
-
-To stop playback you either press middle mouse button, <ESC> or (for
-compability with old versions) <RETURN>.
-
-Recorded scratches can be saved with one of the four "save"-buttons on the
-right side of terminatorX's main window. "Fast" means you wont have to enter
-a filename, terminatorX will generate the name from the prefix you set (if
-not default is "tX_scratch") in the Options dialog. "(mix)" means the saved
-file will contain your scratch mixed with the loop file at the currently
-selected ratio.
-
-NEW: Since version 3.2 terminatorX comes with an additonal resonating lowpass
-filter. If enabled this effect will be applied to the scratch-signal. The
-resonance parameter can be set with the slider underneath the "LP Filter"
-on/off button. The other parameter (cutoff frequency) can be modified in
-realtime while scratching. Depending on what mouse-axis you chose for scratching
-the other axis will be used for modifying the cutoff frequency of the lowpass
-filter. Now if you think this sounds somewhat complicated, simply run
-terminatorX, enable "LP Filter" and set the resonance-factor close to the max
-(~ pretty far to the right) and move your mouse up and down (or from left )
-while scratching and hear what happens...
-
-Althoug tX is trying to adjust the input volume according to the resonance
-factor, you might get clipping with high resonance values and samples that
-contain loud high-frequent parts. The only way to get around this for now is to
-reduce resonance.
+- Record (Audio Engine)
+To enable recording you have to enable the "Record"-toggle button BEFORE you
+start the audio engine. You will be prompted for a filename after enabling the
+button. Audio will then be recorded to that file in RIFF/WAV format from the
+moment you turn the audio engine on until you turn it off again. Please be aware
+of the fact that recording audio requires A LOT of harddisk space!
+
+- Sequencer Play / Record / Stop
+Please Read 6.5 to find out more about the sequencer.
+
+- Master Volume / Pitch
+The volume and pitch settings of the individual turntables are relative to these
+master settings. This information will be stored within the .tX set files.
+
+- Add Turntable
+Oh well, it says it all: adds a (new) turntable to the current set.
+
+- Save Set
+With this button you can save your current set and all related settings to a
+.tX set file. Note that the audiofiles themselves will not be stored within
+these files but only references to them. Therefore on loading the set the
+audiofiles have to be at the same location in the filesystem as they were when
+putting that set together.
+
+- Load Set
+Loads a previously saved set (see above). The current set will be destroyed!
+
+- Hide Gui
+If you have a lot of turntables you may find all the panels disturbing in
+grab mode. Therefore you can hide these by clicking on "Hide Gui".
+
+- Options
+Displays the options dialog. See section 7 (Options/Configuration)
+
+- About/Legal
+Displays a dialog with some info about the prog and the binary itself plus
+the good old GPL.
+
+- Quit
+No comment.
+
+6.2 The Turntable GUI
+---------------------
+
+The turntable GUI contains multiple controls and the realtime displays for each
+turntable.
+
+6.2.1 The Main Panel
+--------------------
+
+With the text entry widget you can setup a name for the turntable. "Delete"
+removes the turntable from the current set. The button beneath these two holds
+the name of the currently loaded audiofile. On creation it will hold "NONE". To
+load an audiofile click that button. Volume and Pitch... oh well ;)
+
+"Edit" will run the soundfile editor you configured in the Options-dialog with
+the soundfile loaded into the turntable as parameter. After editing the file you
+can make terminatorX reload the file by clicking the "Reload" button.
+
+6.2.2 The Trigger Panel
+-----------------------
+
+"Trigger!" actually triggers that turntable right now -> it will start playing
+immediately if the audio engine is turned on. Stop will stop playback (of this
+turntable) of course. Autotrigger will cause the turntable to be triggered
+whenever you turn on the audio engine. Loop en- or disables the looping of that
+turntable.
+
+6.2.2.1 Syncing Turntables
+--------------------------
+
+Let's start off with an example: Say you have two drumloops and one bassline
+loaded in three turntables. Of course you want these samples to be triggered
+at the same time but you don't want to invest time to cut them to the exact
+length. Therefore you decide which of the drumloops to make the sync master.
+You'll have to do this before you enable the audio engine (for now). Only one
+turntable can be the sync master. Now you can make the other two sync clients
+which will cause them to be (re-)triggered whenever the master is
+(re-)triggered. The number you can select to the right of the "Sync Client"
+button sets the trigger delay for the button: if it's set to zero the turntable
+will be triggered with every master trigger, if it's set to 1 it'll be triggered
+every 2nd master trigger and so on.
+
+A nice side effect of this feature is: you can now scratch the second (sync
+client) drum loop and no matter whether you're scratching is good or not the
+beat will be triggered correctly again ;)
+
+
+6.2.3 The X- and Y-Control Panels
+---------------------------------
+
+With these panels you can select which mouse axis (X = left to right, Y= up
+and down) controls which realtime parameter. Possible choices are
+o Scratching
+o Volume
+o Cutoff frequency for the lowpass filter
+o Feedback value for the echo
+o Nothing
+
+6.2.4 The Lowpass Panel
+-----------------------
+
+This panel contians the controls for the resonating lowpass filter. The
+"Resonance" and "Frequency" parameters control the actual filter and "Input
+Gain" enables you to preamp the signal in case the filter eats too much
+volume.
+
+6.2.5 The Echo Panel
+--------------------
+
+Here you can en- and disable the echo-effect and set "Duration" and "Feedback"
+parameters. The duration parameter scales to the actual sample length: so if you
+set it to 0.5 you will hear the echo when the red playback cursor is half way
+through the sample. This is true for samples that are shorter than
+terminatorX' maximum echo buffer size only.
+
+6.3 Grab Mode Operation
+-----------------------
+
+After pressing "Mouse Grab" terminatorX enters "grab mode". This mode actually
+locks the mouse (as this input is now used to control the realtime parameters)
+and therefore you'll have to know some mouse/keyboard shortcuts to control
+the software without the GUI:
+
+Press <ESC> to quit grab mode.
+
+Select the turntable with input focus:
+The first turntable to hold the input focus will be the first turntable. You
+can now use <TAB> or right mouse button to switch to the next turntable.
+Alternativley you can use <F1> to <F12> to select turtntable 1 to 12.
+
+Now the turntable that has the focus is the one you will manipulate with your
+mouse and keyboard inputs: Note that you can actually map different functions
+to the mouse x/y axis - so what actually happens when you move your mouse
+depends on what you select on the x/y control panels for each turntable.
+
+Keyboard:
+<TAB> select next turntable
+<F1> to <F12> select turntable 1 to 12
+<RETURN> triggers the turntable
+<BACSPACE> stops the turntable
+<S> toggles "Sync Client"
+<SPACE> while pressed turntable speed is mapped to mouse speed
+ (scratching!)
+<ALT> mute on/off
+<CTRL> mute on/off (inverted)
+<F> (> "fast") warp mode (while scratching)
+<W> same as above but the audio will be muted while warping
+
+Mouse:
+left button same as <SPACE> -> scratching (triggers the turntable when
+ stopped)
+right button select next turntable
+middle button mute on/off
+
+Scratching works as before: press <SPACE> or left mouse button to actually
+scratch -> now your mouse controls the turntables speed -> release <SPACE>
+to let that turntable spin at default speed again.
+
+6.4 Drag And Drop
+-----------------
+
+Since V3.55 terminatorX provides multiple DND-Drop-Targets for use with GNOME/
+gmc (gmc is the GNU Midnight Commander). You can now load an audiofile into
+an existing turntable by dragging an audiofile from a gmc-window and drop it
+over a. the "file"-button (on the "main"-panel) or b. (the easier target ;)
+over the wavdisplay (the green on black widget that displays the audiodata).
+To add a file set (== to load the file into a *new* turntable) simply drop the
+audiofile over the "New Turntable" Button. To load a complete terminatorX-set
+simply drop the setfile (*.tX) over the "Load Set" button. DND does not work
+with KDE.
+
+6.5 The Sequencer
+-----------------
+
+Release 3.60 introduces the sequencer. It can record and play back events for
+the following parameters:
+
+Master volume & pitch, scratching, (turntable) volume & pitch, triggers,
+loop (on/off), sync client settings, muting and all lowpass and echo paramters.
+
+To record events simply press the Record button of the sequencer, then press
+the Play button. All actions (for sequencable parameters - see above) you now
+take will be recorded into the song list. Press the Stop and Play again to
+see/hear how terminatorX plays back the events recorded before. You can now
+record events again for e.g. another turntable or record other parameters for
+the same turntable - whatever you want to do. Recording events for parameters
+for wich events have been recorded before will result in dubbing: if you touch
+a parameter while recording, events previously recorded will be erased from the
+moment you touch the paramater until you stop recording.
+
+When recording long sequences/songs you can use the sequencer-scale to start
+recording/playback from any song-position you want. To record a single
+paramteter value at a certain position simply move the sequencer-scale to that
+position, press Record, set the parameter and press Stop again.
+
+There is no other the way to edit the sequencer events currently, but future
+releases may feature an event-list editor.
7. Options/Configuration
------------------------
All configuration business now happens in the Options-dialog. The features
-that are not completely self-explaining do have tooltips. So in this document
+that are not completely self-explaining do have tooltips. So in this README
I will discuss the buffer settings and the sense-cycles-option only.
A word on the settings in general: your settings are stored in the file
-~/.terminatorXrc.bin so if you think you completely messed up your settings
+~/.terminatorX3rc.bin so if you think you completely messed up your settings
you will have to exit terminatorX - delete this file - and then re-run
terminatorX with the default settings.
to be. So if you here "clicks", or "drops" in audio output that are not related
to your sample-material you will have to increase the buffer size. On the
other hand if you believe terminatorX does not react fast enought you have to
-decrease this parameter. The default value is 9. IMHO I'd say 8 is close to
-perfect but this value causes clicks on my machine already (I still use 8
-though ;) ).
+decrease this parameter. The default value is 8, but as my machine handles 7
+nicely (with --enhance-scheduler and root privileges) I use 7.
Between rendering and outputing these blocks terminatorX checks for mouse
motion. The problem with mice is: they don´t report when they have stopped.
the audio ouput while scratching after you decreased the buffersize you might
have to increase the stop-sense value too.
+Xinput Device: WARNING: Use this option *only* if you want to use an input
+device other than your default-mouse for scratching. Selecting your default
+pointer will cause terminatorX to crash. See the "Using a turntable" section
+on the terminatorX homepage for details.
+
+With "Update Idle" / "Update Delay" you can configure GUI resposivness: Higher
+"Update Idle" will cause the wav-display (position display) and flash-widgets
+to update less often. Higher "Update Delay" values will cause the parameter
+widgets to update less often.
+
+You can now enter the soundfile editor of your choice in the "Soundfile editor"
+field. This editor will be started when clicking the "Edit"-button in the
+main panel of the vtt-gui. If you enter for example "myeditor" terminatorX will
+run "myeditor sample_in_vtt.wav".
+
8. Further notes:
-----------------
You can find more on terminatorX operation and especially the mouse
-configuration on the terminatorX homepage: http://termX.cjb.net
+configuration on the terminatorX homepage: http://www.terminatorX.cx
9. Contact/Homepage:
--------------------
-terminatorX's homepage: http://termX.cjb.net
+terminatorX's homepage: http://www.terminatorX.cx
-If you wan't to send me comments, bug-reports, patches or scratches (see
-the users' scratches section on the terminatorX homepage) send a me
-an eMail to alkoit00@fht-esslingen.de
+send comments, bug-reports, patches or scratches (see scratches section on the
+terminatorX homepage) to: alkoit00@fht-esslingen.de
--- /dev/null
+terminatorX - README.GNOME
+--------------------------
+
+Ok, just some words about the gnome-support directory. For GNOME-Drag And Drop
+support see the main README.
+
+If you want to install the ".tX"-set mimetype and the icons take a look at the
+tx-gnome-install script. The paths should work for RedHat systems, for other
+distributions you might have to adjust the paths (and maybe the mime-files).
+Then run the script as root and open a directory with gmc that contains .tX
+files.
+
+If the installation was successful the tX-set files should have a well known
+turntable as their icon and a double click on that should result in terminatorX
+opening that set. Installation can be undone with tx-gnome-uninstall.
+
+Doubleclicking on tX-set files will work only when terminatorX is installed
+somewhere in your PATH.
--- /dev/null
+There are several things you can do to improve terminatorX performance:
+
+1. Don't use gtk+-pixmap-themes
+2. Compile an optimized binary
+3. Optimize your terminatorX setup
+4. Optimize your kernel
+
+In Detail:
+
+1. Don't use gtk+-pixmap-themes
+-------------------------------
+
+The sequencer brings a lot of additional GUI activity. Now the "selfmade"
+widgets perform pretty good (no matter what theme you use) but for example
+scale widgets are extremly slow with pixmap-themes. The problem is that the
+gtk-pixmap engine has to stretch the images and stretching images is a very
+CPU-intensive task. So it's best to not use those themes at all.
+
+2. Compile an optimized binary
+------------------------------
+
+This issue is covered in the INSTALL file mostly. If your machine can handle
+3DNow! instruction be sure to use 3DNow! (--enable-3dnow) - since V3.6 this
+brings ~20% more performance increase. And setting good optimization flags is
+a good idea, too (see INSTALL).
+
+3. Optimize your terminatorX setup
+----------------------------------
+
+The default settings for the GUI updates provide good realtime feedback. This
+may cause problems on slower machines or evil gtk+-themes. If the GUI-thread
+causes dropouts in the audio-engine you should increase the Update-Delay value
+in the options dialog.
+
+4. Optimize your kernel
+-----------------------
+
+The current 2.2.X-kernels show a pretty high latency. This is problematic for
+near-realtime apps and therefore most linux-audio-apps. Ingo Molnar is
+maintaining a patch against the 2.2.x kernels that reduces latency. They are
+called "low-latency-patches" and are available from:
+http://people.redhat.com/mingo/lowlatency-patches/
I'd like to thank:
- All authors of: the GNU tools and libraries, the Linux kernel, XFree86,
- sox, mpg123, the wav-tools, gtk+ and TCP/IP.
+ sox, mpg123, the wav-tools, gtk+ and TCP/IP.
+ It's obvious but: without their work there'd be no tX
- All contributors (see AUTHORS)
(checkout: http://www-stud.fht-esslingen.de/luges/doc/gpl.html)
- Paul Kellett <paul.kellett@maxim.abel.co.uk> for his lowpass filter published
- in reso_lop.txt.
+ in reso_lop.txt
(checkout: http://www.abel.co.uk/~maxim/)
+- Benno Senoner <sbenno@gardena.net> for his mmap() patch, all the low
+ latency kernel work and tips
+ (checkout: http://www.gardena.net/benno/linux/audio/)
+
+- Michael Kahl <m.kahl@student.hu-berlin.de> for the cool MK II icon
+
+- Robert Dale <rob@nb.net> for makeing his already gone 3DNow!-Header
+ temporarily available again
+
+- Scott C. Knight <scknight@indiana.edu> for helping me to get this thing
+ running on big endian machines again.
+
- Everybody who contributed scratches...
+- The LAD people for all the help and support
+
- The real Terminator X
terminatorX TODO:
These are the things I´d like to implement IF I have the time.
-The position of an idea in this list represents it´s priority:
-- add a marker feature: this will allow you to set 12 markers visually
- in the wavfile-display. These will be available via the F1-F12 keys in
- NORMAL and RECORD mode. If you press (and hold) one of these keys it will
- have the same effect as pressing space but if you release it it will
- jump to the position you marked in the wavfile. Easier scratching for people
- like me who don´t have any scratching skills.
+- MIDI interface
+
+- stereo operation
+
+- support for LADSPA plugins
+
+- port Bennos mmap technology into the new code
+
+- more precise syncing
+
+- a click filter for client triggers
+
+- create a fixed gtk+ theme for terminatorX
- code cleanup: I guess this will be on this list until development has stalled.
The following stuff has been on the list above and is now ipmlemented:
+[V3.6]
+
+- sequencer is here :)
+
[V3.0]
- Enhance audio quality with -DHANDLE_STOP -> no clicks.
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/tX_global.h)
-AM_INIT_AUTOMAKE(terminatorX,3.5)
+AM_INIT_AUTOMAKE(terminatorX,3.65)
AM_CONFIG_HEADER(config.h)
-AC_ARG_ENABLE(closedev, [ --enable-closedev close audio device if not in use. [default=yes] ])
-dnl AC_ARG_ENABLE(soxinput, [ --enable-soxinput use sox as input converter. [default=no] ])
-dnl AC_ARG_ENABLE(mpg123input, [ --enable-mpg123input use mpg123 as input converter. [default=no] ])
-AC_ARG_ENABLE(wavonly, [ --enable-wavonly enable the builtin wav routines. (no sox/mpg123) ])
-AC_ARG_ENABLE(scheduler,[ --enable-scheduler enable rt-scheduling (req. root-priv). [default=no] ])
+dnl AC_ARG_ENABLE(closedev, [ --enable-closedev close audio device if not in use. [default=yes] ])
+AC_ARG_ENABLE(sox, [ --enable-sox use sox as input converter. [default=yes] ])
+AC_ARG_ENABLE(mpg123, [ --enable-mpg123 use mpg123 as input converter. [default=yes] ])
+dnl AC_ARG_ENABLE(wavonly, [ --enable-wavonly enable the builtin wav routines. (no sox/mpg123) ])
+AC_ARG_ENABLE(scheduler,[ --enable-scheduler enable rt-scheduling (req. root-priv). [default=yes] ])
AC_ARG_ENABLE(debug, [ --enable-debug enable debug output. [default=no] ])
AC_ARG_ENABLE(flash, [ --enable-flash enable flashes. [default=yes] ])
AC_ARG_ENABLE(3dnow, [ --enable-3dnow enables 3DNow! support. [default=no] ])
-AC_ARG_ENABLE(benchmark,[ --enable-benchmark creates a non-functional test version [default=no] ])
+dnl AC_ARG_ENABLE(benchmark,[ --enable-benchmark creates a non-functional test version [default=no] ])
+AC_ARG_ENABLE(wav, [ --enable-wav enables the builtin wav-loader [default=yes] ])
+AC_ARG_ENABLE(dial, [ --enable-dial use dials instead of scales for effects [default=yes] ])
+AC_ARG_ENABLE(bigdial, [ --enable-bigdial use BIG dials [default=yes] ])
+dnl AC_ARG_ENABLE(dga2, [ --enable-dga2 use DGA2 instead of DGA1. (experimental) [default=no] ])
dnl Checks for programs.
AC_PROG_AWK
AC_CHECK_LIB(m, floor,, AC_MSG_ERROR([** math-lib not installed or broken **]))
AC_CHECK_LIB(pthread, pthread_mutex_lock,, AC_MSG_ERROR([** POSIX threads not installed or broken **]))
AM_PATH_GTK(1.2.0, , AC_MSG_ERROR([** GTK 1.2.0 not installed or broken **]))
-AM_PATH_GLIB(1.2.0, , AC_MSG_ERROR([** GLIB 1.2.0 not installed or broken **]))
+dnl AM_PATH_GLIB(1.2.0, , AC_MSG_ERROR([** GLIB 1.2.0 not installed or broken **]))
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/ioctl.h unistd.h)
+AC_CHECK_HEADERS(ladspa.h,, AC_MSG_ERROR([** couldn't find ladspa.h - get it from http://www.ladspa.org **]))
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_BIGENDIAN
AC_PROG_GCC_TRADITIONAL
dnl Eval args
-if test "$enable_closedev" == "no"; then
+if test "$enable_closedev" = "no"; then
AC_DEFINE(KEEP_DEV_OPEN)
fi
-if test "$enable_wavonly" != "yes"; then
+
+if test "$enable_sox" != "no"; then
AC_CHECK_PROG(SOX_PROG, sox, yes)
- if test "$SOX_PROG" == "yes"; then
+ if test "$SOX_PROG" = "yes"; then
AC_DEFINE(USE_SOX_INPUT)
- AC_CHECK_PROG(MPG123_PROG, mpg123, yes)
- if test "$MPG123_PROG" == "yes"; then
- AC_DEFINE(USE_MPG123_INPUT)
- fi
fi
fi
-dnl if test "$enable_mpg123input" == "yes"; then
-dnl AC_CHECK_PROG(MPG123_PROG, mpg123, yes)
-dnl AC_DEFINE(USE_MPG123_INPUT)
-dnl AC_CHECK_PROG(SOX_PROG, sox, yes)
-dnl AC_DEFINE(USE_SOX_INPUT)
-dnl fi
+if test "$enable_mpg123" != "no"; then
+ AC_CHECK_PROG(MPG123_PROG, mpg123, yes)
+ if test "$MPG123_PROG" = "yes"; then
+ AC_DEFINE(USE_MPG123_INPUT)
+ fi
+fi
-dnl if test "$enable_soxinput" == "yes"; then
-dnl AC_CHECK_PROG(SOX_PROG, sox, yes)
-dnl AC_DEFINE(USE_SOX_INPUT)
-dnl fi
+if test "$enable_wav" != "no";
+then
+ AC_DEFINE(USE_BUILTIN_WAV)
+fi
-if test "$enable_flash" == "no"; then
+if test "$enable_flash" = "no"; then
AC_DEFINE(DONT_USE_FLASH)
fi
-if test "$enable_3dnow" == "yes"; then
+if test "$enable_3dnow" = "yes"; then
AC_DEFINE(USE_3DNOW)
fi
-if test "$enable_scheduler" == "yes"; then
+if test "$enable_scheduler" != "no"; then
AC_DEFINE(USE_SCHEDULER)
fi
-if test "$enable_debug" == yes; then
+if test "$enable_debug" = yes; then
AC_DEFINE(ENABLE_DEBUG_OUTPUT)
fi
-if test "$enable_benchmark" == yes; then
+if test "$enable_benchmark" = yes; then
AC_DEFINE(CREATE_BENCHMARK)
fi
+AC_MSG_CHECKING(whether to use dials)
+if test "$enable_dial" = no; then
+ AC_MSG_RESULT(no)
+else
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(USE_DIAL)
+fi
+
+if test "$enable_bigdial" = yes; then
+ AC_DEFINE(USE_DIAL)
+ AC_DEFINE(USE_BIG_BUTTONS)
+fi
+
+if test "$enable_dga2" = yes; then
+ AC_DEFINE(USE_DGA2)
+fi
+
dnl Now Check for Xlibs - I do this here as other tests fail if these run earlier
AC_PATH_XTRA
AC_CHECK_LIB(Xext, XShmQueryExtension,, AC_MSG_ERROR([** Xext-libs not installed or broken **]), $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
AC_CHECK_LIB(Xi, XOpenDevice,, AC_MSG_ERROR([** XInput not installed or broken **]), $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension,, AC_MSG_ERROR([** DGA not installed or broken **]), $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
-
-AC_OUTPUT(Makefile src/Makefile)
+if test "$enable_dga2" = yes; then
+ AC_CHECK_LIB(Xxf86dga, XDGASelectInput,, AC_MSG_ERROR([** DGA2 not installed. Try using dga1 instead. **]), $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
+fi
+AC_OUTPUT(Makefile src/Makefile gnome-support/Makefile src/gui_icons/Makefile src/smallknob/Makefile)