-
-
Notifications
You must be signed in to change notification settings - Fork 278
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
Feature request: Powersave/Standby mode #3472
Comments
This feature already exists, it can be adjusted in the "General" settings in EasyEffects: Inactivity Timeout |
And on top of that PipeWire tries to stop the filters when there is nothing playing to or recording from our virtual devices. The only case where I know it fails to do this is when the echo canceller plugin is in the pipeline. |
Thanks, I didn't know this feature. It's enabled here with 10s. I have 6 effects in the input chain only, that are Noise Reduction, Bass Loudness, Bass Enhancer, Exciter, Crytalizer, Stereo tools and some disabled effects. I'm surprised when watching top, I can't see any difference. The CPU usage is always above 2% and does not make any difference when processing or when having all input and output sources muted. But when watching in htop, the effect is completely different. This is the situation when all devices are muted: And this is the situation when having input and output unmuted processing input noise monitored to the output: In htop I can see increasing CPU usage as expected, but top is showing a completely different result. |
top and htop may be using different measurement units. By this I mean that sometimes one of them may be using a scale that goes up to What is the output of |
Yes, in this case it's pavucontrol causing the activity. You can see in the first column of pw-top labeled "S" various letters; they show the operating state of each node. pavucontrol always creates virtual nodes whenever it's running so that it can display it's volume meters. Unlike easyeffects, pavucontrol does not implement a sleep mode, so whenever it's open it will cause easyeffects to switch to the running state. You can see this in pw-top, pavucontrol nodes never show anything other than "R" as their status. Since easyeffects simply checks if any input nodes are "running" to decide when to wakeup, and pavucontrol also puts virtual nodes on every input device (microphone, etc.), easyeffects will always be "running" when pavuvontrol is open, even if no sound is playing. |
Pavucontrol does that indeed. And EasyEffects logic isn't the only one broken by it. PipeWire's procedures to put nodes in the idle satate also do not work. The reason is that at the end of the day pavucontrol level meters are a recording stream like any other. We blocklist them internally in EasyEffets but they will still affect pipewire. |
Ok, let me summarize what I understood, correct me if I'm wrong: The S column is showing the status, which are in cpu-usage increasing order: S = SUSPENDED, I = IDLE, R = RUNNING... Btw. who actually does the suspending of effects, pipewire or EasyEffects? The setting you mentioned actually is inside EasyEffects. About pavucontrol: I was unsure if it is a good idea to use old PulseAudio software for pipewire. Is there any better replacement for a basic Audio mixer? Does Pavucontrol prevent sleep mode only because of it's level meters? When having pavucontrol closed but still having the basic controls in the Xfce panel from:
...this would have no impact on suspending pipewire nodes? |
PipeWire is the one managing when each filter is idle or active. EasyEffects just makes the links between filters and devices. What the inactivity timeout does is removing the links. What is a last resort to put the nodes in the idle state. Nowadays we only do this in the microphone pipeline because as far as I could see PipeWire was doing a good job at putting the filters in the output pipeline in the idle state when they should be.
Using Pavucontrol is fine. And I do not remember if there is a better alternative. Just do not let it open all the time. Do what has to be done and close its window.
Yes. Its level meters do the same any audio recorder would do. In other words they are a recording stream. And as a result they keep the pipeline active. I am not familiar with the xfce plugin. Assuming it does not insert any recording or playback stream to measure audio levels it should be fine. Just controlling volumes or managing devices does not keep the pipeline active. |
Edit: removed my answer in favor of wwmm's answer, see comment above |
About pw-top, which column represents the CPU load? I guess the closest is BUSY as it represents processing time? WAIT is more like a responsiveness, big values are a bad responsiveness, right? |
I never took the time to read its documentation. But I doubt it measures CPU load. Probably just processing time like you have already guessed. But based on what I have seen in other cases big values in the busy and wait columns are not a good thing. As well as a huge error count in the error column. |
What about keeping the EE gui up with spectrum disabled, does that break suspending or make any load? |
No, suspension will work just fine in that case. In fact, you can even leave the spectrum enabled, because everything in easyeffects adheres to the inactivity timeout, including the spectrum. The reason pavucontrol prevents suspension from happening is because it doesn't try to detect inactivity; it never stops requesting samples to check the volume, even if there's nothing playing. Easyeffects does check if the target nodes are idle, allowing for suspension. |
For pavucontrol, is there any modern or pipwire-specific replacement? |
The closest is probably |
Please add kind of an automatic standby/powersave mode.
Usually EE is quite CPU efficient, but still it has some continuous load, especially when using about 6 effects and having quite old systems like Core-i 3. or 4. gen. Systems are always running (24/7), sound input/output is only required ~3% per day.
How could the standby/powersave be enabled? There could be a button of course. But there should be some automatic suspending/resuming. That could be watching the input or output sources, if all are muted, then suspend the EE processing. When one source is unmuted, resume EE.
When suspended, EasyEffects should just stop processing and do a bypass, just like when terminating the EE processes.
Currently using easyeffects-7.1.6 on Gentoo.
The text was updated successfully, but these errors were encountered: