You are not logged in.

#1 2024-08-25 21:54:57

cshor28
Member
Registered: 2024-08-25
Posts: 2

Please help with setting up 7.1 surround...

I have a newish install about 2 days old of arch. I am using dual boot, and I have steelseries arctis pro wireless headset, now I have already followed this tutorial... https://www.youtube.com/watch?v=Dc4lSt_-_uw but... I am not sure it is any better, I have the atmos.wav that I shoved in there. I go to system settings (using kde) and I see virtual surround sink, I select that device but... it really doesn't do anything at least anything better. I am only keeping windows for the call of duty, but would really really like to stay on linux, it would be awesome if I didn't have just stereo sound everywhere, I have almost got my software development environment all setup aswell... but I have dealt with linux off an on for years, web servers, ubuntu, centos, RHEL, but never used it as a daily driver. Gonna give this a real chance here. please help. I believe I am using pipewire, however when I type systemctl status pipewire, it says that pipewire.service not found. so that is curious.

edit below... hopefully this is more helpful than just help... I don't really have errors other than the fact I just know it isn't working, after I did these steps, it is still just very much stereo.
so here is what I did.
I went to the directory /usr/share/pipewire/

I then copied the pipewire.conf file

I then navigated to /home/.config/

I then pasted the config file in there, I opened the file and went to the section context.modules = [] and pasted the below file inside:

Ok so I am using pipewire, or at least the system is, so I went to this URL, which is reachable through the pipewires own website https://gitlab.freedesktop.org/pipewire … esuvi.conf:
I copied this config section:

    { name = libpipewire-module-filter-chain
        flags = [ nofail ]
        args = {
            node.description = "Virtual Surround Sink"
            media.name       = "Virtual Surround Sink"
            filter.graph = {
                nodes = [
                    # duplicate inputs
                    { 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 hrir - HeSuVi 14-channel WAV (not the *-.wav variants) (note: */44/* in HeSuVi are the same, but resampled to 44100)
                    { type = builtin label = convolver name = convFL_L config = { filename = "hrir_hesuvi/hrir.wav" channel =  0 } }
                    { type = builtin label = convolver name = convFL_R config = { filename = "hrir_hesuvi/hrir.wav" channel =  1 } }
                    { type = builtin label = convolver name = convSL_L config = { filename = "hrir_hesuvi/hrir.wav" channel =  2 } }
                    { type = builtin label = convolver name = convSL_R config = { filename = "hrir_hesuvi/hrir.wav" channel =  3 } }
                    { type = builtin label = convolver name = convRL_L config = { filename = "hrir_hesuvi/hrir.wav" channel =  4 } }
                    { type = builtin label = convolver name = convRL_R config = { filename = "hrir_hesuvi/hrir.wav" channel =  5 } }
                    { type = builtin label = convolver name = convFC_L config = { filename = "hrir_hesuvi/hrir.wav" channel =  6 } }
                    { type = builtin label = convolver name = convFR_R config = { filename = "hrir_hesuvi/hrir.wav" channel =  7 } }
                    { type = builtin label = convolver name = convFR_L config = { filename = "hrir_hesuvi/hrir.wav" channel =  8 } }
                    { type = builtin label = convolver name = convSR_R config = { filename = "hrir_hesuvi/hrir.wav" channel =  9 } }
                    { type = builtin label = convolver name = convSR_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 10 } }
                    { type = builtin label = convolver name = convRR_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 11 } }
                    { type = builtin label = convolver name = convRR_L config = { filename = "hrir_hesuvi/hrir.wav" channel = 12 } }
                    { type = builtin label = convolver name = convFC_R config = { filename = "hrir_hesuvi/hrir.wav" channel = 13 } }

                    # treat LFE as FC
                    { type = builtin label = convolver name = convLFE_L config = { filename = "hrir_hesuvi/hrir.wav" channel =  6 } }
                    { type = builtin label = convolver name = convLFE_R config = { filename = "hrir_hesuvi/hrir.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" }
                ]
                inputs  = [ "copyFL:In" "copyFR:In" "copyFC:In" "copyLFE:In" "copyRL:In" "copyRR:In", "copySL:In", "copySR:In" ]
                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 ]
            }
        }
    }
and pasted it within the context.modules [] at the end.

I then went to https://airtable.com/appayGNkn3nSuXkaz/ … ZKWJDnLtTc and downloaded the atmos.wav file, I moved that into the same directory as the .config file I copied earlier, so this would be home/.config/

I then copied that file path and replaced all of the "hrir_hesuvi/hrir.wav" with the correct file path to the file, including the atmos.wav.

I then rebooted. now there is a "virtual surround sink" under the settings application, and sound tab. I change to that I really don't hear any difference in sound.

do I need to go into the konsole and tell it something specific with my device? if you need anything to help me just let me know I will do the command and tell you the results.

Last edited by cshor28 (2024-08-26 15:08:51)

Offline

#2 2025-09-17 07:58:12

carmik
Member
Registered: 2025-08-31
Posts: 26

Re: Please help with setting up 7.1 surround...

Rather old thread, and I don't know if you have found any solution, but I'm struggling with the exact same thing.

You should place the pipewire.conf file under ~/.config/pipewire and the hesuvi conf under ~/.config/pipewire/pipewire.conf,d/

Then do a systemctl --user restart wireplumber pipewire pipewire-pulse. Do a sound check on the virtual device: do you hear each test coming from a "direction" for each channel (ie FR, R, SR etc?).

It has not worked for me though, I'm struggling with errors when trying to reproduce sound.

Offline

Board footer

Powered by FluxBB