I've built a windows version of SqueezePlay with DirectSound and MME audio device support and the ability to select the output device and set the maximum sample rate.
8.0.01r1420 - 20221223
See the commit history for changes.
ASIO, WASAPI and WDMKS support have been removed as they hang audio playback after the first sample rate change on win7+.
Squeezelite can also be setup as a windows service see this how to thread for details.
Tested with WinXP, Windows 7 32/64-bit and Windows 10 64-bit using both device driver types.
Installation? Just run SqueezePlay-setup-8.0.1r1360.exe from the above link.
If Squeezeplay won't connect to the server see this thread.
If Squeezeplay is unable to open your default sound device can cause the connection to server to fail as well. Try setting the USEPADEVICE environment variable to a known free audio device, see the instructions below. For systems without a sound card, install the trial version of Virtual Audio Cable.
There are several User Environment Variables used to provide the ability to select the output device (USEPADEVICE), maximum sample rate (USEPAMAXSAMPLERATE), audio device driver (USEPAHOSTAPI), driver latency (USEPALATENCY) and mac address assignment (UTMAC).
UTMAC allows you to change the MAC address of Squeezeplay so you can use it as a controller for squeezelite running on the same system. UTMAC is only effective the 1st time you run Squeezeplay. For any further changes to the MAC address you need, stop Squeezeplay, delete the userpath settings folder and then restart and reconfigure Squeezeplay.
My userpath Squeezeplay settings on WinXP are in C:\Documents and Settings\Ralphy\Application Data\SqueezePlay\ and for Win7 C:\Users\Ralphy\AppData\Roaming\SqueezePlay\
Squeezeplay uses the highest latency value reported by the device driver. This can be changed by setting USEPALATENCY. If you set the latency too low SqueezePlay will "stutter" during playback or even stop working altogether. The default would need to be changed if playing audio streams above 96000Hz sample rate. Try starting with a value of 200 and increase until the stuttering stops.
To obtain the list of available output devices that can be used for the USEPADEVICE key you can download squeezelite-1.9.9-1356-win32.zip, extract the zip file and run squeezelite-win with the -l option. If you do not set USEPADEVICE squeezeplay uses the default windows audio device.

The set of square backets after the device name can be used in USEPAHOSTAPI Do not add any square backets to the hostapi.. The device name in the middle can be used to set USEPADEVICE. ie. For the Speakers Windows WDM-KS device USEPADEVICE would be 'Speakers (Realtek HD Audio output)' Do not add any quotes around the names.
If you have more than one sound card with the same description you can narrow the search to a specific audio device type by setting USEPAHOSTAPI.
If squeezeplay will not connect to LMS you most likely have the USEPADEVICE and/or USEPAHOSTAPI environment variables set incorrectly.
SqueezePlay should now determine the correct maximum sample rate for the audio device. You can override it by setting USEPAMAXSAMPLERATE.
If you set the value higher than your hardware supports SqueezePlay may crash. Any value higher than 384000 is reset to 384000.
I've tested 96000 and 192000. Setting a sample rate higher than 96000 requires LMS 7.8.0 or newer.

SqueezePlay only checks the environment variables at startup. If you change one you must quit and restart.
Source code is available on github.
Builds are available on sourceforge
8.0.01r1420 - 20221223
See the commit history for changes.
ASIO, WASAPI and WDMKS support have been removed as they hang audio playback after the first sample rate change on win7+.
Squeezelite can also be setup as a windows service see this how to thread for details.
Tested with WinXP, Windows 7 32/64-bit and Windows 10 64-bit using both device driver types.
Installation? Just run SqueezePlay-setup-8.0.1r1360.exe from the above link.
If Squeezeplay won't connect to the server see this thread.
If Squeezeplay is unable to open your default sound device can cause the connection to server to fail as well. Try setting the USEPADEVICE environment variable to a known free audio device, see the instructions below. For systems without a sound card, install the trial version of Virtual Audio Cable.
There are several User Environment Variables used to provide the ability to select the output device (USEPADEVICE), maximum sample rate (USEPAMAXSAMPLERATE), audio device driver (USEPAHOSTAPI), driver latency (USEPALATENCY) and mac address assignment (UTMAC).
UTMAC allows you to change the MAC address of Squeezeplay so you can use it as a controller for squeezelite running on the same system. UTMAC is only effective the 1st time you run Squeezeplay. For any further changes to the MAC address you need, stop Squeezeplay, delete the userpath settings folder and then restart and reconfigure Squeezeplay.
My userpath Squeezeplay settings on WinXP are in C:\Documents and Settings\Ralphy\Application Data\SqueezePlay\ and for Win7 C:\Users\Ralphy\AppData\Roaming\SqueezePlay\
Squeezeplay uses the highest latency value reported by the device driver. This can be changed by setting USEPALATENCY. If you set the latency too low SqueezePlay will "stutter" during playback or even stop working altogether. The default would need to be changed if playing audio streams above 96000Hz sample rate. Try starting with a value of 200 and increase until the stuttering stops.
To obtain the list of available output devices that can be used for the USEPADEVICE key you can download squeezelite-1.9.9-1356-win32.zip, extract the zip file and run squeezelite-win with the -l option. If you do not set USEPADEVICE squeezeplay uses the default windows audio device.

The set of square backets after the device name can be used in USEPAHOSTAPI Do not add any square backets to the hostapi.. The device name in the middle can be used to set USEPADEVICE. ie. For the Speakers Windows WDM-KS device USEPADEVICE would be 'Speakers (Realtek HD Audio output)' Do not add any quotes around the names.
If you have more than one sound card with the same description you can narrow the search to a specific audio device type by setting USEPAHOSTAPI.
If squeezeplay will not connect to LMS you most likely have the USEPADEVICE and/or USEPAHOSTAPI environment variables set incorrectly.
SqueezePlay should now determine the correct maximum sample rate for the audio device. You can override it by setting USEPAMAXSAMPLERATE.
If you set the value higher than your hardware supports SqueezePlay may crash. Any value higher than 384000 is reset to 384000.
I've tested 96000 and 192000. Setting a sample rate higher than 96000 requires LMS 7.8.0 or newer.

SqueezePlay only checks the environment variables at startup. If you change one you must quit and restart.
Source code is available on github.
Builds are available on sourceforge
Comment