You are not logged in.
I have a very strong audio effects stack on EasyEffects, it sounds fine on my sound setup. When I record with OBS, the Desktop Audio correctly captures my system audio before it is passed onto EasyEffects, the pre-processed audio. Steam, however, incorrectly captures the audio after it has been processed by EasyEffects.
For me, this makes the recordings sound horrible because my already extreme audio effects stack is being applied twice on the original game audio, and if I share those videos these'll have my audio effects all over it, making it a poor experience for everyone else.
Why does this work correctly on OBS but broken on Steam?
Is there a workaroud for this?
Is this something that I should report on the Arch repo bug tracker?
Does anyone have/had this same experience on Debian/Ubuntu?
Offline
EasyEffects is normally a distinct/additional source that you should be able to configure the steam recorder to use the originating HW source instead.
While having such a situation what's your output for
pactl list sources
pactl list source-outputsOffline
With a Steam game running and Record in Background already turned on, here's my command output:
> pactl list sources
Source #71
State: RUNNING
Name: easyeffects_sink.monitor
Description: Monitor of Easy Effects Sink
Driver: PipeWire
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: easyeffects_sink
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
application.id = "com.github.wwmm.easyeffects"
media.class = "Audio/Sink"
node.name = "easyeffects_sink"
device.description = "Easy Effects Sink"
node.virtual = "true"
node.group = "ee_sink_group"
node.link-group = "ee_sink_group"
factory.name = "support.null-audio-sink"
audio.position = "FL,FR"
monitor.channel-volumes = "false"
monitor.passthrough = "true"
priority.session = "0"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "70"
node.driver = "true"
port.group = "stream.0"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "71"
object.serial = "71"
node.driver-id = "172"
device.class = "monitor"
Formats:
pcm
Source #72
State: IDLE
Name: easyeffects_source
Description: Easy Effects Source
Driver: PipeWire
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: n/a
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
application.id = "com.github.wwmm.easyeffects"
media.class = "Audio/Source/Virtual"
node.name = "easyeffects_source"
device.description = "Easy Effects Source"
node.virtual = "true"
node.group = "ee_source_group"
node.link-group = "ee_source_group"
factory.name = "support.null-audio-sink"
audio.position = "FL,FR"
monitor.channel-volumes = "false"
monitor.passthrough = "true"
priority.session = "0"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "70"
node.driver = "true"
port.group = "stream.0"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "72"
object.serial = "72"
node.driver-id = "172"
Formats:
pcm
Source #6430
State: RUNNING
Name: alsa_output.pci-0000_06_00.6.analog-stereo.monitor
Description: Monitor of Ryzen HD Audio Controller Analog Stereo
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: alsa_output.pci-0000_06_00.6.analog-stereo
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY
Properties:
object.path = "alsa:acp:Generic_1:3:playback"
api.alsa.path = "front:2"
api.alsa.pcm.card = "2"
api.alsa.pcm.stream = "playback"
port.group = "playback"
device.icon_name = "audio-card-analog"
device.bus = "pci"
audio.channels = "2"
audio.position = "[ FL, FR ]"
device.routes = "2"
alsa.resolution_bits = "16"
alsa.card = "2"
alsa.card_name = "HD-Audio Generic"
alsa.long_card_name = "HD-Audio Generic at 0xd15c0000 irq 108"
alsa.driver_name = "snd_hda_intel"
alsa.mixer_name = "Realtek ALC293"
alsa.components = "HDA:10ec0293,155870f2,00100003"
alsa.id = "Generic_1"
device.api = "alsa"
device.class = "monitor"
alsa.class = "generic"
alsa.subclass = "generic-mix"
alsa.name = "ALC293 Analog"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.device = "0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
device.profile.name = "analog-stereo"
device.profile.description = "Analog Stereo"
card.profile.device = "3"
device.id = "184"
factory.name = "api.alsa.pcm.sink"
node.pause-on-idle = "false"
priority.driver = "1009"
priority.session = "1009"
media.class = "Audio/Sink"
node.name = "alsa_output.pci-0000_06_00.6.analog-stereo"
node.nick = "ALC293 Analog"
device.description = "Ryzen HD Audio Controller"
api.alsa.card.name = "HD-Audio Generic"
api.alsa.card.longname = "HD-Audio Generic at 0xd15c0000 irq 108"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "33"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "172"
object.serial = "6430"
node.max-latency = "16384/48000"
api.alsa.period-size = "1024"
api.alsa.period-num = "32"
api.alsa.headroom = "0"
node.driver-id = "172"
device.enum.api = "udev"
api.alsa.card = "2"
device.plugged.usec = "12137973"
device.bus_path = "pci-0000:06:00.6"
sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:06:00.6/sound/card2"
device.subsystem = "sound"
device.vendor.id = "0x1022"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
device.product.id = "0x15e3"
device.product.name = "Ryzen HD Audio Controller"
device.name = "alsa_card.pci-0000_06_00.6"
device.nick = "HD-Audio Generic"
api.alsa.use-acp = "true"
api.acp.auto-profile = "false"
api.acp.auto-port = "false"
api.dbus.ReserveDevice1.Priority = "-20"
api.alsa.split-enable = "true"
api.dbus.ReserveDevice1 = "Audio2"
spa.object.id = "6"
device.string = "2"
Ports:
analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 4, not available)
analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 3, availability unknown)
Active Port: analog-output-headphones
Formats:
pcm
Source #6431
State: SUSPENDED
Name: alsa_input.pci-0000_06_00.6.analog-stereo
Description: Ryzen HD Audio Controller Analog Stereo
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 11801 / 18% / -44.67 dB, front-right: 11801 / 18% / -44.67 dB
balance 0.00
Base Volume: 6554 / 10% / -60.00 dB
Monitor of Sink: n/a
Latency: 0 usec, configured 0 usec
Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
Properties:
object.path = "alsa:acp:Generic_1:0:capture"
api.alsa.path = "front:2"
api.alsa.pcm.card = "2"
api.alsa.pcm.stream = "capture"
port.group = "capture"
device.icon_name = "audio-card-analog"
device.bus = "pci"
audio.channels = "2"
audio.position = "[ FL, FR ]"
device.routes = "3"
alsa.resolution_bits = "16"
alsa.card = "2"
alsa.card_name = "HD-Audio Generic"
alsa.long_card_name = "HD-Audio Generic at 0xd15c0000 irq 108"
alsa.driver_name = "snd_hda_intel"
alsa.mixer_name = "Realtek ALC293"
alsa.components = "HDA:10ec0293,155870f2,00100003"
alsa.id = "Generic_1"
device.api = "alsa"
device.class = "sound"
alsa.class = "generic"
alsa.subclass = "generic-mix"
alsa.name = "ALC293 Analog"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.device = "0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
device.profile.name = "analog-stereo"
device.profile.description = "Analog Stereo"
card.profile.device = "0"
device.id = "184"
factory.name = "api.alsa.pcm.source"
node.pause-on-idle = "false"
priority.driver = "2009"
priority.session = "2009"
media.class = "Audio/Source"
node.name = "alsa_input.pci-0000_06_00.6.analog-stereo"
node.nick = "ALC293 Analog"
device.description = "Ryzen HD Audio Controller"
api.alsa.card.name = "HD-Audio Generic"
api.alsa.card.longname = "HD-Audio Generic at 0xd15c0000 irq 108"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "33"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "132"
object.serial = "6431"
device.enum.api = "udev"
api.alsa.card = "2"
device.plugged.usec = "12137973"
device.bus_path = "pci-0000:06:00.6"
sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:06:00.6/sound/card2"
device.subsystem = "sound"
device.vendor.id = "0x1022"
device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
device.product.id = "0x15e3"
device.product.name = "Ryzen HD Audio Controller"
device.name = "alsa_card.pci-0000_06_00.6"
device.nick = "HD-Audio Generic"
api.alsa.use-acp = "true"
api.acp.auto-profile = "false"
api.acp.auto-port = "false"
api.dbus.ReserveDevice1.Priority = "-20"
api.alsa.split-enable = "true"
api.dbus.ReserveDevice1 = "Audio2"
spa.object.id = "6"
device.string = "2"
Ports:
analog-input-front-mic: Front Microphone (type: Mic, priority: 8500, availability group: Legacy 1, not available)
analog-input-internal-mic: Internal Microphone (type: Mic, priority: 8900, availability group: Legacy 2, availability unknown)
analog-input-headset-mic: Headset Microphone (type: Headset, priority: 8800, availability group: Legacy 3, availability unknown)
Active Port: analog-input-internal-mic
Formats:
pcm
> pactl list source-outputs
Source Output #199
Driver: PipeWire
Owner Module: n/a
Client: 197
Source: 71
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"float32le\"" format.rate = "48000" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: no
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Source Latency: 0 usec
Resample method: PipeWire
Properties:
client.api = "pipewire-pulse"
pulse.server.type = "unix"
application.name = "OBS"
application.icon_name = "obs"
media.role = "production"
application.process.id = "1938"
application.process.user = "muizz"
application.process.host = "Muizz-PC"
application.process.binary = "obs"
application.language = "en_GB.UTF-8"
window.x11.display = ":0"
application.process.machine_id = "7b0b1534b0e340eea02a8161e25b1830"
application.process.session_id = "3"
media.name = "Desktop Audio"
pulse.corked = "false"
node.rate = "1/48000"
node.latency = "1200/48000"
target.object = "easyeffects_sink"
stream.capture.sink = "true"
stream.is-live = "true"
node.name = "OBS"
node.want-driver = "true"
node.autoconnect = "true"
node.dont-reconnect = "true"
media.class = "Stream/Input/Audio"
port.group = "stream.0"
adapt.follower.spa-node = ""
object.register = "false"
factory.id = "7"
clock.quantum-limit = "8192"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
client.id = "151"
object.id = "152"
object.serial = "199"
pulse.attr.fragsize = "9600"
pulse.attr.maxlength = "4194304"
node.driver-id = "172"
module-stream-restore.id = "source-output-by-media-role:production"
Source Output #201
Driver: PipeWire
Owner Module: n/a
Client: n/a
Source: 4294967295
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"float32ne\"" format.rate = "48000" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: no
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Source Latency: 0 usec
Resample method: PipeWire
Properties:
factory.name = "support.null-audio-sink"
media.class = "Stream/Input/Audio"
node.virtual = "true"
audio.position = "[ FL, FR ]"
node.name = "OBS: Application Audio Capture (PipeWire)"
audio.channels = "2"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "153"
node.driver = "true"
port.group = "stream.0"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "154"
object.serial = "201"
node.driver-id = "172"
Source Output #212
Driver: PipeWire
Owner Module: n/a
Client: 200
Source: 4294967295
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"float32ne\"" format.rate = "48000" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: no
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Source Latency: 0 usec
Resample method: PipeWire
Properties:
media.name = "Application Audio Capture (PipeWire)"
media.type = "Audio"
media.category = "Capture"
media.role = "production"
node.want-driver = "false"
stream.capture.sink = "true"
node.name = "OBS: Application Audio Capture (PipeWire)"
stream.is-live = "true"
target.object = "201"
node.target = "154"
node.autoconnect = "true"
node.dont-reconnect = "true"
node.loop.class = "main"
node.async = "true"
media.class = "Stream/Input/Audio"
port.group = "stream.0"
adapt.follower.spa-node = ""
object.register = "false"
factory.id = "9"
clock.quantum-limit = "8192"
node.loop.name = "PipeWire thread"
library.name = "audioconvert/libspa-audioconvert"
client.id = "153"
object.id = "165"
object.serial = "212"
node.driver-id = "172"
module-stream-restore.id = "source-output-by-media-role:production"
Source Output #6710
Driver: PipeWire
Owner Module: n/a
Client: 6709
Source: 6430
Sample Specification: s16le 2ch 48000Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"s16le\"" format.rate = "48000" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: no
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Buffer Latency: 0 usec
Source Latency: 0 usec
Resample method: PipeWire
Properties:
client.api = "pipewire-pulse"
pulse.server.type = "unix"
application.name = "Steam"
application.process.id = "3403"
application.process.user = "muizz"
application.process.host = "Muizz-PC"
application.process.binary = "steam"
window.x11.display = ":0"
application.language = "C"
application.process.machine_id = "7b0b1534b0e340eea02a8161e25b1830"
application.process.session_id = "3"
media.name = "steam"
pulse.corked = "false"
node.rate = "1/48000"
node.latency = "480/48000"
target.object = "alsa_output.pci-0000_06_00.6.analog-stereo"
stream.capture.sink = "true"
stream.is-live = "true"
node.name = "Steam"
node.want-driver = "true"
node.autoconnect = "true"
media.class = "Stream/Input/Audio"
port.group = "stream.0"
adapt.follower.spa-node = ""
object.register = "false"
factory.id = "7"
clock.quantum-limit = "8192"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
client.id = "96"
object.id = "51"
object.serial = "6710"
node.driver-id = "172"
pulse.attr.maxlength = "4194304"
pulse.attr.fragsize = "1920"
module-stream-restore.id = "source-output-by-application-name:Steam"Offline
Mhm "technically" steam grabs the audio from the actual audio card sink but it's likely already relevantly aggregrated, so you actually want to capture from the easy effect source.
pactl move-source-output 6710 71 Pay attention to the source output numbers, they can change between invocations (in this case 6710 should be your steam recording and 71 your easy effect monitor, where OBS is currently listening on) but generally this selection should stick for subsequent recordings of the same client if it doesn't forcefully overrides this itself.
Alternatively if you don't want to rely on somewhat arcane command lines maybe give pavucontrol a shot for a simple GUI to move things around
Last edited by V1del (2026-09-30 16:18:30)
Offline