Projects Library
Site naviation bar
Site naviation bar
Acoustic Simulation Plug-in for Winamp (MP3) Players

by Vladimir Kopjov

[Editor: This Winamp plug-in implements acoustic simulation with adjustable time delay and crossfeed. Version 0.52b of the plug-in uses full-frequency crossfeed. Version 0.60b adds a low-pass filter to simulate shaded crossfeed. Speakers Simulator is designed to process playback of digital streams such as MP3 files, but will also work with CDs played from the CD-ROM drive if the CD Reader plug-in is installed.]

Download: Speakers Simulator 0.52b
Download: Speakers Simulator 0.60b
Download: CD Reader 1.95

What is Speakers Simulator?

Speakers Simulator is a freeware Winamp plugin to simulate a loudspeaker-like soundfield in your headphones. I think you have already noticed the difference between speakers and headphones. Speakers sounds always more natural; you can feel the depth of the scene. Headphones give an absolutely flat sound scene, like a picture on the wall. Why? Leaving out all the physics, I can say that all recordings are made for speakers. The entire recording process implies loudspeaker playback. So, this plugin tries to model a loudspeaker acoustic.

It uses channel crossfeed with delay, but to reduce Comb filter effects, I used a FIR (Finite Impulse Response) filter which has one 'Air' coefficient to make the arithmetical combining of sound waves closer to air-type combining. Speakers Simulator tries to get the frequency spectrum back to its original state (like it was before the addition of delayed crossfeed) with some 'Air' adjustments. I believe that Comb effects exist in air too, but in some different form.

The plugin is written in pure C with the Intel sound processing library. Originally developed using a FIR filter, it changed to a FFT (Fast Fourier Transformation) filter to make it work on PC in real-time, but with some quality loss. I took the Complex MMX FFT function from the Intel library. I have my own Complex FFT implemetation which runs fast on non MMX processors, but Intel's MMX version runs on MMX up to 2.5 times faster.

FFT is windowed function - it breaks the input function down to chunks to work with. It has superior transformation speed, but after transformation, some artifacts can be noticed at the ends of a chunk. There are many more methods (called window functions) to compensate this effect. But by research, I found nothing else suitable for this application. I used a very simple method - it's inaudible on small delay rates. If it appears, it appears as slight clicks, that are periodical with an approximate 86 Hz frequecy. The clicks will be definitely be audible on some acid music material with delays close to 1ms, but with a natural 300us delay, there are no audible clicks.

What equipment do I need?

The Speakers Simulator plugin is process intensive for real-time operation, so the CPU should be a Pentium 200 MMX or better processor. You can use any soundcard, as good as you can buy. I use a SoundBlaster PCI64, formerly the Ensoniq AudioPCI. IMHO, it has best value/perfomance ratio. It's connected to my ReVox S-25 amplifier, which drives Sennheiser HD-565 headphones. The optimal, no compromise, solution is to buy a sound card with a SP/DIF interface and connect it to an external DAC module. Of course you can use a dejitter module or DAC with internal dejitter to get best possible sound.

Speakers Simulator is designed to be used with a digital source (44100 Hz, 16bit stereo streams). To play CDs through the Speakers Simulator, you must also have my CD Reader plugin, which uses the RAW_READ function (also known as "read long") to extract digital audio data from CD. It's not supposed to be used with analogue sources due to sound degradation in ADC. In fact, you can use Speakers Simulator this way, and the only requirement is a full-duplex sound card. Winamp has this type of input plugin called the Live Recording Input Plug-In, available from the Shoutcast Download Page. Actually, CD Reader is nice thing by itself. With a SP/DIF interface, it turns your $100 CD-ROM drive to $1000 CD transport.

How do I use it?

There are two options in the configuration menu: Crossfeed and Delay Depth. Crossfeed controls the amount of crosstalk between the left and right channels. You can set this parameter between 0% to 80%. More crossfeed gives stronger localization and less scene width.

Delay Depth controls the time delay over the crossfeed. Do not play with this parameter so much. More delay gives more scene depth, more scene width, but less focus. And remember, at long delays (more than 400 mcs), you can get some sound artifacts such as soft clicks or soft sounds on some phonograms.

You always can reset default settings by clicking "default" button. The defaults are 70% crossfeed and 113.38uS delay. These settings were carefully chosen using the test CD "System Test & Burn-in" by XLO. I recommend staying close to these settings.

Addendum

7/4/99: Updated CDReader to version 1.71. Suppressed 'medium not present' message in case you push eject button on CD-ROM drive while Winamp was still in play mode. Fixed bug which prevents playing 1st track on some CDs.

12/17/99: Added version 0.60b of Speakers Simulator. The author wrote:

    For Speakers Simulator 0.60, I devised a new filtration method which sounds much more clear and makes it possible to set a low-pass filter on the crossfeed channels without requiring additional computing power. I precorrect the crossfeed signal before combining it with the direct signal. The precorrection helps to make a low-pass filter without using additional power (by same filter). And it helps to minimize artifacts during signal processing, since the direct signal is almost untouched by the DSP. The precorrection also helps to avoid signal loss.

    The minimal recommended processor is a P-200 MMX. On a P-200 MMX, Speakers Simulator 0.60 takes about 40% of CPU power. On PII it should take much less - maybe about 20%. Speakers Simulator 0.60b takes only 10% of the processing power from a Celeron 500 computer and does not disturb my other work at all. Try the new Speakers Simulator 0.60b!

5/1/00: Updated CD Reader to version 1.82. Compared to version 1.71, this version features an improved Win32 mode and improved read procedure (should help to solve "No seek complete" and "Unrecoverable read error" problems). Also, added compatibility with Winamp style cd url naming (cda://R,1).

10/9/00: JohnPaulW in the forums tried the Speakers Simulator plugin with headphones, a Bose Wave radio and his loudspeaker audio system. He writes:

    I have a cheap pair of headphones, and the difference was night and day even on them. The vocals really tightened up...just great. What I found really interesting also was listening to music on headphones, then a Bose Wave radio (used as my computer speakers and only about two feet away), and then my hifi system. Both the headphones and Wave radio really improved. I attribute this to the super-stereo effect you mentioned in your project. I am most likely getting some of that from the radio as well, since it is so close. However, using it on the hifi just killed the music.... This made me even more excited, because for once I felt the results of what I was hearing was what I was suppose to be hearing. It just sounded wonderful right where it was suppose to.

3/25/2002: Updated CD Reader to version 1.95. Contains bug fixes and new customization features.

c. 1999, 2000, 2001, 2002 Vladimir Kopjov.
Author's website: copah's Projects Page.
Questions or comments? Visit the HeadWize Discussion Forums.

-

Site naviation bar
Contact Webmaster

Articles & Multimedia Library Projects Library Technical Papers Library Design Showcase Headphone FAQs Educational Links Commercial Links Forums Homepage Library Announcements & News HeadWize Homepage