You are not logged in.

#1 2026-09-28 20:18:04

muizz
Member
Registered: 2025-02-12
Posts: 9

Steam records the post-processed output of EasyEffects, help

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

#2 2026-09-30 02:32:05

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,420

Re: Steam records the post-processed output of EasyEffects, help

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-outputs

Offline

#3 2026-09-30 12:35:25

muizz
Member
Registered: 2025-02-12
Posts: 9

Re: Steam records the post-processed output of EasyEffects, help

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

#4 2026-09-30 16:12:56

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,420

Re: Steam records the post-processed output of EasyEffects, help

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

Board footer

Powered by FluxBB