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):
But this doesnÂ’t work.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
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:
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.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 ............
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?
Results 1 to 7 of 7
-
2020-02-23, 03:31 #1
- Join Date
- Feb 2020
- Posts
- 2
DSP of Quboz Streams via SOX + UPNP Bridge (for KEF LS50W)
-
2020-02-23, 05:02 #2
- Join Date
- Oct 2005
- Location
- Ireland
- Posts
- 21,543
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
-
2020-02-23, 05:15 #3
- Join Date
- Feb 2020
- Posts
- 2
-
2020-02-23, 05:51 #4
- Join Date
- Oct 2005
- Location
- Ireland
- Posts
- 21,543
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.
-
2021-08-01, 10:00 #5
- Join Date
- Aug 2021
- Posts
- 2
-
2021-08-01, 10:23 #6
- Join Date
- May 2008
- Location
- Canada
- Posts
- 7,880
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?
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 addressesLMS 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
-
2021-08-21, 06:09 #7
- Join Date
- Oct 2007
- Posts
- 89
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.
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.