diff --git a/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf b/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf index 3630c23a8..34a07dbcc 100644 --- a/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf +++ b/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf @@ -13,78 +13,105 @@ context.modules = [ media.name = "Virtual Surround Sink" filter.graph = { nodes = [ - # duplicate inputs - { type = builtin label = copy name = copyFL } - { type = builtin label = copy name = copyFR } - { type = builtin label = copy name = copyFC } - { type = builtin label = copy name = copyRL } - { type = builtin label = copy name = copyRR } - { type = builtin label = copy name = copySL } - { type = builtin label = copy name = copySR } - { type = builtin label = copy name = copyLFE } # apply hrir - HeSuVi 14-channel WAV (not the *-.wav variants) (note: */44/* in HeSuVi are the same, but resampled to 44100) - { type = builtin label = convolver name = convFL_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 0 } } - { type = builtin label = convolver name = convFL_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 1 } } - { type = builtin label = convolver name = convSL_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 2 } } - { type = builtin label = convolver name = convSL_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 3 } } - { type = builtin label = convolver name = convRL_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 4 } } - { type = builtin label = convolver name = convRL_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 5 } } - { type = builtin label = convolver name = convFC_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 6 } } - { type = builtin label = convolver name = convFR_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 7 } } - { type = builtin label = convolver name = convFR_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 8 } } - { type = builtin label = convolver name = convSR_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 9 } } - { type = builtin label = convolver name = convSR_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 10 } } - { type = builtin label = convolver name = convRR_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 11 } } - { type = builtin label = convolver name = convRR_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 12 } } - { type = builtin label = convolver name = convFC_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 13 } } - - # treat LFE as FC - { type = builtin label = convolver name = convLFE_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 6 } } - { type = builtin label = convolver name = convLFE_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 13 } } - - # stereo output - { type = builtin label = mixer name = mixL } + { type = builtin label = convolver2 name = convFL + config = { + impulses = [ + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 0 } # L + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 1 } # R + ] + } + } + { type = builtin label = convolver2 name = convFR + config = { + impulses = [ + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 8 } # L + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 7 } # R + ] + } + } + { type = builtin label = convolver2 name = convFC + config = { + impulses = [ + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 6 gain = 2.0} # L + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 13 gain = 2.0} # R + ] + } + } + { type = builtin label = convolver2 name = convLFE + config = { + impulses = [ + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 6 } # L + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 13 } # R + ] + } + } + { type = builtin label = convolver2 name = convSL + config = { + impulses = [ + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 2 } # L + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 3 } # R + ] + } + } + { type = builtin label = convolver2 name = convSR + config = { + impulses = [ + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 10 } # L + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 9 } # R + ] + } + } + { type = builtin label = convolver2 name = convRL + config = { + impulses = [ + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 4 } # L + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 5 } # R + ] + } + } + { type = builtin label = convolver2 name = convRR + config = { + impulses = [ + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 12 } # L + { filename = "/home/wim/src/pipewire/hrir_hesuvi/hesuvi.wav" channel = 11 } # R + ] + } + } + { type = builtin label = mixer name = mixL } { type = builtin label = mixer name = mixR } ] links = [ - # input - { output = "copyFL:Out" input="convFL_L:In" } - { output = "copyFL:Out" input="convFL_R:In" } - { output = "copySL:Out" input="convSL_L:In" } - { output = "copySL:Out" input="convSL_R:In" } - { output = "copyRL:Out" input="convRL_L:In" } - { output = "copyRL:Out" input="convRL_R:In" } - { output = "copyFC:Out" input="convFC_L:In" } - { output = "copyFR:Out" input="convFR_R:In" } - { output = "copyFR:Out" input="convFR_L:In" } - { output = "copySR:Out" input="convSR_R:In" } - { output = "copySR:Out" input="convSR_L:In" } - { output = "copyRR:Out" input="convRR_R:In" } - { output = "copyRR:Out" input="convRR_L:In" } - { output = "copyFC:Out" input="convFC_R:In" } - { output = "copyLFE:Out" input="convLFE_L:In" } - { output = "copyLFE:Out" input="convLFE_R:In" } - # output - { output = "convFL_L:Out" input="mixL:In 1" } - { output = "convFL_R:Out" input="mixR:In 1" } - { output = "convSL_L:Out" input="mixL:In 2" } - { output = "convSL_R:Out" input="mixR:In 2" } - { output = "convRL_L:Out" input="mixL:In 3" } - { output = "convRL_R:Out" input="mixR:In 3" } - { output = "convFC_L:Out" input="mixL:In 4" } - { output = "convFC_R:Out" input="mixR:In 4" } - { output = "convFR_R:Out" input="mixR:In 5" } - { output = "convFR_L:Out" input="mixL:In 5" } - { output = "convSR_R:Out" input="mixR:In 6" } - { output = "convSR_L:Out" input="mixL:In 6" } - { output = "convRR_R:Out" input="mixR:In 7" } - { output = "convRR_L:Out" input="mixL:In 7" } - { output = "convLFE_R:Out" input="mixR:In 8" } - { output = "convLFE_L:Out" input="mixL:In 8" } + { output = "convFL:Out 1" input="mixL:In 1" } + { output = "convFL:Out 2" input="mixR:In 1" } + + { output = "convSL:Out 1" input="mixL:In 2" } + { output = "convSL:Out 2" input="mixR:In 2" } + + { output = "convRL:Out 1" input="mixL:In 3" } + { output = "convRL:Out 2" input="mixR:In 3" } + + { output = "convFC:Out 1" input="mixL:In 4" } + { output = "convFC:Out 2" input="mixR:In 4" } + + { output = "convFR:Out 1" input="mixL:In 5" } + { output = "convFR:Out 2" input="mixR:In 5" } + + { output = "convSR:Out 1" input="mixL:In 6" } + { output = "convSR:Out 2" input="mixR:In 6" } + + { output = "convRR:Out 1" input="mixL:In 7" } + { output = "convRR:Out 2" input="mixR:In 7" } + + { output = "convLFE:Out 1" input="mixL:In 8" } + { output = "convLFE:Out 2" input="mixR:In 8" } ] - inputs = [ "copyFL:In" "copyFR:In" "copyFC:In" "copyLFE:In" "copyRL:In" "copyRR:In", "copySL:In", "copySR:In" ] + inputs = [ "convFL:In" "convFR:In" + "convFC:In" "convLFE:In" + "convRL:In" "convRR:In" + "convSL:In" "convSR:In" ] outputs = [ "mixL:Out" "mixR:Out" ] } capture.props = {