Așa că am această problemă pe mufa de pe panoul frontal, care face ca sunetul să vină inversat, a fost așa pentru totdeauna, dar am reușit întotdeauna să schimb canalele fie pe Windows, fie pe ubuntu (prin pulseaudio) doar găsind un fișier de configurare și mapând pozițiile mele într-un mod care a lucrat.
Am instalat recent Pipewire pentru ușurința în streaming audio cu discord și altele asemenea, dar nu găsesc un indiciu clar cum să cartografiez canalele cu el.
Dacă cineva mi-ar putea arăta unde este fișierul de configurare corect și ce linie controlează postările canalului audio, aș fi bucuros și foarte recunoscător.
edit: Sunt pe ubuntu 21.10, pipewire este pe versiunea 3.34
My pipewire conf la etc/pipewire/pipewire.conf
# Fișier de configurare Daemon pentru versiunea PipeWire „0.3.32” #
#
# Copiați și editați acest fișier în /etc/pipewire pentru modificări la nivel de sistem
# sau în ~/.config/pipewire pentru modificări locale.
context.properties = {
## Configurați proprietățile în sistem.
#library.name.system = suport/libspa-support
#context.data-loop.library.name.system = suport/libspa-support
#support.dbus = adevărat
#link.max-buffers = 64
link.max-buffers = 16 # versiune < 3 clienții nu pot gestiona mai mult
#mem.warn-mlock = fals
#mem.allow-mlock = adevărat
#mem.mlock-all = fals
#clock.power-of-two-quantum = adevărat
#log.level = 2
audio.position = „FR,FL”
core.daemon = true # ascultând conexiunile socket
core.name = pipewire-0 # numele miezului și numele soclului
## Proprietăți pentru configurația DSP.
#default.clock.rate = 48000
#default.clock.quantum = 1024
#default.clock.min-quantum = 32
#default.clock.max-quantum = 8192
#default.video.width = 640
#default.video.height = 480
#default.video.rate.num = 25
#default.video.rate.denom = 1
#
# Aceste suprascrieri sunt aplicate numai atunci când rulează într-un vm.
vm.overrides = {
default.clock.min-quantum = 1024
}
}
context.spa-libs = {
#<nume-fabrică regex> = <nume-bibliotecă>
#
# Folosit pentru a găsi numele fabricilor de spa. Mapează numele unei fabrici de spa
# expresie regulată la un nume de bibliotecă care ar trebui să conțină
# acea fabrică.
#
audio.convert.* = audioconvert/libspa-audioconvert
api.alsa.* = alsa/libspa-alsa
api.v4l2.* = v4l2/libspa-v4l2
api.libcamera.* = libcamera/libspa-libcamera
api.bluez5.* = bluez5/libspa-bluez5
api.vulkan.* = vulkan/libspa-vulkan
api.jack.* = jack/libspa-jack
suport.* = suport/libspa-support
#videotestsrc = videotestsrc/libspa-videotestsrc
#audiotestsrc = audiotestsrc/libspa-audiotestsrc
}
context.module = [
#{ nume = <nume-modul>
# [ args = { <cheie> = <valoare> ... } ]
# [ flags = [[ ifexists ] [ nofail ] ]
#}
#
# Încarcă un modul cu parametrii dați.
# Dacă se dă ifexists, modulul este ignorat atunci când nu este găsit.
# Dacă este dat nofail, erorile de inițializare a modulului sunt ignorate.
#
# Utilizează RTKit pentru a spori prioritatea firului de date.
{ nume = libpipewire-module-rtkit
args = {
#nice.level = -11
#rt.prio = 88
#rt.time.soft = 2000000
#rt.time.hard = 2000000
}
steaguri = [dacă există nofail]
}
# Setați prioritățile firelor fără a utiliza RTKit.
#{ nume = libpipewire-module-rt
# args = {
# nice.level = -11
# rt.prio = 88
# rt.time.soft = 2000000
# rt.time.hard = 2000000
#}
# stegulețe = [ dacă există nofail ]
#}
# Protocolul de comunicare nativ.
{ nume = libpipewire-module-protocol-native }
# Modulul profil. Permite aplicației să acceseze profiler
# și date de performanță. Oferă o interfață care este utilizată
# de pw-top și pw-profiler.
{ nume = libpipewire-module-profiler }
# Permite aplicațiilor să creeze obiecte de metadate. Creeaza
# o fabrică pentru obiecte metadate.
{ nume = libpipewire-module-metadata }
# Creează o fabrică pentru fabricarea dispozitivelor care rulează în
# contextul serverului PipeWire.
{ nume = libpipewire-module-spa-device-factory }
# Creează o fabrică pentru realizarea de noduri care rulează în
# contextul serverului PipeWire.
{ nume = libpipewire-module-spa-node-factory }
# Permite crearea de noduri care rulează în contextul
# client. Este folosit de toți clienții care doresc să ofere
# de date către PipeWire.
{ nume = libpipewire-module-client-node }
# Permite crearea de dispozitive care rulează în contextul
# client. Este folosit de managerul de sesiune.
{ nume = libpipewire-module-client-device }
# Modulul portal monitorizează PID-ul procesului portal
# și etichetează conexiunile cu același PID ca portal
# conexiuni.
{ nume = libpipewire-module-portal
steaguri = [dacă există nofail]
}
# Modulul de acces poate efectua verificări de acces și blocare
# clienți noi.
{ nume = libpipewire-module-access
args = {
# access.allowed pentru a lista o serie de căi de permis
# de aplicații.
#access.allowed = [
# /usr/bin/pipewire-media-session
#]
# O serie de căi respinse.
#access.rejected = [ ]
# O serie de căi cu acces restricționat.
#access.restricted = [ ]
# Orice lucru care nu este în listele de mai sus este atribuit
# acces.permisiunea forțată.
#access.force = flatpak
}
}
# Realizează o fabrică pentru împachetarea nodurilor într-un adaptor cu a
# convertor și reeșantionare.
{ nume = libpipewire-module-adapter }
# Realizează o fabrică pentru crearea de legături între porturi.
{ nume = libpipewire-module-link-factory }
# Oferă fabrici pentru a face obiecte manager de sesiune.
{ nume = libpipewire-module-session-manager }
]
context.obiecte = [
#{ fabrică = <nume-fabrică>
# [ args = { <cheie> = <valoare> ... } ]
# [ flags = [[ nofail ] ]
#}
#
# Creează un obiect dintr-o fabrică PipeWire cu parametrii dați.
# Dacă se dă nofail, erorile sunt ignorate (și nu este creat niciun obiect).
#
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } }
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
#{ factory = adaptor args = { factory.name = audiotestsrc node.name = my-test } }
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
# Un driver fals implicit. Aceasta gestionează nodurile marcate cu „node.always-driver”
# proprietate când niciun alt driver nu este activ în prezent. Clienții JACK au nevoie de asta.
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Dummy-Driver
nod.grup = pipewire.dummy
prioritate.driver = 20000
}
}
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Freewheel-Driver
prioritate.driver = 19000
nod.grup = conductă.roată liberă
nod.freewheel = adevărat
}
}
Aceasta creează un nou nod Sursă. Va avea porturi de intrare
pe care le puteți conecta, pentru a furniza audio pentru această sursă.
{ fabrică = adaptor
args = {
factory.name = support.null-audio-sink
node.name = „microfonul meu”
node.description = „Microfon”
media.class = „Audio/Sursă/Virtual”
audio.position = „FR,FL”
}
}
Aceasta creează un singur dispozitiv sursă PCM pentru acel dat
calea dispozitivului alsa hw:0. Puteți schimba sursa în chiuvetă
a face o chiuvetă în același mod.
{ fabrică = adaptor
args = {
factory.name = api.alsa.pcm.source
node.name = "alsa-source"
node.description = "Sursa PCM"
media.class = „Audio/Sursă”
api.alsa.path = "hw:0"
api.alsa.period-size = 1024
api.alsa.headroom = 0
api.alsa.disable-mmap = false
api.alsa.disable-batch = false
audio.format = „S16LE”
audio.rate = 48000
audio.canale = 2
audio.position = „FR,FL”
}
}
]
context.exec = [
#{ cale = <nume-program> [ args = "<argumente>" ] }
#
# Executați programul dat cu argumente.
#
# Puteți porni opțional managerul de sesiune aici,
# dar este mai bine să-l porniți ca un serviciu systemd.
# Rulați managerul de sesiune cu -h pentru opțiuni.
#
#{ cale = "/usr/bin/pipewire-media-session" args = "" }
#
# Opțional, puteți porni și serverul pulseaudio aici
# dar este mai bine să-l porniți ca un serviciu systemd.
# Poate fi interesant să porniți un alt demon aici care să asculte
# pe o altă adresă cu opțiunea -a (de ex. -a tcp:4713).
#
#{ cale = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
]
canal-hartă = dreapta, stânga