Quantcast
Channel: Squeezebox : Community : Forums - Logitech Media Server
Viewing all articles
Browse latest Browse all 5300

custom-convert.conf DOWNIX 6ch

$
0
0
I do have a lot multichannel (6ch, 5ch and 4ch) FLAC files which need to be down-mix (on the fly)
to guarantee best quality output for my squeezebox radio and/or my squeezebox touch (which is connected to a stereo Dolby Soround only output).

To achieve this I added some lines to custom-convert.conf for transcoding:
Code:

flc mp3 * *
        # FD:{RESAMPLE=-r %d}T:{TRIM=trim %t}U:{UNTIL=trim 0 =%v}B:{BITRATE=-C %B}
        [soxcall.cmd] FLAC MP3  $FILE$ "$RESAMPLE$" "$TRIM$" "$UNTIL$" "$BITRATE$" $QUALITY$

wav flc * *
        # FD:{RESAMPLE=-r %d}T:{TRIM=trim %t}U:{UNTIL=trim 0 =%v}
        [soxcall.cmd] WAV  FLAC $FILE$ "$RESAMPLE$" "$TRIM$" "$UNTIL$"

flc flc * *
        # FD:{RESAMPLE=-r %d}T:{TRIM=trim %t}U:{UNTIL=trim 0 =%v}
        [soxcall.cmd] FLAC FLAC $FILE$ "$RESAMPLE$" "$TRIM$" "$UNTIL$"

flc flc transcode *
        # FD:{RESAMPLE=-r %d}T:{TRIM=trim %t}U:{UNTIL=trim 0 =%v}
        [soxcall.cmd] FLAC FLAC $FILE$ "$RESAMPLE$" "$TRIM$" "$UNTIL$"

mp3 mp3 transcode *
        # FD:{RESAMPLE=-r %d}T:{TRIM=trim %t}U:{UNTIL=trim 0 =%v}B:{BITRATE=-C %B}
        [soxcall.cmd] MP3  MP3  $FILE$ "$RESAMPLE$" "$TRIM$" "$UNTIL$" "$BITRATE$" $QUALITY$


And created a batch file to be called (soxcall.cmd):
Code:

@echo off
Title SOX Call
SETLOCAL
SETLOCAL EnableDelayedExpansion
SETLOCAL EnableExtensions

rem Check Log file Size
set _DEBUG=
set _LOGFILE="%~dpn0.log"
CALL :LOGSIZE %_LOGFILE% 500000

rem Update Files
for %%i in ( "%~dp0*.*_new" ) DO (
        set _SOXFILE=%%i
        CALL :SOXVER "!_SOXFILE:~0,-4!" "!_SOXFILE!"
)

set _SOXFILE="%~dp0sox.exe"



rem [soxcall.cmd] FLAC$FILE$ "$RESAMPLE$" "$TRIM$" "$UNTIL$" $QUALITY$
if "%_DEBUG%" NEQ "" echo %* >"%~dpn0.par"

SET _BITRATE=-C 0

set _IN_TYPE=--type %~1
set _OUTTYPE=--type %~2
set _IN_FILE="%~s3"
if "%_DEBUG%" NEQ "" if NOT exist %_IN_FILE% echo File NOT found: %*>>%_LOGFILE% & goto :EOF

if "%~4" EQU "" ( goto :SETREMIX ) else ( if NOT "%~4" EQU "$RESAMPLE$" set _RESAMPLE=%~4)
if "%~5" EQU "" ( goto :SETREMIX ) else ( if NOT "%~5" EQU "$TRIM$"    set _TRIM=%~5)
if "%~6" EQU "" ( goto :SETREMIX ) else ( if NOT "%~6" EQU "$UNTIL$"    set _TRIM=%~6)
if "%~7" EQU "" ( goto :SETREMIX ) else ( if NOT "%~7" EQU "$BITRATE$"  set _BITRATE=%~7)
if "%~8" EQU "" ( goto :SETREMIX ) else ( set _COMPRESSION=%~8)

:SETREMIX
if /I "%_OUTTYPE:~-3%" EQU "MP3" (
        if "%_COMPRESSION%" EQU "0" set _COMPRESSION=01
        set _QUALITY=%_BITRATE%.!_COMPRESSION!
) else (
        set _QUALITY=--compression 8 --bits 16
)

rem Evaluate channels count
%~sdp0soxchannels.exe %_SOXFILE% %_IN_FILE%>NUL 2>&1
set _CHANNELS=%errorlevel%
set _REMIX=remix -m 1v1 2v1

REM Mono - 0x4 -  FC
if %_CHANNELS% EQU 1 set _REMIX=remix -m ^
        1v0.8409 ^
        1v0.8409

REM Stereo - 0x3 -  FL FR
if %_CHANNELS% EQU 2 set _REMIX=remix -m ^
        1v1 ^
        2v1

REM Dolby Surround - 0x103 -  FL FR BC
if %_CHANNELS% EQU 3 set _REMIX=remix -m ^
        1v0.76537,3v-0.5412 ^
        2v0.76537,3v0.5412

REM Quadro - 0x33 -  FL FR BL BR
if %_CHANNELS% EQU 4 set _REMIX=remix -m ^
        1v0.65071,3v-0.56728,4v-0.31878 ^
        2v0.65071,3v0.31878,4v0.56728

REM Dolby Pro Logic II - 0x37 -  FL FR FC BL BR
if %_CHANNELS% EQU 5 set _REMIX=remix -m ^
        1v0.57084,3v0.40365,4v-0.49765,5v-0.27965 ^
        2v0.57084,3v0.40365,4v0.27965,5v0.49765

REM Dolby Pro Logic II LFE - 0x3F -  FL FR FC LFE BL BR
if %_CHANNELS% EQU 6 set _REMIX=remix -m ^
        1v0.51462,3v0.36389,4v0.36389,5v-0.44864,6v-0.25211 ^
        2v0.51462,3v0.36389,4v0.36389,5v0.25211,6v0.44864

REM Dolby Pro Logic IIx - 0x63F -  FL FR FC LFE BL BR SL SR
if %_CHANNELS% EQU 8 set _REMIX=remix -m ^
        1v0.43955,3v0.31081,4v0.31081,5v-0.38319,6v-0.21533,7v-0.35164,8v-0.26373 ^
        2v0.43955,3v0.31081,4v0.31081,5v0.21533,6v0.38319,7v0.26373,8v0.35164

set errorlevel=
rem --temp "%TMP%"
set _OUTPAR=-V0 -q %_IN_TYPE% %_IN_FILE% %_RESAMPLE% %_OUTTYPE% %_QUALITY% --no-dither --channels 2 - %_TRIM% %_REMIX%

if "%_DEBUG%" NEQ "" echo %date% %time%        %_SOXFILE%        %_OUTPAR%>>%_LOGFILE%
%_SOXFILE% %_OUTPAR%
if ERRORLEVEL 1 echo %date% %time%        Error        %errorlevel%        %_IN_FILE%>>%_LOGFILE%

ENDLOCAL
goto :EOF

:LOGSIZE
if NOT exist "%~1" goto :EOF
if %~z10 GTR %~20 move /y "%~1" "%~1.bak" >NUL
goto :EOF

:SOXVER
if %~z10 EQU %~z20 goto :EOF
move /y "%~1" "%~1_old" >NUL
copy  "%~2" "%~1" >NUL
echo %date% %time%        "%~nx2" moved>>%_LOGFILE%
goto :EOF

This is working quite well but seems to "hang" occasionally.
I assume this is due to to the fact, that I have to call an external program (soxchannels.exe I have written) to evaluate the channel count of the file to be down-mixed.

Is there any substitution within custom-convert.conf I could use for channel count evaluation?:

Known substitutions:
Code:

# Substitution strings for variable capabilities
# %f - file path (local files)
# %F - full URL (remote streams)
#
# %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
#
# %b - limit bitrate: b/s
# %B - limit bitrate: kb/s
# %d - samplerate: samples/s
# %D - samplerate: ksamples/s


Viewing all articles
Browse latest Browse all 5300

Trending Articles