Logitech Media Server + Squeezelite
While MPD reveals a lot of microdetails 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.
And LMS has a big list of plugins available to expand the base features, including DSP, and streaming services like Spotify, Tidal, etc.
Words I'll associate with LMS+Squeezelite combo:
- relaxing, and
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, Squeezepad seems to be a popular choice.
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