The Wayback Machine - http://web.archive.org/web/20160609133537/http://www.visolu.com:80/TwistedPixel/
TwistedPixel™
Visualization
Copyright © 2003-2006 Brian Spangler, All rights reserved.

To download select an option.
 [download WinAMP Version]  [download WMP/MCE Version]  [download MediaMonkey Version]


Usage
    Introduction
    Requirements
    Installing
    Keyboard Shortcuts
    Troubleshooting
    New in 2.0
    Acknowledgements
    
 

Usage

Introduction

TwistedPixel™ is a MediaMonkey, WinAmp, WMP & MCE 2005 Visualization that uses a video card's 3d capabilities and Microsoft's Direct3D to produce flowing images in reaction to music. How TwistedPixel differs from other visualizations is that there exists no hardcoded visuals, all the imagery produced is done so via the interpretation of presets files that anyone can write. A few hundred preset files have been included with the installation of TwistedPixel so as to allow immediate viewing of the visualization. Feel free to write your own and share them with the preset authoring community.


A little history, the first visualization that I encountered which offered the use of presets was Andy O'Meara G-Force and NullSoft's Milkdrop. At that time I had just released PixelTrip and knew immediately I was behind the pack of visualization development. Since that time I have worked periodically on TwistedPixel until it reached a comparable level to Milkdrop and even supported minimally some Milkdrop preset files. Initially the entire vis was developed using C++ and MMX so as to be able to process the necessary time variable ... although the vis looked quite similar to Milkdrop it lacked the performance and levels of color and alpha blending. It was Roman Komary and his vis X-Plugin that turned my attention to D3D and the advantages of its use; since that time TwistedPixel has been redeveloped with D3D and once the project was completed I did a very unusual thing...I shelved it.
With Milkdrop's availability and popularity, at that time in its 1.3 release, I saw no reason to put out what was basically a same vis that offered very little functionality over the original. After some involvment with developing projects that utilize varying scripting technologies I saw something that could be added to TwistedPixel that would provide additional appeal to the Milkdrop community -- you can now develop your presets using VBScript, JavaScript, TCL, Pearl and Python. By adding support for full blown scripting languages the door is open to a whole new breed of visualization presets. To help existing preset authors port Milkdrop presets to VBScript or JavaScript there is included in the installation a Milkdrop To TwistedPixel converter that works on a single preset file or an entire folder of presets and will convert the preset to either VBScript or JavaScript.

*note, as of 2.0 the convertor has been retires since TwistedPixel now has direct support for Milkdrop files.

 

Requirements

 

Installing

WMP and MCE user are provided an installer. In time WinAMP & MediaMonkey users will have a comparable formal installer developed for TwistedPixel, the TwistedPixel SDK and all the supported presets to date.
If you are a WinAMP or MediaMonkey user and the player is installed in your ..\Program Files\ folder then unzipping to the WinAMP or MediaMonkey folder will be enough to establish the folder hierarchy necessary.

The folder hierarchy used in the current release of TwistedPixel follows (where <> denotes a folder) :

    <WinAMP>
        <PlugIns>
            vis_tp.dll
            <TwistedPixel>
                preset files...
            <TwistedPixel SDK>
                'this guide'.html
                MD2TP.exe
 

   <Windows Media Player>
        <Visualizations>
            TwistedPixel.dll
            <TwistedPixel>
                preset files...
            <TwistedPixel SDK>
                'this guide'.html
                MD2TP.exe               

    <MediaMonkey>
        <PlugIns>
            vis_tp.dll
            <TwistedPixel>
                preset files...
            <TwistedPixel SDK>
                'this guide'.html
                MD2TP.exe
 


           

*note, for WMP following the install wizard you can place TwistedPixel anywhere on the destination computer.

Once installed, run your player and use the menus to select configure. On configure, the TwistedPixel configuration window dialog will be presented for you to make any selections beyond the defaults.

 

Keyboard Shortcuts

While TwistedPixel is running you can use keyboard shortcuts to change behaviors of the visualization.


Keyboard Shortcut f toggle display of Frames Per Second
Keyboard Shortcut s Animate the Song Title
Keyboard Shortcut d toggle beat detection
Keyboard Shortcut p display name of current preset
Keyboard Shortcut n load next preset
Keyboard Shortcut h hardcurt to next preset
Keyboard Shortcut space transition to next preset
Keyboard Shortcut t toggle status message display
Keyboard Shortcut o open a specific preset
Keyboard Shortcut r toggle random selection of preset
Keyboard Shortcut i flag the current preset as incomplete


A note about shortcut key i:
If you are converting many Milkdrop presets to VBScript or JavaScript using the MD2TP.exe utility then this shortcut feature is a quick way to flag those presets that did not convert as expected. The basic idea is to convert a folder of Milkdrop presets where the output folder is an empty TwistedPixel folder (review folder hierarchy above). Once the newly converted presets are populating the TwistedPixel folder, launch MediaMonkey, WinAMP or WMP and begin to proof the conversions. Use the 'n' key to move forward through the list of presets and use 'i' to flag the ones that failed conversion. Pressing 'i' will rename the preset file with the prefix 'incomplete.conversion.' which is very easy to identify in Windows Explorer.

 

Trouble Shooting

The following are suggestions you can take in the event of a visualization failure.
First determine if the problem you are experiencing is a problem in TwistedPixel or in visualizations and video in general. An easy approach to doing this is to simply try a different Direct3D visualization, if it works then the problem you are experiencing is most likely an issue with TwistedPixel and so you should contact me with a description of the issue. Please do not be offended if I do not get back to you in a quick manner -- I receive too many emails in a given day to read/respond to them all.
If you have determined that there is likely a problem with your video then try any of the following:

  • Data Execution Prevention, a feature of XP SP2 can prevent TwistedPixel from running.
    TwistedPixel uses a Microsoft Framework ATL/WTL and the addition of the DEP feature from Microsoft causes any ATL/WTL developed software to run incorrectly.
    Luckily there is a way to correct this.
    From Control Panel select System Properties then the Advanced Tab and Performance settings. Select the Data Execution Prevention tab and if the option Turn on DEP for all programs is selected then you can add your player's executable to the list thus allowing TwistedPixel to run.
    For example:
    • Winamp: Add C:\Program Files\Winamp\winamp.exe
    • MediaMonkey: Add C:\Program Files\MediaMonkey\visHelper.exe
    • WMP: Add C:\Program Files\Windows Media Player\wmplayer.exe

    When completed your screen should look like:

  • Ensure your video card supports Direct3D -- a number of reported problems are were just a matter of a video card with a lack of support for basic 3D hardware acceleration.
  • Get the latest DirectX drivers from Microsoft and/or re-install what the current version. There is the possibility that DirectX runtime files are failing in which case a fresh installation will reset appropriate information at the file system level and Windows Registry database.
  • Get the latest drivers from your video card manufacturer. Video Card manufacturers are always updating their drivers to be more compliant with the latest releases of DirectX and OpenGL standards.
  • Revert back to a previous set of video drivers. If you have just upgraded the drivers and find applications failing with video errors then there is the possibility the newest drivers have introduced the problems. This is a regression issue and should be reported to your video card manufacturer so that they can develop a patch to that driver release version.
     

Acknowledgements

There are few to whom I owe some thanx that if not for their help I would never have completed Twisted Pixel. To Roman Komary who turned the light on for me regarding Direct3D and who answered many questions about the uses of Milkdrop variables. To Rovastar for the influence in completing this work and for keeping me informed about the vis community. And of course a thank you to Andy O'Meara and Ryan Geiss for their original vis developments that inspired me to try and write a preset scripted one too.

 

What is New in version 2.0

Quite a few changes have been made for version 2.0
Below is a small list of just some of them...

  • support broarder set of scripting engines (nobody really cares about that)
  • native expression parser for support of original milkdrop .milk files (almost 90% supported, still tweaking but good enough for now) ... to date I think there are well over 5500 presets available.
  • better transition between presets ... I need to expose parameters for custom transition timing
  • for the scripting engine (non milkdrop files) there are a ton more variables such as:
    • allowing for color cycling on the waveform - this was a toughy but really came off looking cool
    • setting of mesh point size, transition time etc.
    • a frames per second variable you can cycle in the per-frame function callback
    • a debug display of your variables...
  • improved beat detection
  • showing song title with a little animation - I need to expose the font parameters for user selection
  • set next preset from within a preset so that in combination with setting transition times you can Chain many Presets to build a Custom Show
  • custom shapes support in both milkdrop presets and scripted presets
  • custom waveforms and a script callback to allow changes to canned waveforms before display I put together quite a few samples that show changing the waveform colors with a hue map
  • better support for motion vectors