Closed AlexFolland closed 3 years ago
Run it in debug mode G_MESSAGES_DEBUG=easyeffects easyeffects
Although I have been using the master branch for development purposes I do not remember having to apply updates specific to the new PipeWire version. 6.0.3 should still be working.
Maybe you could try to install the EasyEffects package from AUR to see if it works while 6.0.3 does not. In this case I can release the next version a little earlier than I had in mind. But it is odd... Maybe the 6.0.3 package just has to be recompiled against the latest PipeWire.
I tried this:
G_MESSAGES_DEBUG=easyeffects easyeffects
in terminal.Observed behavior:
I tried installing easyeffects-git
from the AUR, then the same steps as above and got the same result. Here's the terminal log.
You have to sound cards. The one showed as default output is alsa_output.pci-0000_00_1f.3.analog-stereo
and not the hdmi card. Is that the card that we should be using? Our default configuration will try to use the default card.
Run pw-dot
while everything is running. I will use xdot to see if the links between filters were made. You probably will have to zip the output file before attaching it on Github because the dot file it is not a format it supports.
The PipeWire update by itself should not be causing this problem. I have been using the latest version for some time.
soe: output_level: new PipeWire blocksize: 256
The fact that such a line is in the logs suggests our filters are receiving audio buffers. Could it be that something muted our virtual devices? I think 2 users have reported something like this already. There may be a PipeWire bug related to devices volume handling affecting us.
You have to sound cards. The one showed as default output is
alsa_output.pci-0000_00_1f.3.analog-stereo
and not the hdmi card. Is that the card that we should be using?
Yes, that's the motherboard sound device that I'm using for analog output to my headphones and desktop speakers (which has a simple external analog switch to toggle between). The HDMI audio is for one of my displays which has built-in speakers that I don't use. That's good to check though.
Run
pw-dot
while everything is running. I will use xdot to see if the links between filters were made. You probably will have to zip the output file before attaching it on Github because the dot file it is not a format it supports.
I will try pw-dot
as you've suggested and compress the output for attachment here.
In this pw-dot output zoom is not linked to our virtual devices In this situation it makes sense nothing happens in our window. What happens if you use VLC or other traditional audio players?
I tried with QMMP which is set to use the PipeWire plugin, libpipewire.so. It seems to be working! There are some pops and glitches that aren't there usually, but I tried bassy music and it wasn't uncomfortably bassy.
I wonder why Zoom is no longer connecting. It doesn't make sense to me. I've provided the pw.dot file here with QMMP playing in case it can help with diagnosing.
The links are fine in the qmmp dot file. Pops and glitches could have many sources. What is this libpipewire.so
plugin exactly? I do not remember ever having forced apps to use something like that.
Try to test with web browsers, vlc and mpv too to see what happens.
I wonder why Zoom is no longer connecting. It doesn't make sense to me.
If it was working before the update and now it isn't I have to agree it is strange. If it had never worked then it could be one of those cases were app developers set the DONT_MOVE
Pulseaudio flag that breaks us. Unless they have decided to add something like that recently.
libpipewire.so is the output plugin selected in QMMP, to use native PipeWire output. It's one of a few output plugins QMMP has available, as you can see here:
I will also test with a YouTube video in Firefox. I'll have to restart Firefox to do so. I think I'll reboot my computer also to make sure there's no unexpected buggy state influencing this further.
After rebooting, I tried having a cacophony of audio from: Zoom's test sound, a YouTube video in Firefox, a song in QMMP, and me talking to simultaneously test Zoom's input. Here's the pw.dot file: 2021-08-11-alexfolland-easyeffects-cacophony-pw-dot.zip
Firefox seems to work too now. It seems like it's only Zoom somehow.
I also tried Discord after and the microphone input effects in EasyEffects don't seem to be working for that either. To be sure, I started the Discord test mode and added a "Pitch" EasyEffects plugin with -1 octave. I did not sound like a monster, so it didn't seem to be working. That being said though, the bars are animating in the input part of EasyEffects for that, so it's just weird. Here's a pw.dot file during Discord microphone test mode: 2021-08-11-alexfolland-easyeffects-discordinput-pw-dot.zip
Here's the dot file from a test with Audacity ALSA input where I could see an entry for it in EasyEffects while recording, but no spectrum animation there and when I played back the recording, there was no crazy pitch effect that I'd set up: 2021-08-11-alexfolland-easyeffects-audacityalsainput-pw-dot.zip
Here's a pw.dot file during Discord microphone test mode: 2021-08-11-alexfolland-easyeffects-discordinput-pw-dot.zip
The links are messed up in the microphone pipeline The link coming from your mic should go only to one filter and not to many at the same time. And the output of these filters are not connected to our virtual source. I wonder if the fact your microphone device has only one channel is breaking us. Usually PipeWire and Pulseaudio create 2 channels for microphones even when they are mono. Do you have a mic that creates 2 channels you could use to test. If that particular problem happens only with this one channel mic we will need fixes on our side.
Here's the dot file from a test with Audacity ALSA input where I could see an entry for it in EasyEffects while recording, but no spectrum animation there and when I played back the recording, there was no crazy pitch effect that I'd set up: 2021-08-11-alexfolland-easyeffects-audacityalsainput-pw-dot.zip
Same thing that happened with discord. I think I will have to find a way to make my microphones show only one channel. We may have an issue in this case. But the Zoom situation seems like something that changed in Zoom if Firefox is working.
@Digitalone1 this issue with one channel microphones may be related to that link_size == 2
check we added to the code handling links https://github.com/wwmm/easyeffects/blob/13941d2e3344afa9d381751fb6082cec3fd231ab/src/stream_input_effects.cpp#L189. If the device only has one channel that check will never succeed.
If the device only has one channel that check will never succeed.
Sure, so we have to exclude that check for the first and the last node.
If the player is outputting more than 2 channels they are bundled on the same port.
Am I right?
I think I will have to take the discussion at https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1447 ahead sooner than I had in mind. The manual handling of links to devices is showing its disadvantages... At list the links to the hardware devices have to be done in a smarter way.
If the player is outputting more than 2 channels they are bundled on the same port.
The link from the player to our virtual sink or from the recorder to our virtual source is done through PipeWire's session manager. The advantage is that the session manager can do upmixing and downmixing. The problem is that as far as I know the session manager does not handle filters yet. This is the reason why I am doing these links manually.
Ok, so we have to exclude that check from output_level node further. Basically the last node.
Ok, so we have to exclude that check from output_level node further. Basically the last node.
Until I find a way to do what Wim Taymans is suggesting without resorting to editing configuration files it is the better thing to do.
A long time ago (last year, before I'd even heard of PipeWire), I set my microphone to mono in pavucontrol
because it's a microphone, so it obviously has only 1 channel. I don't have an array of 2 microphones to record myself in a bizarre double way. I only have 1 larynx anyway, so I can't produce a stereo voice! Why would microphones be stereo by default?
That being said, I'll try setting my microphone to stereo in pavucontrol
again, test again. and report observations.
Note that changing my microphone to mono happened many months ago, so it's not something I changed in the past week.
Note that changing my microphone to mono happened many months ago, so it's not something I changed in the past week.
That problem about the number of mic channels is related to a recent change in our master branch. It is a good thing you have installed it to test. Otherwise we would only know about this problem after releasing.
I totally agree that most mics will actually generate only one channel. But usually the sound server creates 2. And EasyEffects (or PulseEffects) pipeline is stereo because some plugins necessarily need 2 channels. So we have to find a way to deal with this channel number mismatch.
I checked in pavucontrol
and found that I can't set the external USB audio adapter's input port to stereo input. I'm guessing it only has mono input. Here are the options I see in pavucontrol
:
So, it looks like the input from this device will always be mono, though I don't know what "Pro Audio" does. I figured all audio configurations should be able to be used professionally, so I'm not sure what that is.
I tried disabling my "GP102 HDMI Audio Controller" by setting it to "Off". I'll see how that works. In the end, here's my configuration:
@AlexFolland try easyeffects-git, should work now.
I updated easyeffects-git
, rebooted, and I tried it with Zoom, and it's still not working for input or output. I ran pw-dot
for that and attached the result here: 2021-08-14-alexfolland-easyeffects-zoom-pw-dot.zip
I tested with Discord, though, and it worked! I could hear myself in chipmunk mode when setting a pitch filter with 8 higher semitones.
So, somehow, it just doesn't work with Zoom (output or input) and seems to work otherwise. Thanks! I'm not sure what I can do for Zoom, but I'm glad it could be fixed for other software that I use.
One extra thing: I noticed that when I used the "microphone to speaker" button in the bottom-right corner of the EasyEffects GUI, the microphone playback only played through my left earphone instead of both. So, it's not upmixing to stereo from mono when it should there, it seems.
So, somehow, it just doesn't work with Zoom (output or input) and seems to work otherwise.
That suggests they decided to set the DONT_MOVE
flag. If this app were opensource we could check if this is the case. But it seems to be. In these situations the only option is setting our virtual source as default and telling the app to use it. It is not a solution I like. A better option would be PipeWire ignoring this flag for all apps and not just Firefox.
One extra thing: I noticed that when I used the "microphone to speaker" button in the bottom-right corner of the EasyEffects GUI, the microphone playback only played through my left earphone instead of both.
I think that the code behind this feature will also need fixes for mono sources.
I think that the code behind this feature will also need fixes for mono sources.
But in this case the solution will probably be in the direction I am discussing at the PipeWire issue I talked about before.
A better option would be PipeWire ignoring this flags for all apps and not just Firefox.
I like this as well. I wish PipeWire just had an option (enabled by default even) that let us ignore/override any DONT_MOVE
flags. Nothing should be allowed to disobey.
Some time ago PipeWire's developer explained the purpose of this Pulseaudio flag. If I remember well it is mostly useful for applications like Pavucontrol that launch level meter streams. That kind of stream should not be moved somewhere else when the target client dies. But for some weird reason many developers think that they will benefit from this flag too.
I hadn't tested this in a while, but I've just tested again now. Zoom seems to be working with EasyEffects now. I'm not sure what fixed it in the more-than-a-month since I last tested it, but I'm on a newer version of PipeWire now, at least. This can be closed. Thanks for the patience and support in this ticket.
A separate issue ticket could be opened for the microphone-to-speaker button sending the microphone input to only the left speaker channel, which I can confirm now is still happening while testing EasyEffects with Zoom.
I tried restarting my PC after having updated PipeWire, and noticed that EasyEffects wasn't being applied. My audio was uncomfortably bassy. I opened the EasyEffects GUI to check, and the visualization at the top was not animating. Also, the individual players were all switched to "disabled" even though I'd never done that. I manually switched them to "enabled" and that didn't work.
After this, I tried using the terminal to restart PipeWire and restart EasyEffects to see if that would fix it, and it didn't. Here's the log from the terminal commands I used.
terminal log
``` [alex@alex-pc ~]$ pipewire --version pipewire Compiled with libpipewire 0.3.33 Linked with libpipewire 0.3.33 [alex@alex-pc ~]$ systemctl --user restart pipewire [alex@alex-pc ~]$ easyeffects -q [alex@alex-pc ~]$ easyeffects (easyeffects:42491): Gtk-WARNING **: 13:18:43.718: Unknown key gtk-button-images in /home/alex/.config/gtk-4.0/settings.ini (easyeffects:42491): Gtk-WARNING **: 13:18:43.718: Unknown key gtk-menu-images in /home/alex/.config/gtk-4.0/settings.ini (easyeffects:42491): Gtk-WARNING **: 13:18:43.718: Unknown key gtk-toolbar-style in /home/alex/.config/gtk-4.0/settings.ini (easyeffects:42491): Gtk-WARNING **: 13:18:43.718: Theme parsing error: gtk.css:196:1-22: Failed to import: Error opening file /home/alex/.config/gtk-4.0/colors.css: No such file or directory (easyeffects:42491): Gtk-WARNING **: 13:18:45.522: GtkGizmo 0x562652f83230 (highlight) reported min width -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x5626520b07e0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x562652165230 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x5626521ada20 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x5626522223a0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x56265227ebb0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x562652323580 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x562652366d10 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x5626523ec6b0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x562652446f20 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x5626524cd880 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.523: GtkGizmo 0x56265257f240 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x5626525ba9d0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x56265263e3a0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x5626526aab10 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x562652720490 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x562652785d30 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x56265280a700 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x56265287af40 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x5626528fe7e0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x5626529a21d0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x5626529dba70 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x562652a87400 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x562652abdb30 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x562652b49570 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x562652baccf0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.524: GtkGizmo 0x562652c2b640 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.525: GtkGizmo 0x562652c90f10 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.525: GtkGizmo 0x562652511810 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.525: GtkGizmo 0x562652dbf210 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.525: GtkGizmo 0x562652e2ca40 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.525: GtkGizmo 0x562652eca3c0 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.525: GtkGizmo 0x562652f06b60 (highlight) reported min height -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.525: GtkGizmo 0x562652041590 (highlight) reported min width -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:18:45.525: GtkGizmo 0x562652066520 (highlight) reported min width -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:19:33.970: GtkGizmo 0x5626530bcb80 (highlight) reported min width -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:19:33.970: GtkGizmo 0x562653036eb0 (highlight) reported min width -8, but sizes must be >= 0 (easyeffects:42491): Gtk-WARNING **: 13:19:33.970: GtkGizmo 0x562653061eb0 (highlight) reported min width -8, but sizes must be >= 0 (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error res: No such file or directory (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error message: unknown resource 42 op:2 (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error res: No such file or directory (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error message: unknown resource 42 op:2 (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error res: No such file or directory (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error message: unknown resource 42 op:2 (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error res: No such file or directory (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error message: unknown resource 42 op:2 (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error res: No such file or directory (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error message: unknown resource 42 op:2 (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error res: No such file or directory (easyeffects:42491): easyeffects-WARNING **: 13:20:46.488: pipe_manager: Remote error message: unknown resource 42 op:2 ```I am using PipeWire 0.3.33 and EasyEffects 6.0.3.
Please let me know if there's any other logging I can do.