mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2025-12-08 22:48:00 -08:00
update
This commit is contained in:
100
.config/pipewire/filter-chain/demonic.conf
Normal file
100
.config/pipewire/filter-chain/demonic.conf
Normal file
@@ -0,0 +1,100 @@
|
||||
# filter-chain example config file for PipeWire version "0.3.51" #
|
||||
context.properties = {
|
||||
## Configure properties in the system.
|
||||
#mem.warn-mlock = false
|
||||
#mem.allow-mlock = true
|
||||
#mem.mlock-all = false
|
||||
log.level = 0
|
||||
}
|
||||
|
||||
context.spa-libs = {
|
||||
#<factory-name regex> = <library-name>
|
||||
#
|
||||
# Used to find spa factory names. It maps an spa factory name
|
||||
# regular expression to a library name that should contain
|
||||
# that factory.
|
||||
#
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
support.* = support/libspa-support
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
# Uses realtime scheduling to boost the audio thread priorities
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
#rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
|
||||
# The native communication protocol.
|
||||
{ name = libpipewire-module-protocol-native }
|
||||
|
||||
# Allows creating nodes that run in the context of the
|
||||
# client. Is used by all clients that want to provide
|
||||
# data to PipeWire.
|
||||
{ name = libpipewire-module-client-node }
|
||||
|
||||
# Makes a factory for wrapping nodes in an adapter with a
|
||||
# converter and resampler.
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
#audio.format = F32
|
||||
#audio.rate = 48000
|
||||
audio.channels = 2
|
||||
audio.position = [ FL FR ]
|
||||
node.description = "Demonic example"
|
||||
media.name = "Demonic example"
|
||||
filter.graph = {
|
||||
nodes = [
|
||||
{
|
||||
name = rev
|
||||
type = ladspa
|
||||
plugin = revdelay_1605
|
||||
label = revdelay
|
||||
control = {
|
||||
"Delay Time (s)" = 2.0
|
||||
}
|
||||
}
|
||||
{
|
||||
name = pitch
|
||||
type = ladspa
|
||||
plugin = am_pitchshift_1433
|
||||
label = amPitchshift
|
||||
control = {
|
||||
"Pitch shift" = 0.6
|
||||
}
|
||||
}
|
||||
{
|
||||
name = rev2
|
||||
type = ladspa
|
||||
plugin = g2reverb
|
||||
label = G2reverb
|
||||
control = {
|
||||
"Reverb tail" = 0.5
|
||||
"Damping" = 0.9
|
||||
}
|
||||
}
|
||||
]
|
||||
links = [
|
||||
{ output = "rev:Output" input = "pitch:Input" }
|
||||
{ output = "pitch:Output" input = "rev2:In L" }
|
||||
]
|
||||
inputs = [ "rev:Input" ]
|
||||
outputs = [ "rev2:Out L" ]
|
||||
}
|
||||
capture.props = {
|
||||
node.name = "effect_input.filter-chain-demonic"
|
||||
#media.class = Audio/Sink
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "effect_output.filter-chain-demonic"
|
||||
#media.class = Audio/Source
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
49
.config/pipewire/filter-chain/duplicate-FL.conf
Normal file
49
.config/pipewire/filter-chain/duplicate-FL.conf
Normal file
@@ -0,0 +1,49 @@
|
||||
# An example filter chain for duplicating the FL channel
|
||||
# to FL and FR.
|
||||
#
|
||||
# Copy this file into a conf.d/ directory
|
||||
#
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
node.description = "Remap example"
|
||||
media.name = "Remap example"
|
||||
filter.graph = {
|
||||
nodes = [
|
||||
{
|
||||
name = copyIL
|
||||
type = builtin
|
||||
label = copy
|
||||
}
|
||||
{
|
||||
name = copyOL
|
||||
type = builtin
|
||||
label = copy
|
||||
}
|
||||
{
|
||||
name = copyOR
|
||||
type = builtin
|
||||
label = copy
|
||||
}
|
||||
]
|
||||
links = [
|
||||
# we can only tee from nodes, not inputs so we need
|
||||
# to copy the inputs and then tee.
|
||||
{ output = "copyIL:Out" input = "copyOL:In" }
|
||||
{ output = "copyIL:Out" input = "copyOR:In" }
|
||||
]
|
||||
inputs = [ "copyIL:In" ]
|
||||
outputs = [ "copyOL:Out" "copyOR:Out" ]
|
||||
}
|
||||
capture.props = {
|
||||
node.name = "remap_input.remap-FL-to-FL-FR"
|
||||
audio.position = [ FL ]
|
||||
stream.dont-remix = true
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "remap_output.remap-FL-to-FL-FR"
|
||||
audio.position = [ FL FR ]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
66
.config/pipewire/filter-chain/sink-dolby-surround.conf
Normal file
66
.config/pipewire/filter-chain/sink-dolby-surround.conf
Normal file
@@ -0,0 +1,66 @@
|
||||
# Dolby Surround encoder sink
|
||||
#
|
||||
# start with pipewire -c filter-chain/sink-dolby-surround.conf
|
||||
#
|
||||
context.properties = {
|
||||
log.level = 0
|
||||
}
|
||||
|
||||
context.spa-libs = {
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
support.* = support/libspa-support
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
#rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
{ name = libpipewire-module-protocol-native }
|
||||
{ name = libpipewire-module-client-node }
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
node.description = "Dolby Surround Sink"
|
||||
media.name = "Dolby Surround Sink"
|
||||
filter.graph = {
|
||||
nodes = [
|
||||
{
|
||||
type = builtin
|
||||
name = mixer
|
||||
label = mixer
|
||||
control = { "Gain 1" = 0.5 "Gain 2" = 0.5 }
|
||||
}
|
||||
{
|
||||
type = ladspa
|
||||
name = enc
|
||||
plugin = surround_encoder_1401
|
||||
label = surroundEncoder
|
||||
}
|
||||
]
|
||||
links = [
|
||||
{ output = "mixer:Out" input = "enc:S" }
|
||||
]
|
||||
inputs = [ "enc:L" "enc:R" "enc:C" null "mixer:In 1" "mixer:In 2" ]
|
||||
outputs = [ "enc:Lt" "enc:Rt" ]
|
||||
}
|
||||
capture.props = {
|
||||
node.name = "effect_input.dolby_surround"
|
||||
media.class = Audio/Sink
|
||||
audio.channels = 6
|
||||
audio.position = [ FL FR FC LFE SL SR ]
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "effect_output.dolby_surround"
|
||||
node.passive = true
|
||||
audio.channels = 2
|
||||
audio.position = [ FL FR ]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
90
.config/pipewire/filter-chain/sink-eq6.conf
Normal file
90
.config/pipewire/filter-chain/sink-eq6.conf
Normal file
@@ -0,0 +1,90 @@
|
||||
# 6 band sink equalizer
|
||||
#
|
||||
# start with pipewire -c filter-chain/sink-eq6.conf
|
||||
#
|
||||
context.properties = {
|
||||
log.level = 0
|
||||
}
|
||||
|
||||
context.spa-libs = {
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
support.* = support/libspa-support
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
#rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
{ name = libpipewire-module-protocol-native }
|
||||
{ name = libpipewire-module-client-node }
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
node.description = "Equalizer Sink"
|
||||
media.name = "Equalizer Sink"
|
||||
filter.graph = {
|
||||
nodes = [
|
||||
{
|
||||
type = builtin
|
||||
name = eq_band_1
|
||||
label = bq_lowshelf
|
||||
control = { "Freq" = 100.0 "Q" = 1.0 "Gain" = 0.0 }
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
name = eq_band_2
|
||||
label = bq_peaking
|
||||
control = { "Freq" = 100.0 "Q" = 1.0 "Gain" = 0.0 }
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
name = eq_band_3
|
||||
label = bq_peaking
|
||||
control = { "Freq" = 500.0 "Q" = 1.0 "Gain" = 0.0 }
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
name = eq_band_4
|
||||
label = bq_peaking
|
||||
control = { "Freq" = 2000.0 "Q" = 1.0 "Gain" = 0.0 }
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
name = eq_band_5
|
||||
label = bq_peaking
|
||||
control = { "Freq" = 5000.0 "Q" = 1.0 "Gain" = 0.0 }
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
name = eq_band_6
|
||||
label = bq_highshelf
|
||||
control = { "Freq" = 5000.0 "Q" = 1.0 "Gain" = 0.0 }
|
||||
}
|
||||
]
|
||||
links = [
|
||||
{ output = "eq_band_1:Out" input = "eq_band_2:In" }
|
||||
{ output = "eq_band_2:Out" input = "eq_band_3:In" }
|
||||
{ output = "eq_band_3:Out" input = "eq_band_4:In" }
|
||||
{ output = "eq_band_4:Out" input = "eq_band_5:In" }
|
||||
{ output = "eq_band_5:Out" input = "eq_band_6:In" }
|
||||
]
|
||||
}
|
||||
audio.channels = 2
|
||||
audio.position = [ FL FR ]
|
||||
capture.props = {
|
||||
node.name = "effect_input.eq6"
|
||||
media.class = Audio/Sink
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "effect_output.eq6"
|
||||
node.passive = true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
59
.config/pipewire/filter-chain/sink-matrix-spatialiser.conf
Normal file
59
.config/pipewire/filter-chain/sink-matrix-spatialiser.conf
Normal file
@@ -0,0 +1,59 @@
|
||||
# Matrix Spatialiser sink
|
||||
#
|
||||
# start with pipewire -c filter-chain/sink-matrix-spatialiser.conf
|
||||
# ( Jean-Philippe Guillemin <hyp3ri0n@sfr.fr> )
|
||||
|
||||
context.properties = {
|
||||
log.level = 0
|
||||
}
|
||||
|
||||
context.spa-libs = {
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
support.* = support/libspa-support
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
#rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
{ name = libpipewire-module-protocol-native }
|
||||
{ name = libpipewire-module-client-node }
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
node.description = "Matrix Spatialiser"
|
||||
media.name = "Matrix Spatialiser"
|
||||
filter.graph = {
|
||||
nodes = [
|
||||
{
|
||||
type = ladspa
|
||||
name = matrix
|
||||
plugin = matrix_spatialiser_1422
|
||||
label = matrixSpatialiser
|
||||
control = {
|
||||
"Width" = 80
|
||||
}
|
||||
}
|
||||
]
|
||||
inputs = [ "matrix:Input L" "matrix:Input R" ]
|
||||
outputs = [ "matrix:Output L" "matrix:Output R" ]
|
||||
}
|
||||
audio.channels = 2
|
||||
audio.position = [ FL FR ]
|
||||
capture.props = {
|
||||
node.name = "effect_input.matrix_spatialiser"
|
||||
media.class = Audio/Sink
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "effect_output.matrix_spatialiser"
|
||||
node.passive = true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,197 @@
|
||||
# Convolver sink
|
||||
#
|
||||
# start with pipewire -c filter-chain/sink-virtual-surround-5.1-kemar.conf
|
||||
#
|
||||
context.properties = {
|
||||
log.level = 0
|
||||
}
|
||||
|
||||
context.spa-libs = {
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
support.* = support/libspa-support
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
#rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
{ name = libpipewire-module-protocol-native }
|
||||
{ name = libpipewire-module-client-node }
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
node.description = "Virtual Surround Sink"
|
||||
media.name = "Virtual Surround Sink"
|
||||
filter.graph = {
|
||||
nodes = [
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convFL_L
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 0
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convFL_R
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 1
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convFR_L
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 1
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convFR_R
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 0
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convFC
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 2
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convLFE
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 3
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convSL_L
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 4
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convSL_R
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 5
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convSR_L
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 5
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = convolver
|
||||
name = convSR_R
|
||||
config = {
|
||||
filename = "hrir_kemar/hrir-kemar.wav"
|
||||
channel = 4
|
||||
}
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = mixer
|
||||
name = mixL
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = mixer
|
||||
name = mixR
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = copy
|
||||
name = copyFL
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = copy
|
||||
name = copyFR
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = copy
|
||||
name = copySL
|
||||
}
|
||||
{
|
||||
type = builtin
|
||||
label = copy
|
||||
name = copySR
|
||||
}
|
||||
]
|
||||
links = [
|
||||
{ output = "copyFL:Out" input = "convFL_L:In" }
|
||||
{ output = "copyFL:Out" input = "convFL_R:In" }
|
||||
{ output = "copyFR:Out" input = "convFR_R:In" }
|
||||
{ output = "copyFR:Out" input = "convFR_L:In" }
|
||||
|
||||
{ output = "copySL:Out" input = "convSL_L:In" }
|
||||
{ output = "copySL:Out" input = "convSL_R:In" }
|
||||
{ output = "copySR:Out" input = "convSR_R:In" }
|
||||
{ output = "copySR:Out" input = "convSR_L:In" }
|
||||
|
||||
{ output = "convFL_L:Out" input = "mixL:In 1" }
|
||||
{ output = "convFR_L:Out" input = "mixL:In 2" }
|
||||
{ output = "convFC:Out" input = "mixL:In 3" }
|
||||
{ output = "convLFE:Out" input = "mixL:In 4" }
|
||||
{ output = "convSL_L:Out" input = "mixL:In 5" }
|
||||
{ output = "convSR_L:Out" input = "mixL:In 6" }
|
||||
|
||||
{ output = "convFL_R:Out" input = "mixR:In 1" }
|
||||
{ output = "convFR_R:Out" input = "mixR:In 2" }
|
||||
{ output = "convFC:Out" input = "mixR:In 3" }
|
||||
{ output = "convLFE:Out" input = "mixR:In 4" }
|
||||
{ output = "convSL_R:Out" input = "mixR:In 5" }
|
||||
{ output = "convSR_R:Out" input = "mixR:In 6" }
|
||||
]
|
||||
inputs = [ "copyFL:In" "copyFR:In" "convFC:In" "convLFE:In" "copySL:In" "copySR:In" ]
|
||||
outputs = [ "mixL:Out" "mixR:Out" ]
|
||||
|
||||
}
|
||||
capture.props = {
|
||||
node.name = "effect_input.virtual-surround-5.1-kemar"
|
||||
media.class = Audio/Sink
|
||||
audio.channels = 6
|
||||
audio.position = [ FL FR FC LFE SL SR]
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "effect_output.virtual-surround-5.1-kemar"
|
||||
node.passive = true
|
||||
audio.channels = 2
|
||||
audio.position = [ FL FR ]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,121 @@
|
||||
# Convolver sink
|
||||
#
|
||||
# start with pipewire -c filter-chain/sink-virtual-surround-7.1-hesuvi.conf
|
||||
#
|
||||
context.properties = {
|
||||
log.level = 0
|
||||
}
|
||||
|
||||
context.spa-libs = {
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
support.* = support/libspa-support
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
#rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
{ name = libpipewire-module-protocol-native }
|
||||
{ name = libpipewire-module-client-node }
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
node.description = "Virtual Surround Sink"
|
||||
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 = 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" }
|
||||
]
|
||||
inputs = [ "copyFL:In" "copyFR:In" "copyFC:In" "copyLFE:In" "copyRL:In" "copyRR:In", "copySL:In", "copySR:In" ]
|
||||
outputs = [ "mixL:Out" "mixR:Out" ]
|
||||
}
|
||||
capture.props = {
|
||||
node.name = "effect_input.virtual-surround-7.1-hesuvi"
|
||||
media.class = Audio/Sink
|
||||
audio.channels = 8
|
||||
audio.position = [ FL FR FC LFE RL RR SL SR ]
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "effect_output.virtual-surround-7.1-hesuvi"
|
||||
node.passive = true
|
||||
audio.channels = 2
|
||||
audio.position = [ FL FR ]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
55
.config/pipewire/filter-chain/source-rnnoise.conf
Normal file
55
.config/pipewire/filter-chain/source-rnnoise.conf
Normal file
@@ -0,0 +1,55 @@
|
||||
# Noise canceling source
|
||||
#
|
||||
# start with pipewire -c filter-chain/source-rnnoise.conf
|
||||
#
|
||||
context.properties = {
|
||||
log.level = 0
|
||||
}
|
||||
|
||||
context.spa-libs = {
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
support.* = support/libspa-support
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
#rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
{ name = libpipewire-module-protocol-native }
|
||||
{ name = libpipewire-module-client-node }
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
{ name = libpipewire-module-filter-chain
|
||||
args = {
|
||||
node.description = "Noise Canceling source"
|
||||
media.name = "Noise Canceling source"
|
||||
filter.graph = {
|
||||
nodes = [
|
||||
{
|
||||
type = ladspa
|
||||
name = rnnoise
|
||||
plugin = librnnoise_ladspa
|
||||
label = noise_suppressor_stereo
|
||||
control = {
|
||||
"VAD Threshold (%)" 50.0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
audio.position = [ FL FR ]
|
||||
capture.props = {
|
||||
node.name = "effect_input.rnnoise"
|
||||
node.passive = true
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "effect_output.rnnoise"
|
||||
media.class = Audio/Source
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user