Logitech Media Server + Squeezelite
While MPD reveals a lot of micro details with the recordings, Logitech Media Server (LMS) with Squeezelite reveal a lot about the music itself.
Squeezelite is a piece of computer software that converts your computer into a Squeezebox clone. The PC then act as a client and it communicates with Logitech Media Server (LMS) to source and play music. LMS is responsible for managing your music library while squeezelite is responsible for playback.
You can setup multiple Squeezelite clients, all connected to this single LMS. You can control whether to let all clients play in sync to the same playlist, or different tracks for different players. This creates a highly flexible multi-zone setup for various applications and use cases.
LMS has many plugins available to expand the base features, including improving the user experience and adding streaming services like Spotify, Tidal, Qobuz, Deezer. Please note that LMS Wiki is somewhat out of date and it is better to access the Plugins page to see what is available.
Words I'll associate with LMS+Squeezelite combo:
- euphoric,
- natural,
- relaxing, and
- easy-listening.
This is a good combination to go with when you simply want to unwind at the end of the day, chill out and relax.
The Squeezelite player turns your computer into a Squeezebox clone. Allowing you to play music managed by a Logitech Media Server (LMS) on your network. Snakeoil comes with LMS pre-installed but registered users has the option of disabling the bundled LMS if they already have one running in the network (e.g. from a NAS).
Disable Software Volume Control
LMS by default applies software volume control. The first thing you need to do (which Snakeoil can't automate) is to change the settings for all your installed players. People who rely on software volume control should ignore this step.
Click LMS Web link as shown to start the client:
And you should see this screen. The audio device added should appear in the top right corner (e.g. QLS).
Click on the "Settings" button at the lower right to begin adjusting the software volume control settings.
A new browser window will pop up. Do not change the media and playlist folders as that's where all the music will be located. The other fields can be adjusted according to your needs and preferences.
Click the word "player", then click the drop down box where it says "Basic" and select the item "Audio".
Make sure the selection highlighted by the ugly arrows are set as per the picture. Setting this feature is very important as it gives you a fair ground to compare this against all other players in Snakeoil. i.e. have all players output in bitperfect, then and only then can you even begin to make an assessment on which player you want to use as your primary player.
Click on the "apply" in the far bottom right to save your changes.
Playing Back DSD
With DSD materials you can choose to either play it as DoP (if your DAC supports it), or have LMS convert DSD to PCM and send the PCM bitstream to your DAC. This is an example of a audio device that don't do DSD:
If you set your audio device like the above you will need to make one more change to LMS. Go to the "advanced" tab, and click on the drop down box, and go to the "File Types" options, like so:
Scroll down the list until you see the entries DFF and DSF. Adjust the settings like so to have LMS convert DSD material into PCM.
When you changed to another DAC that supports DSD, you'd have to modify the hardware settings to enable DoP support, and then revisit this filetypes page and set DFF/DSF back like so:
To undo, set it back to "Disabled". Hopefully a future version of Snakeoil will automate this.
Playing music using LMS web interface
If you've just installed Snakeoil, and added your music library, give it a few minutes for LMS to scan the directories and add it to the database. Once the files are read and tagged, you can use the surprisingly useful web interface as your remote control:
LMS gives you many ways to look up your music, be it by Folder names, artists, composers and so on. Once added to the queue, the tracks will be shown to your right, refer to the first picture.
Hover your mouse over any icon to discover it's role.
Playing music via a smartphone App
There are many smartphone apps that work with LMS. I'm in the Android ecosystem, and have been using Squeezer for a while now. It gives the same functionalities as the LMS web pages, but in a smaller footprint so it's more like a remote control. Similiar apps are available on Apple too, iPeng and Squeezepad seem to be a popular choice.
Accessing music streaming services on smartphone app
LMS has implemented a nice way to access music streaming services like Spotify, Tidal and Qobuz. The following screenshots are from (free) Squeezer Android app.
Search for an artist (or album, song) e.g. Adele, click on Qobuz to display standard LMS results, click on albums to display Qobuz albums. Playlists of music from the streaming service can be stored and re-used like normal playlists of local music.
If the music skips unexpectedly to the next track in the playlist, there may be a problem with your network or the streaming service is slow due to heavy demand. It may be possible to reduce this problem by changing the streaming mode to persistent or cache.
Extra Options
Some players have a text box beside it, e.g. Enter extra mpd-dsd-rt options here. This means the player support extra configuration options you can fine tune.
Extra Options for Squeezelite
You can put almost all the squeezelite command line in here, except -l, -z, -m, -n and -o. You can use this to really customise Squeezelite, tweak the buffers and so on. Here is the command line explanations:
-s <server>[:<port>] Connect to specified server, otherwise uses autodiscovery to find server -a <b>:<p>:<f>:<m> Specify ALSA params to open output device, b = buffer time in ms or size in bytes, p = period count or size in bytes, f sample format (16|24|24_3|32), m = use mmap (0|1) -a <f> Specify sample format (16|24|32) of output file when using -o - to output samples to stdout (interleaved little endian only) -b <stream>:<output> Specify internal Stream and Output buffer sizes in Kbytes -c <codec1>,<codec2> Restrict codecs to those specified, otherwise load all available codecs; known codecs: flac,pcm,mp3,ogg,aac,dsd (mad,mpg for specific mp3 codec) -C <timeout> Close output device when idle after timeout seconds, default is to keep it open while player is 'on' -d <log>=<level> Set logging level, logs: all|slimproto|stream|decode|output, level: info|debug|sdebug -e <codec1>,<codec2> Explicitly exclude native support of one or more codecs; known codecs: flac,pcm,mp3,ogg,aac,dsd (mad,mpg for specific mp3 codec) -f <logfile> Write debug to logfile -M <modelname> Set the squeezelite player model name sent to the server (default: SqueezeLite) -N <filename> Store player name in filename to allow server defined name changes to be shared between servers (not supported with -n) -p <priority> Set real time priority of output thread (1-99) -P <filename> Store the process id (PID) in filename -r <rates>[:<delay>] Sample rates supported, allows output to be off when squeezelite is started; rates = <maxrate>|<minrate>-<maxrate>|<rate1>,<rate2>,<rate3>; delay = optional delay switching rates in ms -R -u [params] Resample, params = <recipe>:<flags>:<attenuation>:<precision>:<passband_end>:<stopband_start>:<phase_response>, recipe = (v|h|m|l|q)(L|I|M)(s) [E|X], E = exception - resample only if native rate not supported, X = async - resample to max rate for device, otherwise to max sync rate flags = num in hex, attenuation = attenuation in dB to apply (default is -1db if not explicitly set), precision = number of bits precision (NB. HQ = 20. VHQ = 28), passband_end = number in percent (0dB pt. bandwidth to preserve. nyquist = 100%), stopband_start = number in percent (Aliasing/imaging control. > passband_end), phase_response = 0-100 (0 = minimum / 50 = linear / 100 = maximum) -U <control> Unmute ALSA control and set to full volume (not supported with -V) -V <control> Use ALSA control for volume adjustment, otherwise use software volume adjustment
As an example, to generate Squeezelite logs, you can enter something like this in the Extra Options field:
-f /tmp/squeezelite.log -d all=info