Home of the Squeezebox™ & Transporter® network music players.
Results 1 to 8 of 8

Thread: FLAC Options

  1. #1

    FLAC Options

    Under my current setup, I have a pCP server streaming tidal, deezer and radio paradise etc in flac to my separate pCP player.

    The transcoding rule is very simple:

    flc flc * *
    -
    and I enjoy my setup immensely.

    The other day, out of boredom, I tried roon in my windows machine just to see the much appraised UI improvements. I clicked "Enable Squeezebox support" entered my tidal credentials was ready to listen to tidal stream without mqa. The player was the exact same pCP running the same version of squeezelite.

    But there was a HUGE improvement in sound quality in every parameter imaginable from deep base to staging etc. I was very surprised and now try to track the source of this improvement and the following come to my mind:

    1. Roon has a secret sauce and converts flac to pcm and automatically applies some DSP, upsampling, bit depth, dithering changes etc. Tonight, I will restrict squeezelite to accept only flac and test again. If roon is transcoding to pcm, the player will not play.

    2. Going over the flac documentation (https://xiph.org/flac/documentation_tools_flac.html) there are a plethora of options for flac from compression level to sample rate to what-not. I do not understand what flc flc * * rule does. Is there any compression involved, for instance?

    Because the players are identical, roon must be doing something different at the server side. But i cannot switch to roon because it does not support spotify or deezer. but what it does with tidal is totally worthwhile. Pls give it a try through the 14-day trial period and see if you agree. Meanwhile, any ideas or suggestions are welcome.

  2. #2
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    20,291
    Enable slimproto logging on both squeezlite players and check the exact same volume levels are sent to the player - 11 on Roon maybe 9 on LMS.

  3. #3
    Quote Originally Posted by bpa View Post
    Enable slimproto logging on both squeezlite players and check the exact same volume levels are sent to the player - 11 on Roon maybe 9 on LMS.
    very good point and many thanks bpa. i forgot to mention that roon sounds subjectively less loud with the same volume level even tough both were set to fixed volume at 100%. is there a different audio option in lms whereby >I can set the volume?

  4. #4
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    20,291
    Quote Originally Posted by mcduman View Post
    very good point and many thanks bpa. i forgot to mention that roon sounds subjectively less loud with the same volume level even tough both were set to fixed volume at 100%. is there a different audio option in lms whereby >I can set the volume?
    I don't know Room but IIRC LMS there is (or maybe was) a nonlinear mapping between volume levels and volume level sent to a player - the curve had more points close together at low volume so that better control at low volume.

    The volume level displayed on a UI is mapped into a volume level sent to the player - it does not have to be linear and there is no need for Roon to be the same as LMS.

    edit:

    Flac is lossless compression - so that no matter what compression level chosen - it will save space in file (and maybe transmission time) - the decompressed PCM is exact the same no matter what compression level is used.

    The rule below - means for flac to flac "do nothing" - send the data through unchanged. If the "-" was changed to say a sox command then input flac data stream can be modified by sox but still sent as flac.
    Flac Flac * *
    -
    Last edited by bpa; 2021-04-02 at 02:45.

  5. #5
    Quote Originally Posted by bpa View Post
    I don't know Room but IIRC LMS there is (or maybe was) a nonlinear mapping between volume levels and volume level sent to a player - the curve had more points close together at low volume so that better control at low volume.

    The volume level displayed on a UI is mapped into a volume level sent to the player - it does not have to be linear and there is no need for Roon to be the same as LMS.

    edit:

    Flac is lossless compression - so that no matter what compression level chosen - it will save space in file (and maybe transmission time) - the decompressed PCM is exact the same no matter what compression level is used.

    The rule below - means for flac to flac "do nothing" - send the data through unchanged. If the "-" was changed to say a sox command then input flac data stream can be modified by sox but still sent as flac.
    Flac Flac * *
    -

    I know LMS is bit-perfect at 100% fixed volume, but I have the following questions:

    1. there is also an adjustment for remote streams and the default value is -5. Is LMS still bit-perfect when I mess around with this setting? Should I keep it at 0? Or is it disabled at 100% volume?
    2. How is it normal that roon and LMS are not equally loud at 100% volume? because remember roon is simply emulating LMS
    3. when transcoding to flac from other formats, i see the following argument in convert.conf. [flac] -cs --totally-silent --compression-level-0 -. why is compression level a thing if the output is exactly the same?
    4. can you or other knowledgeable members give roon a spin and comment on their implementation of LMS?

    sorry for the stream of consciousness questions but the issue fascinates me and i know the good people of the forum might shed some light on this

  6. #6
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    20,291
    Quote Originally Posted by mcduman View Post
    I know LMS is bit-perfect at 100% fixed volume, but I have the following questions:

    1. there is also an adjustment for remote streams and the default value is -5. Is LMS still bit-perfect when I mess around with this setting? Should I keep it at 0? Or is it disabled at 100% volume?
    AFAIK this is like a Gain tag for specified remote streams. I didn't think it was applied by default. LMS does not manipulate any audio data. It just works out from volume control, gain setting and 100% setting - what value to put in volume control message in slimproto. Recently this has been tweaked to support balance as there is L & R volume. I would think the 100% setting means LMS sets L&R vols values to max in message.

    2. How is it normal that roon and LMS are not equally loud at 100% volume? because remember roon is simply emulating LMS
    You are assuming Roon is doing a perfect emulation of LMS - that is why I suggest looks at the actual values sent to the player.

    3. when transcoding to flac from other formats, i see the following argument in convert.conf. [flac] -cs --totally-silent --compression-level-0 -. why is compression level a thing if the output is exactly the same?
    Unsupported formats (e.g. AAC for SB3 players) are converted into a lossless format - Flac. This measn AAC is decoded into PCM which has to be re-encoded into Flac. IIRC Encoding Flac is the CPU heavy part of the process - decoding Flac is CPU light. So to minimise load on CPU (a few years ago they used to things like NSLU2 with no FPU in CPU) the compression level 0 is used as it requires the least amount of CPU to encode.

    4. can you or other knowledgeable members give roon a spin and comment on their implementation of LMS?
    Not me. (too much other stuff on & to do) but that doesn't stop other users.

  7. #7
    Senior Member
    Join Date
    Apr 2005
    Location
    UK/London
    Posts
    3,905
    Paul Webster
    http://dabdig.blogspot.com
    Author of "Now Playing" plugins covering Radio France (FIP etc), PlanetRadio (Bauer - Kiss, Absolute, Scala, JazzFM etc), KCRW, Supla Finland, ABC Australia, CBC/Radio-Canada and RTE Ireland

  8. #8
    Senior Member
    Join Date
    May 2008
    Location
    Canada
    Posts
    6,921
    The only rational explanation is either a difference in volume or roon does some audio processing because other than that, everything is bit perfect.

    Rather than making hypothesis, you can do a simple test by having squeezelite spit on stdout (or find a way to send audio to a file) and then play the same track from LMS and Roon, then use your favorite DSP tool (audacity?) to compare results
    LMS 8.1.x on Odroid-C4 - SqueezeAMP!, 5xRadio, 5xBoom, 2xDuet, 1xTouch, 1xSB3. Sonos PLAY:3, PLAY:5, Marantz NR1603, Foobar2000, ShairPortW, 2xChromecast Audio, Chromecast v1 and v2, Squeezelite on Pi, Yamaha WX-010, AppleTV 4, Airport Express, GGMM E5, RivaArena 1 & 3

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •