Home of the Squeezebox™ & Transporter® network music players.
Results 1 to 4 of 4
  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,413
    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,413
    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.

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
  •