- Music Player Daemon (MPD)
Logitech Media Server & Squeezelite
While MPD reveals a lot about the recordings, LMS/Squeezelite seems to reveal a lot about the music. Squeezelite is a piece of computer software that converts your computer into a Squeezebox clone. These are clients and it communicates with Logitech Media Server (LMS) to cue and play music. LMS is responsible for managing your music library while squeezelite is responsible for playback. All your requests are sent to this central LMS, and from there you can control the behaviour of your squeeze players - whether they will all be sync'ed to play the same playlist, or you can setup different tracks for different players (effectively a multi-zone setup). The beauty of LMS is the big list of plugins available - e.g. Spotify.
Words I'd associate with Squeezelite+LMS combo:
This is a good combination to go with when you simply want to unwind at the end of the day, chill out and relax. More information on how to play music with squeeze is in the How To Play Music chapter.
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).
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.
Disable Software Volume Control
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 web tab would 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 to your needs.
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:
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