GEISS 2, v1.0 (6/17/03)
  a Winamp audio-visualization plug-in by Ryan Geiss
  copyright (c) 2003 Nullsoft, Inc.
  Geiss 2 Homepage:
  Geiss 2 Support:

Table of Contents
    1. what is Geiss 2?
    2. requirements
    3. installation
    4. tweaking
    5. usage
    6. known issues
    7. using line-in (for live shows, etc.)
    8. other tips; misc. info
    9. version history

What is Geiss 2?
Geiss 2 is a Winamp audio-visualization plug-in that lets you
fly through the sound waves of the music you're listening to.  

2. Requirements
      * Windows 98, ME, 2000, or XP.  (Windows 95 is not supported.)
      * One of the following:
          * Winamp 2.72 or later
          * Winamp 3 with the Classic Visualization Component
      * A processor that supports the MMX instruction set.

      * An 800+ MHz processor 

3. Installation
    Geiss 2 can be installed to Winamp 2 or 3 (or both, but you'd have
    to run the installer twice).  

    To install to Winamp 3, just run the installer as usual.  Then
    launch Winamp 3 and hit CTRL+P to load the Preferences screen.
    Then, on the left, scroll down to 'ClassicVis' and select it.  
    (If you don't see it, you probably need to download the
    Classic Visualization Component).  Now you should see a list 
    of visualization plugins on the right; select Geiss 2, and click 
    'start' to run it.

    To install to Winamp 2, run the installer as usual, but note that
    if you also have Winamp 3 installed, you'll have to manually
    choose the Winamp 2 directory, since it installs to Winamp 3
    by default.  Once the installation is complete, launch Winamp 2 
    and hit CTRL+P to load the Preferences screen.  Select 'visualization' 
    under 'plug-ins' on the left.  Now you should see a list of 
    visualization plugins on the right; select Geiss 2, and click 
    'start' to run it.  In the future, you can use the shortcut key 
    CTRL+SHIFT+K to run Geiss 2, and ALT+K to configure it.

4. Tweaking
    To get Geiss 2 to look its best, you want to maximize the size of
    the internal rendering, while still maintaining a framerate of 30
    frames per second.
    To do this in windowed mode, simply expand the window until you see
    the framerate (F5) drop. 
    In desktop mode, you'll need to adjust the [desktop-mode or fake-
    fullscreen-mode] downsampling value on the second tab of the config 
    screen.  If you're getting 30 fps consistently, try increasing this 
    number further toward 1.  If you're dropping below 30 fps, try 
    decreasing this number.  You can also try switching Windows to 16-
    bit color, or dropping Windows to a lower resolution.
    For [true] fullscreen mode, the most important factor is the display
    mode that you select on the first tab of the config panel.  The
    higher the resolution you select here, the more pixels Geiss 2 has
    to compute every frame, and thus, the slower it will be.  So, again,
    if you're getting 30 fps consistently, try increasing the resolution
    here.  If you're not, decrease it.  
    In fullscreen mode, you can also adjust the 'Vertical Screen Size'
    to add a widescreen look to the plugin.  The lower the % here, the 
    less processing the plugin has to do, and the more likely you are
    to get 30 fps.  Finally, you can also adjust the downsampling for
    fullscreen mode, but the visual quality will be less than if you
    just changed the fullscreen display mode and/or adjusted the
    'vertical screen size'.


    For the smoothest animation, you need to configure Geiss 2
    so that there is no frame skipping.  To do this, the
    monitor's refresh rate must be an integer multiple of the 
    'max framerate' that you allow Geiss 2 to run at.

    For example, if your monitor is running at 75 Hz (meaning that
    it refreshes the image 75 times per second), then you would 
    want to select one of the following values for the 'max 
    framerate' option:

        1, 3, 5, 15, 25, 75

    These values are optimal because they evenly divide into the
    refresh rate of the monitor, and that means that each image
    (frame) that is sent to the video card will be displayed
    for a consistent number of refresh cycles on the monitor.  
    Otherwise, one frame might get shown for 4 refreshes, then
    the next one for just 3, and so on, making for jerky animation.

    Your monitor's refresh rate is configurable, and whatever
    you have it normally set to in Windows is what it will be
    when you go to run Geiss 2 in Windowed or Fake Fullscreen
    modes.  To view or change it, go to Start->Settings->Control
    Panel->Display->Settings tab->Advanced->Monitor tab.

    When you run Geiss 2 in Fullscreen mode, though, the refresh 
    rate changes (along with the display mode) to whatever you 
    selected in the Geiss 2 config panel, in the 'Display Mode' 
    box (in the 'Fullscreen' section).

    Here are the optimal maximum framerates for some other common 
    monitor refresh rates:

       -------   ------------------
        60 Hz     1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60
        66 Hz     1, 2, 3, 6, 11, 22, 33, 66
        70 Hz     1, 2, 5, 7, 10, 14, 35, 70
        72 Hz     1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72
        75 Hz     1, 3, 5, 15, 25, 75
        85 Hz     1, 5, 17, 85
        100 Hz    1, 2, 4, 5, 10, 20, 25, 50, 100
        120 Hz    1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 24, 40, 60, 120

    Note that many LCD flatpanel displays (including laptops) run 
    natively at one refresh rate ONLY - usually 60 Hz - even though 
    the display driver might provide other options besides this.  
    So, if you have an LCD, it's best to keep it running in 60 Hz 
    at ALL times (or whatever its native refresh rate is).

    Finally, another tip for getting smooth animation: minimize
    (or close) any other windows/programs.  Even simple ones that
    don't seem like they'd be interfering can sometimes do very
    naughty things...

5. Usage
    Hit 'F1' while Geiss 2 is running to display a list of 
    accelerator keys.  These will let you display the current
    framerate, change tracks, browse the playlist, control
    the animation, and so on.

    ESC:    exit plugin
    F1:     display help
    F2/F3:  display song title, length            
    F4:     display misc. info
    F5:     display fps                   
    ALT-ENTER or double click: 
            toggle fullscreen

    L:      lock/unlock current map          
    ##:     go to certain map (##=digits)
    SPACE:  randomize map (+shift/ctrl=?)

    p:      randomize color palette      
    P:      lock/unlock color palette
    w/W:    cycle through waves
    o:      toggle waveform on/off            
    j/J:    adjust wave size
    k/K:    adjust wave smoothing

    Q-E-A-S-D-F-G: various effects
    i:      toggle autoshift
    I:      manual shift now
    h/H:    diff now (2 versions)
    t:      embed song title
    y:      toggle dither
    m:      toggle munge
    PGUP/PGDN: adjust decay
    HOME:   decay off
    DEL:    decay now
    END:    toggle beat-driven decay
    INSERT: toggle mouse zooming

    Z/X/C/V/B: prev/play/pause/stop/next
    N:     navigate playlist
    U:     toggle shuffle
    R:     toggle repeat
    up/down arrows: adjust volume
    left/right arrows: seek
    left/right arrows + SHIFT: fast seek

6. Known Issues
    1. When running any card in a 'dualhead' setup that creates a double-width
       (2048x768) or double-height (1024x1536) virtual desktop spanning two
       monitors, if the width or height of the window goes beyond 2048, then
       the you just see black in the part beyond 2048; i.e., the plugin does
       not fill the whole window.

7. Using Line-In
    If you want to use your sound card's Line-In or CD Audio inputs for
    sound data (instead of mp3 files), you can do this; in fact, this
    will work for any viz plugin, not just this one!  Do the following:
        1) CONNECT WIRES
            Connect your audio source (a stereo, a live feed, whatever) into
            the line-in (or microphone) 1/8" (headphone-size) jack on your 
            sound card.  You might want to test & verify that your cable is 
            good before doing this.
            In Windows, double-click the speaker icon in your systray (where
            the clock is).  Then, on the menu, go to Options -> Properties
            and select the "Recording" option.  Then make sure the Line In
            (or Microphone) input channel (whichever is appropriate for
            your case) is SELECTED (with a check mark) and that the volume 
            is close to, or at, the maximum.  Hit OK.           
            Open Winamp, and hit CTRL+L (the "Open Location" hotkey).  Now
            type in "linein://" as the location you want to open.  (Leave out
            the quotes and make sure you use FORWARD slashes.)  Hit PLAY
            ('x' key for the lazy), and the little built-in oscilloscope (or 
            spectrum analyzer) in Winamp should start showing your signal.
            If the signal looks flattish, you might want to double-check the 
            volume from Windows' Volume Control, or adjust the sound level 
            at the (physical) source.
        4) RUN IT
            Run Geiss 2 as usual.  If the waves are too small or large, 
            either adjust the volume from Windows' Volume Control, or adjust
            the sound level at the source.       

8. Other Tips; Misc. Info
    1. A fast CPU, fast memory, and a fast frontside bus are the most
       important components for getting Geiss 2 to run at a high framerate
       at high resolutions.  A fast AGP graphics card helps, too (thanks
       to the increased bandwidth to video memory) but keep in mind that
       Geiss 2 doesn't use any hardware (3D) video features.  Finally,
       Geiss 2 usually runs the fastest (in windowed/desktop/fake fullscreen
       modes) when Windows is in 16-bit color.
    2. Don't set the maximum framerate beyond 30 frames per second; 
       Geiss 2 was designed with that cap in mind, and it will look
       bad if you go beyond it.    

    3. For the best graphics performance, try to close as many other 
       applications as you can, before running the plugin, especially 
       those that tend to work in the background, such as anti-virus 
       software, file-swapping software, e-mail programs, messageing
       programs, and so on.  If you must leave other applications 
       open, try to minimize them (i.e. shrink the window down to the 
       taskbar) so that they stay out of the painting loop.
    4. In general, it's a very good idea to use only Microsoft-certified 
       WHQL (Windows Hardware Quality Labs) drivers for your video card.
       Often people want to get the newest, fastest beta drivers, but 
       these drivers are almost ALWAYS riddled with new bugs.

    5. Multiple Monitors: It is recommended that whenever you modify your 
       Windows multimon setup (i.e. turn an adapter on/off, change its 
       color depth, etc.), you reboot Windows before running this plugin.  
    6. Please remember to look away every 15 minutes.
    7. 'Geiss' rhymes with 'frozen water'.

    8. Geiss 2 is the sequel to Geiss, which debuted
        in 1998.  Geiss 2 is better because:
        * it's stable (heh)
        * it can go beyond 800x600 (up to 2048x2048)
        * it can blend between maps
        * it has DESKTOP MODE
        * it is multimon-friendly
        * it lets you steer with the mouse (hit INSERT)
        * it now lets you accurately limit the framerate
        * you can now select your refresh rate for 
            fullscreen modes.  (in the original Geiss,
            you had no control over this, and sometimes
            the screen got squished.)
        * it manually constructs its own main loop out
            of various chunks of assembly code.  For each 
            chunk, it tests many options to find the one
            that is fastest on *your* particular machine,
            and then uses that.  After running for about
            30 seconds, it should know exactly which code
            chunks work best on your machine, and be
            manually stitching them together (no calls or
            jumps!) and running the dynamically-generated
        * it has a bunch of new maps, color palettes, and
        * no animals were eaten by the author during the
            development of this plugin.

9. Version History
1.0 - 17 June 2003
    -Initial release.