# An example filter chain that makes a stereo sink that mixes
# the FL and FR channels to FL, FR, LFE
#
# Copy this file into a conf.d/ directory
#
context.modules = [
    { name = libpipewire-module-filter-chain
        args = {
            node.description = "LFE example"
            media.name       = "LFE example"
            filter.graph = {
                nodes = [
                    { name = copyIL type = builtin label = copy }
                    { name = copyOL type = builtin label = copy }
                    { name = copyIR type = builtin label = copy }
                    { name = copyOR type = builtin label = copy }
                    {
                        name   = mix
                        type   = builtin
                        label  = mixer
                        control = {
                          "Gain 1" = 0.5
                          "Gain 2" = 0.5
                        }
                    }
                    {
                        type  = builtin
                        name  = lpLFE
                        label = bq_lowpass
                        control = { "Freq" = 150.0 }
                    }
                ]
                links = [
                    { output = "copyIL:Out" input = "copyOL:In" }
                    { output = "copyIR:Out" input = "copyOR:In" }
                    { output = "copyIL:Out" input = "mix:In 1" }
                    { output = "copyIR:Out" input = "mix:In 2" }
                    { output = "mix:Out" input = "lpLFE:In" }
                ]
                inputs  = [ "copyIL:In" "copyIR:In" ]
                outputs = [ "copyOL:Out" "copyOR:Out" "lpLFE:Out"]
            }
            capture.props = {
                node.name         = "input_lfe"
                audio.position    = [ FL FR ]
                media.class       = "Audio/Sink"
            }
            playback.props = {
                node.name         = "output_lfe"
                audio.position    = [ FL FR LFE ]
                stream.dont-remix = true
                node.passive      = true
            }
        }
    }
]
