|
| 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
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:
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:
3/25/2002: Updated CD Reader to version 1.95. Contains bug fixes and new customization features.
c. 1999, 2000, 2001, 2002 Vladimir Kopjov. | |||
| - | |||