Announcement

Collapse
No announcement yet.

SqueezePlay for Windows with ASIO, DirectSound, WASAPI and WDMKS device support.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    SqueezePlay for Windows with ASIO, DirectSound, WASAPI and WDMKS device support.

    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
    Attached Files
    Last edited by ralphy; 2022-12-28, 12:15. Reason: Released 8.0.1r1420 - Dec 23/22
    Ralphy

    1-Touch, 5-Classics, 3-Booms, 2-UE Radio
    Squeezebox client builds donations always appreciated.

    #2
    thanks, shall give it a go.
    Touch optimisations http://touchsgotrythm.blogspot.co.uk/

    Comment


      #3
      Thank you very much.

      It is working fine on windows 7.

      I have noticed that you recently have build many different versions of SqueezePlay, so I was wondering if you are planning to make an ARM build as well?

      The reason for my asking is, that I have bought a Raspberry board, and I will try to use it as a dedicated player using SqueezePlay. I have better success with synchronizing if I use SqueezPlay as compared with SquuezeSlave, because the latter needs to transcode some of my radio streams to 44100, which is not needed if I use SqueezePlay.
      This experience is on windows and Debian computers, I haven't tried on the Raspberry board yet (mainly because I have been unable to run fin a SqueezPlay that can be used on this board)
      piCorePlayer a small player for the Raspberry Pi in RAM.
      Homepage: https://www.picoreplayer.org

      Please donate if you like piCorePlayer

      Comment


        #4
        Originally posted by sbp View Post
        I have noticed that you recently have build many different versions of SqueezePlay, so I was wondering if you are planning to make an ARM build as well?
        No, I have no plans at the moment. Mainly because I don't do cross compiling, it's always been problematic for me and I don't own an RPI. My main reason to creating these builds was to make SqueezePlay run on my Solaris SPARC Sun Ray devices. There is a build of SqueezePlay for RPI but apparently there are still issues with the hardware SDL implementation. The Linux ALSA version does not need any of my modifications as it uses alsa-lib to query the hardware for the max sample rate and you can easily change the default ALSA device using .asoundrc or modifying the usersettings files created by squeezeplay.
        Ralphy

        1-Touch, 5-Classics, 3-Booms, 2-UE Radio
        Squeezebox client builds donations always appreciated.

        Comment


          #5
          Is this Squeezeplay or Squeezeslave?
          Just wondering, as the screen cap shows squeezeslave (which I've been happily using with ASIO for quite some while now TYVM)

          Comment


            #6
            Originally posted by bobkoure View Post
            Is this Squeezeplay or Squeezeslave?
            Just wondering, as the screen cap shows squeezeslave (which I've been happily using with ASIO for quite some while now TYVM)
            It is SqueezePlay. The post clearly explains why the SqueezeSlave cap is there.

            Comment


              #7
              SqueezePLAY it is. Sorry for my confusion.

              Comment


                #8
                Hi Ralphy

                Any chance of a build of Squeezeplay for RaspberryPi? I'm happily running your build of squeezeslave on the Pi - it's running great, but I'd love to give Squeezeplay a try.

                Ta

                pete S

                Comment


                  #9
                  Originally posted by psketch View Post
                  Hi Ralphy
                  Any chance of a build of Squeezeplay for RaspberryPi? I'm happily running your build of squeezeslave on the Pi - it's running great, but I'd love to give Squeezeplay a try.
                  Hi psketch

                  If you read a few responses above (post no 4) in this tread, you will see that Ralphy already answered this question - and there is no plan at the moment for an ARM version of SqueezePlay.
                  piCorePlayer a small player for the Raspberry Pi in RAM.
                  Homepage: https://www.picoreplayer.org

                  Please donate if you like piCorePlayer

                  Comment


                    #10
                    Originally posted by sbp View Post
                    Hi psketch

                    If you read a few responses above (post no 4) in this tread, you will see that Ralphy already answered this question - and there is no plan at the moment for an ARM version of SqueezePlay.
                    Doh - Sorry - don't know how I missed that - apologies for the dumb post. Shame though .....

                    Comment


                      #11
                      Many thanks for this - I've been looking for a Squeezeplay that will handle my hi-res files.

                      By the way it happily plays 192 flacs from LMS 7.7

                      Comment


                        #12
                        Originally posted by steve-g View Post
                        Many thanks for this - I've been looking for a Squeezeplay that will handle my hi-res files.

                        By the way it happily plays 192 flacs from LMS 7.7
                        Yes, flacs work in 7.7, pcm was fixed in 7.8.

                        and you're welcome
                        Ralphy

                        1-Touch, 5-Classics, 3-Booms, 2-UE Radio
                        Squeezebox client builds donations always appreciated.

                        Comment


                          #13
                          Would it correctly playback FLAC multichannel files?

                          Comment


                            #14
                            I'm having problems with this. I have a WinXP PC with Squeezeplay, ASIO4ALL and M2Tech USB converter. I usually leave the PC running 24/7, but I shut down Squeezeplay since when I leave it on, it sometimes crashes and freezes Windows.
                            I set the variables USEPADEVICE and USEPAHOSTAPI to the values showed by Squeezeslave. After a PC reboot everything worked fine. Then, if I shut down Squeezeplay and start it, say, next day again, eveything still looks fine (Squeezeplay activates the ASIO driver etc, connects to LMS) but there is no sound. I have to reboot the PC and then all is OK again. Any ideas?
                            Cheers

                            Comment


                              #15
                              WASAPI with HRT Streamer II

                              Hi,

                              I'm trying to get this version of Squeezeplay to work via WASAPI with the HRT Streamer II on Windows 7 64 bit. Squeezeslave -L yields the following:

                              * 2: (Windows DirectSound) Primary Sound Driver (119/239)
                              3: (Windows DirectSound) Speakers (2- Music Streamer II) (119/239)
                              4: (Windows DirectSound) Speakers (Realtek High Definition Audio) (119/239)
                              5: (Windows WASAPI) Speakers (2- Music Streamer II) (3/10)
                              6: (Windows WASAPI) Speakers (Realtek High Definition Audio) (3/10)
                              8: (Windows WDM-KS) Speakers (Realtek HD Audio output) (10/40)
                              11: (Windows WDM-KS) Speakers (Music Streamer II) (10/85)

                              I've set the following environment variables:

                              USEPADEVICE - Speakers (2- Music Streamer II)
                              USEPAHOSTAPI - Windows WASAPI
                              USEPAMAXSAMPLERATE - 96000

                              However, Squeezeplay simply hangs with these settings. Changing USEPAHOSTAPI to Windows Directsound works fine though, but the sample rate is fixed by the Windows device.

                              Any ideas?

                              Comment

                              Working...
                              X