Skip to content

djandruczyk/eXtace

Repository files navigation

Extace Waveform Viewer
----------------------

   This is the eXtace Audio signal visualizer.  It plugs itself in as 
   an EsounD monitor and displays the output from Audio passing through 
   EsounD.
   
   eXtace will NOT display the output of a CD playing in your CD/CDRW/DVD
   drive, as the drive does all the decoding and just passes analog audio
   through your soundcards mixer. eXtace requires the raw PCM (Pulse Code 
   Modulation) audio data to give you a display.  There are many apps that 
   can extract the audio data from a CD to be played back in this manner. 
   cdda2wav and paranoia are two main applications that can "rip" audio
   data off of a CD to be piped through Esound so eXtace can "see"
   it.
   
   EsounD is Gnome's sound daemon.  
   eXtace used to support ALSA 0.5x as that version had "loopback" support
   which was dropped in future releases.  Because of this change I was
   forced to remove support for ALSA.  I am looking into other Sound-Servers
   possibly "Jack", from http://jackit.sf.net, or GStreamer. I might even
   support arts if they can get it to stop hogging the CPU...
   
   
Features:
   eXtace has several modes, 3D Wireframe landform FFT, 3D solid landform 
   FFT, 2D Graphic Equalizer, Several scopes (dot, line, gradient), a 
   3D Spike FFT (high resolution) and 2 2D spectrograms, (horizontal 
   and vertical scroll). 

   All modes are fully configurable via the options panel.  Any of the 3D 
   modes can be dragged around the screen by grabbing an end with the 
   mouse (drag using the left button) and moving it anywhere within the window.

   The direction panel will appear when the proper display is running.  This
   works similar to above. Just grab the end of the marker and drag it around 
   and the trace will travel off into space in the same direction as the 
   pointer in the direction window.

   Clicking your middle mouse button on any of the displays brings up a 
   colormap editor to change the colormap eXtace uses.  (For those of you with
   two button mice, try hitting both buttons at once to mimic the middle button)
 
NOTE: Colormap editing does NOT work any longer. It is being redesigned as
of 1/28/2003. Expect future revisions to have it working again.  NOTE you
can always create your own maps as they are all text file "instructions"
for eXtace to build the maps from.

   Clicking within the gradient on the left and then selecting a color on the
   right and clicking "OK" will update the window and the running display.
   Colormaps can be saved and loaded using the Load/Save buttons. An arbritrary
   number of colormaps can be setup.  If you come up with something REALLY cool
   send me the colormap file and I'll include it with the next release. 
   Colormaps are stored in your ~/.eXtace/ColorMaps/ Directory. Their structure
   is extremely simple (and somewhat inflexible), see the source for details.

Compilation instructions:
   You will need Esound and its devel libs installed and working and the FFTW 
   (Fastest FFT in the West) (version 2.x only) library to build and run eXtace.
   The FFTW lib can be found on http://www.fftw.org/. Source and Binary RPMS
   are mirrored on http://extace.souceforge.net/

   Run "./configure" (no quotes). Then "make" and then "make install" as root.
   Every effort has been taken to try and address the various installation
   methods of fftw, but occasionally the configure script fails to locate
   a library or header file properly.  If you run into this problem, email
   me your config.log, the screen output from running ./configure and any 
   options you fed to configure to get it to fail.

   The EsounD daemon 'esd' will need to be running as well. Typically
   the daemon autostarts when an app uses the esd routines. (xmms spawns
   it when you select the Esound Output plugin)

   Currently there are no command line parameters.  An options panel
   is available to tune the speed, and 3D effects.


Performance:
   eXtace was tuned to try and use as little processor as possible. (I have
   not found any other visualizer app that uses as little as eXtace.) 
   NOTE: my system is a Dual Celeron 500, with an NVIDIA GeForce2 running XFree
   4.0.3 and NVIDIAs' binary drivers.  Your system performance may vary...
   I typically see processor usage of around 2-15% for eXtace plus 5-20% for
   X (the X server).  If you run into very high processor usage (over 70%) 
   sometimes it means an OpenGL app has run but the buffers haven't been freed
   causing the X server a lot of overhead. I've found the resizing the window
   forces X to flush some arbritrary buffers and performacne improves, and cpu
   usage goes way down.  (This was demonstrated on earlier versions of the 
   binary NVIDIA X11 driver,  it may have been a bug in the driver... )
   
   Your mileage may vary.  NOTE: The more video RAM your 
   card has, the better. (more ram = more space for pixmap caches and other
   off-screen stuff.)  With less memory backing pixmaps become slower as system
   memory has to be used and overhead increases. 

Testing:   
   The sine.c is an example program to test extace with, just run

	./sine | esdcat				<--- ESOUND

   Turn down your volume though as it may be loud.. :)
   This feeds a sine wave stepped sweep into Esound which you should hear, 
   and see in eXtace.

Misc:
   The scope has an option in the panel to enable/disable the Trace Stabilizer.
   The stabilizer uses a mathematical routine (called a convolution) that 
   is used as a pattern matcher to stabilize the dispay.  Thanks to Ralph 
   Loader for giving me a hand with the code and Andy LaFoe for the code from
   Alsaplayer (One cool mp3/audio player, the only Variable speed one too). 
  
    
   Enjoy!

Dave Andruczyk. <djandruczyk at yahoo dot com>

Based on the orignal extace code written by:
The Rasterman           <raster@redhat.com> 
Michael Fulbright       <msf@redhat.com>