Home of the Squeezebox™ & Transporter® network music players.
Results 1 to 7 of 7
  1. #1
    Junior Member
    Join Date
    Feb 2020
    Posts
    2

    DSP of Quboz Streams via SOX + UPNP Bridge (for KEF LS50W)

    Hello colleagues,

    I am currently trying to set up a room correction via DSP in the LMS server via SOX and need some help.
    Setup:
    • Source: FLAC Streams from Quboz or Tidel (16bit / 44.1 KHz - 24bit / 192Khz)
    • Logitech Media Server version: 7.9.2
    • UPNP DLNA Bridge
    • KEF LS50 Wireless (active speakers with UPNP renderer)


    UPNP DLNA Bridge setup for LS50W without transcoding.
    I have tried to write a custom-convert.conf for the equalizing of the streams for the LS50W with this code (MAC-ID is only sample):

    Code:
    flc flc * 00:00:00:00:00:00
    	# FT:{START=--skip=%t}U:{END=--until=%v}
    	[flac] -dcs $START$ $END$ -- $FILE$ | [sox] -q -t wav - -t flac -C 0 -b 24 - gain -1 rate -v -I -b 98 88200 equalizer 200 0.33q -10
    But this doesn’t work.
    First of all, I recognized, that it is not possible to do special rules in the custom-converter.conf for devices communicating via UPNP DLNA Bridge.
    This seems to be caused by the architecture of this plugin.
    Maybe someone has experience how to set up transcoding rules for UPNP devices.

    The documentation of the convert.conf is really bad - so I had done some trial and error with help of Google.


    So this is the current state:
    Code:
    flc flc * *
    	# IR
    	[flac] -cs - - | [sox] -q -t flac - -t flac - equalizer 312 1.237q -5.8 equalizer 201 2q 6 equalizer 229 5q -9.9 ............
    I can only define rule for all devices which with effect for UPNP devices and must then setup rules for all the other boxes in my network.

    So it works! - DPS for Quboz and Tidal streams up to 24/192 - great stuff!

    But there are some questions - maybe someone can answer a few of them:

    - Is there a better documentation for the convert.conf?
    - What does "# IR" stand for?
    - How to convert all formats (e.g. mp3) in that way, that the LS50 Wireless receives this equalized flac stream?
    - Is there a way to define rules for UPNP devices in the convert.conf?
    - Is there any improvement in the SOX command I use?

  2. #2
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    20,796
    Quote Originally Posted by squeezing View Post
    - Is there a better documentation for the convert.conf?
    - What does "# IR" stand for?
    What is wrong with the documentation at the start of convert.conf file ?
    At the start of the convert.conf file - all settings/formats are detailed.
    Code:
    #
    # Capabilities
    # I - can transcode from stdin
    # F - can transcode from a named file
    # R - can transcode from a remote URL (URL types unspecified)
    # 
    # O - can seek to a byte offset in the source stream (not yet implemented)
    # T - can seek to a start time offset
    # U - can seek to start time offset and finish at end time offset
    #
    # D - can downsample
    # B - can limit bitrate

  3. #3
    Junior Member
    Join Date
    Feb 2020
    Posts
    2
    Quote Originally Posted by bpa View Post
    What is wrong with the documentation at the start of convert.conf file ?
    At the start of the convert.conf file - all settings/formats are detailed.
    Yes, thats right. But how to use?
    What means "# FT:"?

  4. #4
    Senior Member
    Join Date
    Oct 2005
    Location
    Ireland
    Posts
    20,796
    Quote Originally Posted by squeezing View Post
    Yes, thats right. But how to use?
    What means "# FT:"?
    Play around using logging of player.source set to INFO and see what the created command looks like - try different conf settings. Must restart for conf file changes to take effect.

    Look at the real example in convert.conf and understand them fully.

    # F means input comes from a file (i.e. LMS will subsituted $FILE$ for the file name - the #F" tells LMS the created command line after substitution will contain a local file name)
    # I means input comes from stdin to the trancoder command (stdin from LMS processing source as a byte stream i.e. LMS will substitute "-" for $FILE$ in the command line and also provide the data)
    # R means input comes from remote (i.e. LMS will substitute $URL$ possibly $FILE$ for the remote URL)

    So the capabilities tell LMS, the command created after subsitution will be valid & work (i.e. a viable transcoding). The options tell LMS what to substitute to build the appropriate command.

    For example,
    faad can process input file or stdin but not remote URL so any faad command cannot have a "R"

    so faad can be used to play AAC files but not remote URLs. To play http/AAC stream - faad relies on LMS to provide a ADTS AAC stream (i.e. http stripped and data reassembled) using stdin.


    The #T means a byte offset so the command created after substitution will be able to skip to start time/byte. This usually means one of the follow have to be in the command line.
    Code:
    # %o - stream start byte offset
    # 
    # %S - stream samples start offset (not yet implemented)
    # %s - stream seconds start offset
    # %t - stream time (m:ss) start offset
    # %U - stream samples end offset (not yet implemented)
    # %u - stream seconds end offset
    # %v - stream time (m:ss) end offset
    # %w - stream seconds duration
    Last edited by bpa; 2020-02-23 at 05:53.

  5. #5
    Junior Member
    Join Date
    Aug 2021
    Posts
    2
    Quote Originally Posted by squeezing View Post
    So it works! - DPS for Quboz and Tidal streams up to 24/192 - great stuff!

    But there are some questions - maybe someone can answer a few of them:

    - Is there a better documentation for the convert.conf?
    - What does "# IR" stand for?
    - How to convert all formats (e.g. mp3) in that way, that the LS50 Wireless receives this equalized flac stream?
    - Is there a way to define rules for UPNP devices in the convert.conf?
    - Is there any improvement in the SOX command I use?
    Hi,

    I have the same setup LMS - UPNP Bridge - KEF LS50 W.
    And I also doing DSP with Sox and Qobuz Streams.

    What setting are you using with the UPNPBridge and the KEFs?
    I have mostly in the beginning of the tracks one little hiss.

    Have you noticed something similar?

  6. #6
    Senior Member
    Join Date
    May 2008
    Location
    Canada
    Posts
    7,556
    Quote Originally Posted by squeezing View Post

    But this doesn’t work.
    First of all, I recognized, that it is not possible to do special rules in the custom-converter.conf for devices communicating via UPNP DLNA Bridge.
    This seems to be caused by the architecture of this plugin.
    Maybe someone has experience how to set up transcoding rules for UPNP devices.
    From that point of view, there is nothing special in the "architecture" of the plugin. It does not have a specific "model", which is the 3rd field of the convert.conf, but you can always do specific rules by its MAC address. It will not be for all upnp device, but for the exact device you want.
    But there are some questions - maybe someone can answer a few of them:

    - Is there a better documentation for the convert.conf?
    - What does "# IR" stand for?
    - How to convert all formats (e.g. mp3) in that way, that the LS50 Wireless receives this equalized flac stream?
    - Is there a way to define rules for UPNP devices in the convert.conf?
    The header of convert.conf is pretty clear, I think. I dont see what more you'd want
    To convert all formats, you need a rule for each format. You can simplify your life by only allowing one codec for the upnp players, e.g. flac and only have the rules to transcode *to* that format
    You can't be specific to all upnp devices as they don't have their own model, just a modelName which is not used as a criteria for rules, but you can use their MAC addresses
    LMS 8.2 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

  7. #7
    Quote Originally Posted by philippe_44 View Post
    The header of convert.conf is pretty clear, I think. I dont see what more you'd want
    Apologies for hijacking this thread, but I'd like to comment on the above: I've been using custom-convert.conf to run some equalization via sox for a long time.
    I remember my perplexities at the beginning, because I must say that the header lacks a bit of clarity when it says
    Code:
    # Capabilities
    # I - can transcode from stdin
    etc. etc.
    The subject of the sentence is missing, and for newcomers the meaning could be puzzling. Something like "The first command of the entry accepts input from stdin" would make all those statements clearer, IMO.
    Perhaps one of the code maintainers could modify this in one of the future releases? That would be much appreciated (at least by me!).
    Last edited by scala; 2021-08-21 at 12:23.

Tags for this Thread

Posting Permissions

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