ASIO Output Plugins
From MediaMonkey Wiki
ASIO is a sound driver protocol which bypasses intermediate layers of Windows software, in particular kmixer (which by default resamples the bitstream). It is useful in MediaMonkey because it can provide bit-perfect output from an S/PDIF device. It also leaves the music output (whether analog or digital) unaffected by the Windows volume control, so that an external stereo can adjust its volume independently.
ASIO is useful under Windows XP (and earlier). Windows Vista introduced the WASAPI interface which affords the same capability native to the operating system. A different plugin is needed to run WASAPI via MediaMonkey.
ASIO Output Plugins
There are (at least) two ASIO output plugins that can be used by MediaMonkey. Neither is sufficient to generate audio; both plugins require an additional ASIO DLL. There can be multiple ASIO DLLs, apparently; perhaps some audio device has its own ASIO interface file. Both plugins allow selection of a particular ASIO device (which is to say, the file). Each ASIO DLL contains code to display a dialog for its own configuration.
The MediaMonkey Add-Ons page points to otachan.com (Japanese) where there is an ASIO plugin available for downloading. This plugin provides several options, but doesn't provide direct access to the ASIO configuration dialog.
There another ASIO output plugin available at WinAmp.com, which has a much simpler interface. The only option provided by this plugin, other than the selection of which ASIO file should be is the selection of 5.1 audio, but it has a button to open the ASIO configuration dialog directly.
All these plugins do is provide an interface between the player and the ASIO file. A generic ASIO file can be found at ASIO4ALL.com; this library provides an ASIO interface to any Windows audio driver that has been written to the WDM (Windows Driver Model) specification -- which should be any driver, these days. ASIO4ALL creates its own tray icon when it's active (playing); you can click on the icon to open its configuration dialog.
Note that ASIO4ALL has a 64-bit version; however, MediaMonkey and the two output plugins are all 32-bit and won't use the 64-bit DLL.
SO: to use ASIO with MediaMonkey, you
- obtain one of the output plugins and an appropriate ASIO driver DLL;
- copy both into the MediaMonkey plugins directory;
- configure the plug-in to use the ASIO driver; and
- if necessary, configure the ASIO driver to access the device.
Then the player should pipe the music to the device.
Notes on ASIO4ALL
I am using ASIO4ALL to drive a USB->S/PDIF device that feeds a DAC on my stereo. I've configured Windows to play system sounds through the computer speakers, so I had to configure ASIO4ALL to select the USB Audio device.
My DAC is strictly 16-bit/44.1KHz, so I also had to turn on Advanced Options and turn off the Always Resample option. In order to make this work, it's necessary to expand the tree under the "WDM Device List" and select the "Out" node under "USB Audio", and then uncheck the Always Resample box.
Because this is a playback-only system, latency is not a big issue. After having some stuttering problems with a new new audio device on a new computer (onboard RealTek S/PDIF output), I discovered (by reading the ASIO4ALL manual) that setting the ASIO buffer size to its maximum was useful and caused no particular problems.
Notes on out_asio.dll
This is the WinAmp-vetted plugin. One thing this plugin provides that the Otachan plugin does not is, it adjust volume according to the MediaMonkey volume control. This plugin uses gapless mode.
Notes on out_asio(dll).dll
This is the Otachan plugin, which is the one I'm using. It has its own control over resampling; I'm not sure how that interacts with the ASIO4ALL resampling setting, since I didn't want the resampling turned on.
Other than selecting the correct devices, turning on gapless playback, and turning off resampling, I've left all the settings at their defaults. For me, this works great, with both MediaMonkey 3.04 and WinAmp 2.81.
Issues with Gapless playback
If the plugin is configured for gapless playback, then it is loaded when MediaMonkey starts up. ASIO4ALL displays its tray icon with the Pause symbol, which changes to the Play symbol when the player is active.
If gapless playback is turned off (in the Otochan plugin), then the plugin is loaded only when the player starts, and is unloaded at the end of each track; this puts a short silent gap between tracks, which can be annoying when playing albums with tracks that flow from one to the next.
However, even with gapless playback, there can be an audible tick at the transition between tracks which flow.