10
submitted 2 weeks ago by doomsdayrs@lemmy.ml to c/asklemmy@lemmy.ml

I have a "Corsair Void Elite" headset.

For the last few years, I have been using an HRTF alone to apply 7.1 Audio to my headset. But now I want to apply equalization from AutoEq.

Do I apply the equalization before or after the HRTF transformation?

Notes:

  • I am using a PipeWire filter chain on Fedora Atomic

Filter Chain Conflig

# Corsair VOID Elite DSP
# Applies 7.1 Audio transformation via HRTF

context.modules = [
	{
		name = libpipewire-module-filter-chain
		flags = [ nofail ]
		args = {
			node.description	= "Corsair VOID Elite DSP"
			media.name		= "Virtual Surround Sink"
			media.role		= "DSP"
			filter.graph = {
				nodes = [
					# duplicate inputs
					# This creates the 7.1 Audio Input
					{ 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 HRTF WAV
					{ type = builtin label = convolver name = convFL_L config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =0 } }
					{ type = builtin label = convolver name = convFL_R config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =1 } }
					{ type = builtin label = convolver name = convSL_L config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =2 } }
					{ type = builtin label = convolver name = convSL_R config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =3 } }
					{ type = builtin label = convolver name = convRL_L config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =4 } }
					{ type = builtin label = convolver name = convRL_R config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =5 } }
					{ type = builtin label = convolver name = convFC_L config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =6 } }
					{ type = builtin label = convolver name = convFR_R config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =7 } }
					{ type = builtin label = convolver name = convFR_L config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =8 } }
					{ type = builtin label = convolver name = convSR_R config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =9 } }
					{ type = builtin label = convolver name = convSR_L config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel = 10 } }
					{ type = builtin label = convolver name = convRR_R config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel = 11 } }
					{ type = builtin label = convolver name = convRR_L config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel = 12 } }
					{ type = builtin label = convolver name = convFC_R config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel = 13 } }

					# treat LFE as FC
					{ type = builtin label = convolver name = convLFE_L config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.wav" channel =6 } }
					{ type = builtin label = convolver name = convLFE_R config = { filename = "/home/doomsdayrs/.local/share/pipewire/Dolby-CorsairHeasetGamingSoftware.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" }
				]
				# Define the input
				inputs= [ "copyFL:In" "copyFR:In" "copyFC:In" "copyLFE:In" "copyRL:In" "copyRR:In", "copySL:In", "copySR:In" ]

				# Define the output
				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 ]
			}
		}
	}
]

top 1 comments
sorted by: hot top new old
[-] otacon239@lemmy.world 4 points 2 weeks ago* (last edited 2 weeks ago)

I don’t know that I’ve come across anything official for this case, but from my experience in audio engineering, you typically want to put the most “artistic” effects early in the stack and the most “utility” effects toward the end. So in this case, if I were you, I’d put the 7.1 effect at the end since it’s not likely to change often or be adjusted.

At the end of the day, test both and if one sounds better than the other to you, go with that one.

this post was submitted on 17 Jul 2026
10 points (100.0% liked)

Asklemmy

55130 readers
223 users here now

A loosely moderated place to ask open-ended questions

Search asklemmy 🔍

If your post meets the following criteria, it's welcome here!

  1. Open-ended question
  2. Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
  3. Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
  4. Not ad nauseam inducing: please make sure it is a question that would be new to most members
  5. An actual topic of discussion

Looking for support?

Looking for a community?

~Icon~ ~by~ ~@Double_A@discuss.tchncs.de~

founded 7 years ago
MODERATORS