New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
mutichannel (routing)? #1126
Comments
Unfortunately not. There are other open issues asking for similar multichannel features too. But integrating them in an application that evolved around stereo audio processing is really hard. From the user interface to our presets system and effects pipeline the amount of changes required to handle multichannel features properly is huge. And to make things harder I do not have a surround system. My speakers are a stereo 2.0 from Edifier. They are good but not suitable to actually develop multichannel features. As what you ask seems to require that only the output node actually need to have more than 2 outputs it may be a little more doable than what other people are asking. Let's keep this issue open for now.
Like most of the plugins we use our convolver only has 2 input/output ports. A new plugin capable of outputting more than 2 channels while having 2 input channels would be required. And it would probably have to be the last plugin in the pipeline. |
so there is no wa to include a "split" plugin that splits the plugin chain into 2 or more (stereo ones)? |
the "output plugin" could have a split feature, where on every split you get 2 new outputs with the stereo inputs. that way the 5.1 guys could make 4 chains and control front/back/center/LFE independently on the output |
Not inside EasyEffects. But I think it can be done if you create a PipeWire loopback device and set it as your default output. Or if you select it as EasyEffects output in our device selection menu. Loopback devices should be able to do something close to what you want. Take a look at https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1447#note_1006488 |
is it maybe possible to extend the output section in the pipewire tab so that we can select a running aplication as output device? |
It depends on what kind of application you are thinking about. Usually the target application is the one that should be exporting a standard output device that would be naturally visible in our device selection menu. |
jack standalone apps like the LSP ones.
they wont show up.
but I guess I have to create a sink for this to work and it will show up in
EE
Em dom., 5 de set. de 2021 às 10:50, Wellington Wallace <
***@***.***> escreveu:
… is it maybe possible to extend the output section in the pipewire tab so
that we can select a running aplication as output device?
It depends on what kind of application you are thinking about. Usually the
target application is the one that should be exporting a standard output
device that would be naturally visible in our device selection menu.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#1126 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AFLJROG5YAIRDZ7QDPKH3P3UANYQ5ANCNFSM5DIZZDCQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
ok. pw-link is what I need.
never mind
Em dom., 5 de set. de 2021 às 11:18, Fábio Wolarski ***@***.***>
escreveu:
… jack standalone apps like the LSP ones.
they wont show up.
but I guess I have to create a sink for this to work and it will show up
in EE
Em dom., 5 de set. de 2021 às 10:50, Wellington Wallace <
***@***.***> escreveu:
> is it maybe possible to extend the output section in the pipewire tab so
> that we can select a running aplication as output device?
>
> It depends on what kind of application you are thinking about. Usually
> the target application is the one that should be exporting a standard
> output device that would be naturally visible in our device selection menu.
>
> —
> You are receiving this because you authored the thread.
> Reply to this email directly, view it on GitHub
> <#1126 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AFLJROG5YAIRDZ7QDPKH3P3UANYQ5ANCNFSM5DIZZDCQ>
> .
> Triage notifications on the go with GitHub Mobile for iOS
> <https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
> or Android
> <https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
>
>
|
still, using pw-link I probably can't avoid EE to connect to the
fiscal device, too?
Em dom., 5 de set. de 2021 às 11:26, Fábio Wolarski ***@***.***>
escreveu:
… ok. pw-link is what I need.
never mind
Em dom., 5 de set. de 2021 às 11:18, Fábio Wolarski <
***@***.***> escreveu:
> jack standalone apps like the LSP ones.
> they wont show up.
> but I guess I have to create a sink for this to work and it will show up
> in EE
>
> Em dom., 5 de set. de 2021 às 10:50, Wellington Wallace <
> ***@***.***> escreveu:
>
>> is it maybe possible to extend the output section in the pipewire tab so
>> that we can select a running aplication as output device?
>>
>> It depends on what kind of application you are thinking about. Usually
>> the target application is the one that should be exporting a standard
>> output device that would be naturally visible in our device selection menu.
>>
>> —
>> You are receiving this because you authored the thread.
>> Reply to this email directly, view it on GitHub
>> <#1126 (comment)>,
>> or unsubscribe
>> <https://github.com/notifications/unsubscribe-auth/AFLJROG5YAIRDZ7QDPKH3P3UANYQ5ANCNFSM5DIZZDCQ>
>> .
>> Triage notifications on the go with GitHub Mobile for iOS
>> <https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
>> or Android
>> <https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
>>
>>
>
|
ok. I use pactl to create a selectable device in EE and manage the conections with pw-link. |
In these cases where a very specific solution is needed this is probably the better option. It will give you more flexibility. |
@capoei which distribution are you using? Could you install easyeffects-git from AUR or compile from source to test the upmixing feature that I'd like to integrate in the application (only for the stream coming from the output pipeline)? |
I understand the limitations, but I think it is possible to dream of an
all-in-on DSP solution like equalizer-APO is for Windows.
Now, obviously Pipepire is still in heavy development and I am thankful EE
exists already at this early stage.
Em dom., 5 de set. de 2021 às 12:30, Wellington Wallace <
***@***.***> escreveu:
… ok. I use pactl to create a selectable device in EE and manage the
conections with pw-link.
In these cases where a very specific solution is needed this is probably
the better option. It will give you more flexibility.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#1126 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AFLJROAUGJFGIYP56MMKZILUAOELHANCNFSM5DIZZDCQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
just installed easyeffects-git-6.1.0.r30 from AUR. |
No, I will add it in the next days. I will notice you when it's ready. |
ok |
@capoei unfortunately the solution I implemented a month ago it's not working anymore. Until Pipewire does not introduce an easy and transparent way to do channel remapping, or @wwmm to find some better solution, this issue won't be resolved. @capoei I recommend you to return to stable easyeffects from Arch upstream repository. |
gotcha |
this filter chain stuff is not usefull? https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Filter-Chain#virtual-surround |
The filter chain is designed for people that want to set a few filters editing a few configuration files. It is not convenient for use in third party tools. Setting parameters for it on the fly or getting input and output levels will probably be a pain. Assuming it is even possible. |
Indeed this should be done by Pipewire in a transparent way, as it is done with resampling. |
@capoei if you can test, make a PKGBUILD text file with the following content: https://pastebin.com/ANi6e62u And install with
Open dconf, locate
and set it TRUE. Close easyeffects from terminal:
Restart it and play something. Let me know if the channel remapping is working. |
Hi @Digitalone1, could the loopback test fork be brought up to date with master or even merged? I'm using that fork for a while and it is usable. Its at least better solution than no solution. |
@JohnyPeaN Can you link it here? I made it months ago, don't even remember it. |
@JohnyPeaN are you using #1171? As far as I remember, it was working to me, but then Pipewire upgraded and I was not able to get it working anymore. Is it working to you? |
This one. |
Yes, seems to be the same. Working here on newest pipewire (0.3.51). |
@ClumsyDerp the tool is |
Tinkered around with the tools but it appears I got a different setup from JohnyPean. Helvum Screenshot (attempted to recreate JohnyPean's setup) Bottom line: The ADI 2 DAC is my actual physical device and only has two channels as shown by helvum and is entirely bypassed in my example, which strikes me as wrong - or rather, I'd have to somehow throw eight channels into two. From my limited understanding I may just be sending my sound in circles right now, if even that 🤡 The "Virtual Surround Sink" is a "fake" Pipewire 7.1 sink, as per their example. Desired outcome: Apply EE equalizer features but retain 7.1 virtual surround. |
You should enable Firefox in EasyEffects. EasyEffects should be set to output to Then you go in Pavucontrol and redirect |
For what I said, which is the usual configuration, you won't get the up/downmix because the DAC is only 2 channels. For what you want, it seems the virtual surround you got is not enough because the 7.1 virtual surround sink is not an output stream. So you can't redirect it in pavucontrol. You could try to send EasyEffects to 2.0 Virtual Surround Sink and to to redirect the 7.1 Virtual Surround Sink to the DAC. But I'm afraid you can't do it from pavucontrol and the only option is doing it manually, which is not a true downmix like you you wanted. |
Oh, now I see from the The upmix we suggested here is happening because fortunately we can link 2 channel filters to 2 channel virtual sinks. Then Pipewire does the upmix on its own. For what you want, you need first an upmix and then a downmix. That configuration is not good and EasyEffects can't do both. |
Even without EasyEffects in the way it does not make much sense to me to create this kind of virtual surround if your sound card has only 2 channels. If I am not mistaken the virtual surround created by PipeWire and Pulseaudio is intended for hardware that actually have all these channels. So even without EasyEffects you won't be retaining the 7.1 surround. It will be downmixed to stereo. Am I missing something here? |
I can't argue for pipewire's way of handling things, as well as potential magic that is going on under the surface but I can vouch for a spacial upgrade compared to stereo and all directions seem to be fully in tact. It's comparable, if not exceeding Window's spacial sound API - in this instance compared to DTS:X, which I also use/own. If you happen to own a pair of headphones feel free to try it out for yourself, it only takes a few minutes to set up. Simply copy the file content from |
Interesting. I had the impression that the downmixing to stereo would kill any spatial feeling that had been added by the virtual surround. But in this case I do not see why a custom loopback device between your virtual surround sink and EasyEFfects virtual sink should not work. I admit I did not read all the conversation in detail because I am at my work now. But if downmixing is not a problem a loopback from 7.1 to stereo should work. |
Try it. Maybe you're lucky. |
Unfortunately did not work, but I might as well been doing something wrong. I pretty much build what you've suggested, haven't done anything with pavucontrol yet, though. Additional info:
I'll dig a bit into pavucontrol. Cheers. |
Close Plasma System Settings, it won't help you. You have to redirect the streams with Pavucontrol (install it if you does not have it). Uncheck the enable checkbutton for Virtual Surround in EasyEffects (leave it excluded). In Pavucontrol, first tab (Players), MyLoop_Playback to Virtual Surround and Virtual Surround Sink to ADI DAC. |
Hope this is what it's supposed to be; opening Pavucontrol makes a mess of helvum 🤡 No idea why MyLoop_Playback receives two PulseAudio Volume Controls. Beyond that the only way to get sound out of FF is to route it against the ADI DAC directly and then neither EE works, nor the surround sound. MyLoop_Playback and Virtual Surround remain dead quiet. At this point I already feel as though I'm in way over my head 🙈 |
In pavucontrol is everything good. The issues is virtual surround 2.0 going into EasyEffects sink. Remove that link from helvum. |
Hey, sorry for the late response. Sleep, work, you know the drill. That said, I got good news. Some of the mess cleaned itself up (MyLoop_Playback no longer has two PulseAudio Volume Controls) upon boot and it now works as expected and further the way you laid out above. Confirmed EQ effects to be applied and the surround sink still plays back on all channels. Sorry for hijacking this particular issue, should it have been misplaced. Thanks for the support, much appreciated and if nothing else I hope it'll serve others down the line. Cheers! |
this is probably a naive comment, but if I have to think about my dream scenario for multi-channel audio handling,
I remember back when I used windows, with K-Lite I used to construct filter & processing graphs in all sorts of weird and wonderful ways. and then re-encode the output so that I could feed it into a sound card or a receiver over HDMI. |
(barring the FFmpeg part which I think is really out of scope unless somehow the output can marked as passthrough for pipewire) a structure like that could be really flexible for anyone wants to handle any kind of processing, It doesn't directly solve upmixing or downmixing but can be a good structural building block for how to cater for that later on.
Probably the biggest consequence is that filters need to be aware of how many channels they can accept and how many the pipe is trying to provide it, which it shouldn't allow if there's a mismatch. |
I would not call it naive. In a multichannel setup it is a reasonable expectation to be able to apply different filters for each channel. It just isn't what EasyEffects evolved for. An approach similar the Windows EQualizer APO would make more sense in this case.
There are 2 ways to create filters in PipeWire but if I remember well in both of them you have to hardcode the number of filter channels. So the filter would probably have to be made by default with a large number of channels. But the worse is dealing with third party filters that are designed for stereo. I think that the Windows Equalizer APO uses its own filters for everything. What makes things a lot easier. But most of the ones used in EasyEffects are LV2 filters designed for stereo. |
So that would mean a rearchitecture, ouch. Painful. If that were to happen then you would want to basically make it a graph engine.
I don't think this is a problem really. I'll elaborate below.
You don't actually need full multi channel support on every filter, most will work fine applied to a single or 2 channels, and with a bit of elbow work and some ui magic (linking a couple instances of the same filter together) you could use 2 channel filters pretty effectively. With a good foundation you can always work on a specific set of filters being multi channel, or the community can. To be a bit cheeky I don't think that's really the goal here. Of course that's the dream, but not the starting point, by comparison easy effects is still a young project, so I don't think anyone expects it to solve all those rather complex problems in a short timeline. Of course this is all subject to your vision for it and what you want it to be at the end of the day. |
Very painful. When I started this project I had things like Viper4Android in mind. And as I have a stereo sound system stereo audio inevitably became a central point in EasyEffects design.
As multichannel support is never going to happen to third party stereo plugins ignoring one of the 2 channels would be the only option when trying to apply them in a surround setup. Technically it will probably work but there are some annoyances. Our graphical interface will still try to show 2 level meters for example. So besides the special handling to links in the pipeline the plugin window would have to adapt to each scenario and showing only what makes sense. Nothing particularly complicated to ensure. But I would expect other small inconsistencies to show themselves along the way. There are also plugins that do not make any sense at all outside of a stereo setup and that we would have to make sure are never added to multichannel processing. The crossfeed and the stereo tools plugins are one example. But the hard part is that we would be essentially talking about one pipeline for each surround channel. At the end of the day this is what would happen with plugins that have only one or two channels. Handling them and allowing the user to configure them through our window would be quite challenging considering that PipeWire may change the sound card profile at any moment.
I think it would be super cool to support multichannel. But I have to be realist. With the main developers (me and @Digitalone1) being stereo users and the amount of work necessary for proper multichannel support being really big I do not see this happening even in the far future. Maybe once we finally start to support multiple filter instances a good solution comes to my mind. But at this moment it feels like a distant dream. |
with respect to #1126 (comment)
I agree that it works across boots, great. However, when I send my computer to sleep/suspension, the loop device stops subsequently working. I reboot, and then it works again. |
It may be worth to tell this to PipeWire developers. If only the loopback is not coming back after the PC sleeps it may be a bug on their side. |
done – https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2862 |
What about upmixing mono playback sources to stereo? Is there a filter I can add that will only upmix as necessary? |
There is the |
I think my proposed roadmap would be
i think this would give the fastest path to enabling a useable multi-channel easyeffects. then let it evolve from there. |
Is there any way to add multi-channel mangement/routing?
just as an example my use case (which would also require the adition of the possibility of a other instance of the convolver):
stereo signal > room correction convolution > crossovers via convolution resulting in 4 channels > routing of channels to my audio interface outputs
The text was updated successfully, but these errors were encountered: