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