terminatorX
menu
main
- main -
- download
- screenshots
- changelog
- bugs
- faq
- docs
- scratches
- turntables
- aseqjoy
- links
Welcome to the terminatorX website!
Bookmark this site as terminatorX.org. It's located on 42.fht-esslingen.de

For those of you who drop by for the first time: terminatorX is a realtime audio synthesizer that allows you to "scratch" on digitally sampled audio data (*.wav, *.au, *.ogg, *.mp3, etc.) the way hiphop-DJs scratch on vinyl records. It features multiple turntables, realtime effects (buit-in as well as LADSPA plugin effects), a sequencer and MIDI interface - all accessible through an easy-to-use gtk+ GUI. This software is designed to run under Linux, FreeBSD and the like. If you have more questions read the FAQ, Manual, Tutorial, License and if you have further questions, suggestions, patches, scratches send me a mail

new: terminatorX V3.82 available and fresh turntables [November 3rd]

deco image Some fresh code finally! Here's what's new with this release:

  • Support for stereo LADSPA plugins. Each turntable now features a stereo effect queue that follows the mono queue. Click the "Stereo FX" button to add stereo plugins to a turntable's effect queue.

  • Every plugin can now have an extra Dry/Wet control if required. Click on a plugin's label to add or remove the control.

  • You can now map MIDI controllers reverse: this introduces the possibilty to map a MIDI controller as a crossfader for two (or more) turntables.

  • Adam King contributed a patch that adds simpler minimization for control panels and a fix for a sequencer menu crash.

  • This release supports the gtk+ filechooser where available.

  • All VU meters now display the stereo signal.

  • For security reasons the old suid-root method has gone - the POSIX capabilties-based method remains available as it's currently believed to be secure.

  • From the unnecessary-eye-candy dept.: this release features new icons I've drawn with the cool inkscape and a new control knob I've created with the wonderful povray. And of course I've used the Gimp all over the place. All images should now blend smoothly with your theme's background.

For more details check the ChangeLog. As usual I've verified this release to build with all gcc releases from 2.95 to 3.4, it fixes a a whole lot of bugs and it's available from the download section.

Additionally I finally managed to add two new turntables to the turntable gallery. Bob's turntable is based on a new belt-driven approach while Adam's turntable is interesting from the inside as well as the outside.

new: terminatorX V3.81 available [August 22]

The new release introduces the following features:

  • I've added a new audio back-end for the JACK Audio Connection Kit. To make use of it the JACK Daemon has to run before starting terminatorX.

    Note: JACK seems to lockup when clients run with realtime scheduling (SCHED_FIFO) - terminatorX can work around this when running with capabilities, but not with the old --enable-suidroot mode - so don't enable it when you want to use the JACK back-end. Reniceing via libjack works fine btw (see this JACK FAQ entry).

  • A new Parameter Menu: simply right-click on the parameter of your choice and set the MIDI mappings, bounds or delete events.

screenshot
Parameter Menu

  • The new MIDI Bounds let you modify the range within which a MIDI controller can effect a certain parameter.

  • The new MIDI Learn mode provides a much simpler method of mapping MIDI events than the "regular" MIDI mappings dialog.

  • terminatorX now tries to reconnect to previously connected MIDI devices on startup. Might only work with hardware devices (and can therefor be disabled).

  • I finally got sick of green: you can now adjust the colors of terminatorX' own widgets (audio signal display and vu meters).

  • You can now erase events from the sequencer for either a complete turntable or a specific parameter for either the complete song or from or upto the current song position.

  • There's a new Confirm Recorded Events mode that allows you to discard a take if you're not satisfied with it.

  • Support for Linux' POSIX capabilities implementation brings a new, possibly safer way of running terminatorX suid-root to achieve realtime scheduling (see the yet again updated FAQ entry).

  • There's a new Default MIDI Mapping for the standard parameters, so you don't have to create too many mappings yourself (if the default map suits your needs of course). The defaults are documented in the terminatorX manual.

Additonally this release fixes a lot of bugs:

  • Fixed the problems that where found with the old suid-root approach. However there could be other ways to exploit this, so I recommend using the new capabilities based approach instead - if you really want to run terminatorX suid-root. If you want to use the old approach you'll have to run configure with --enable-suidroot.

  • compiles with gcc flavours from 2.95 to 3.3.1 (tested)

  • setting Sync Client via MIDI now works

  • lots of code cleanups, now compiles with G*_DISABLE_DEPRECATED macros enabled.

  • fixed restoring of master volume setting

  • introduced a workaround for Bug #4, so if the ALSA back-end segfaults for you, check you have "Free HW Stats" disabled.

  • corrected clearing of events for the master parameters

  • fixed a FreeBSD issue with the configure script.

OK, I hope this release works for you, if you want to check it out grab it from the download section.

new: Updates, 3.81 on the way [August 05]

As shown in this bugtraq post by Andrew Griffiths installing terminatorX suid root is exploitable. Although you had been warned before, I decided to change my recommendation. To make bug tracking easier in the future I've setup a bugzilla for terminatorX.

Additionally the website now features a new links section.

Arthur Moore is a "twentieth-century" composer who is using terminatorX for his compositions. I've added three of his compositions to the user's scratches section to find out more about the author and his music check out his site.

The kind people of Sónar invited me to do a demonstration at this year's festival. As a side effect I was actually forced to use terminatorX, so I found and fixed quite some annoying bugs with the upcoming 3.81 release. Additionally it will feature MIDI and sequencer improvements and a JACK back-end.

new: terminatorX 3.80 and aseqjoy 0.0.1 [April 18]

This terminatorX release does a very good job at extinguishing points from my TODO-for-4.0 list. Among other things this release introduces:

  • Finally terminatorX has a native ALSA back-end. See the new Preferences dialog and the online manual for details. The ALSA and the OSS back-ends now both support operating at an arbitrary sampling rate.

screenshot
Scrolling audio data, a menu bar and even less space consumption for small displays.

  • The audio data display is now zoomable. This helps scratching large audio files (like complete songs) significantly. Use the slider on the right of the display area to adjust the zoom level. When playing the audio data will scroll in such a manner that the current position is always centered.

    To optimize playback performance terminatorX does a lot of "zoom" calculations in advance - so adjusting the slider will cause quite some amount of recalculation on large audio files. The focused turntable now has a blue background and a yellow audio signal instead of the old red border.

  • A MIDI interface thanks to a patch by Arthur Peters. The MIDI interface is based upon the ALSA sequencer API, so you'll have to connect terminatorX' input port to an output port of your choice with either aconnect or for example the alsa-patch-bay. To map a MIDI controller or note events to a turntable's parameter click the MIDI Mapping button.

    In order to test the new interface I hacked a little tool called aseqjoy that emits MIDI controller messages based on Joystick motion.

  • I finally untied audio rendering and audio back-end. terminatorX now operates at a fixed internal block size of 1 ms. So now it doesn't matter anymore with which block size events were recorded - they will be played back correctly with any audio device block size.

    Note that a minor problem remains: the sampling rate has an effect on the block size, too. While there is no problem switching from 22 or 32 kHz to 48 kHz, there will be a slight rounding error switching from or to 44.1 kHz. So if you record and playback events I suggest you keep the sampling rate the same, or use "straight" sampling rates like 22, 32 and 48 kHz only.

  • I added a little pitch calculator that allows adjusting the playback speed of a turntable to that of the master turntable so it is very easy to synchronize (precisely cut) loops now. Note that this feature is probably useless with large audio files (like complete songs).

  • Advancing the use of XML: many XML-related bugs have been fixed, and I moved the set file format to XML, too. The MIDI mappings of parameters will be stored within set files, too. As XML set files with a lot of sequencer events can grow quite big tX supports writing gzip compressed set files through the use of zlib.

  • Thanks to a suggestion by Darrick Servis terminatorX no longer clips audio. If the generated amplitude goes beyond the maximum it will simply be cut off.

  • Further cleaning up the layout for small DJ laptop displays: moved some buttons to a menu bar to waste less space. Additionally you can now hit F11 to enter full screen mode - if your window manager supports NETWM.

  • Dropped support for the old gtk+ 1.2 - you have to use gtk+ >= 2.0, now.

This release has seen quite some valgrinding so it should run rather stable and a major memory leak has been fixed, too. Unlike 3.73 this one compiles with gcc > 3.0 with -Wall and -Werror enabled. Well, the version number ends in a zero, which means lots of new code with possibly lots of new and yet undiscovered bugs.

new: terminatorX V3.73 available, Debian inclusion + a tutorial [18 Sep]

Aside of fixing numerous bugs, the new release does have some new features:

  • I ported terminatorX to gtk+ Version 2 so tX should integrate nicely with your GNOME 2 desktop. This release still builds with the old gtk+ 1.2, too, but I don't plan to support it much longer.

  • I reworked the GUI a bit in order to make terminatorX fit better on those small DJ-laptop displays. Audio and control panels can now be minimized to a panel bar to save space - works just like GNOME's window list. The panel bar status is stored within set files and restored upon loading. Additionally the buttons of the audio panel have been restructured. To lighten up the GUI five buttons have been merged into two - on clicking one of these you'll get a popup menu with all previous functionality.

  • After spending an evening with Adrian in front of his big endian system fixing the audio file loading routines, I decided that loading audio files through a pipe is an ugly hack. Therefor I wrote three new audio file loading methods that utilize libraries instead of pipes. These are mad (for mp3 files), libvorbis (for OGG/Vorbis files) and libaudiofile (for wav/aiff/au etc.). Using these routines instead of the old ones brings the following advantages:

    • loading audio files is significantly faster

    • terminatorX now evaluates the sample rate of an audio file and adjusts the turntable's pitch accordingly (this does not affect the regular "pitch" setting BTW)

    • the new routines provide much better visual feedback on the loading progress

    Additionally more file formats are supported, so I strongly recommend installing the libraries mentioned above to improve terminatorX' usability.

  • Slowly approaching terminator XML: the configuration file (now ~/.terminatorXrc) is no longer binary but an XML document. This is necessary to become more flexible in the future - and it allows editing your terminatorX configuration with a text editor - if you want to. Of course, terminatorX now requires libxml to be installed. For convenience this release still reads the old binary con figuration and stores it as an XML document on exit. I plan to move the set file format to XML soon, too.

  • I completely rewrote the tX_engine in order to allow installing terminatorX suid root. This way terminatorX can run with realtime scheduling policy even for unprivileged users. Right after creation of the engine thread terminatorX drops root privileges - so it might even be safe to install terminatorX suid root - but I'll leave that up to security experts to decide. For a more detailed discussion read this FAQ entry.

  • Playing around with the wonderful povray a bit I came up with a new logo for terminatorX. The icons have been replaced, too - the new ones should be easier for your desktop perception.

  • Thanks to Adrian terminatorX now has a manpage.

A lot of bug fixing went into this release, too, most notably:

  • An old clipping bug in the tX_dial widget code has been fixed.

  • This release builds, runs and loads audio files on big endian architectures.

  • terminatorX should now build from scratch not only on Linux but on FreeBSD, too. Thanks to Tilman Linneweh for testing.

  • Many other fixes.

Have a look at the ChangeLog for more details and grab the tarball or the RPMs from the download section.

Aside of the release I'd like to bring to your attention that Mike Furr is now maintainer of the terminatorX Debian package. So if you're a Debian user you may want to apt-get this release - if you install unstable packages at all and when your local mirror has been updated.

For new terminatorX users Brian has created a wonderful step-by-step "terminatorX TOOT" tutorial - reading that will accelerate the creation of your first scratch considerably.


Copyright (C) 1999-2004 by Alexander König Valid HTML 4.01!