Hm? And what operation would that be?
Turn the volume down to zero, same as on the Pandora...?
Turn the volume down to zero, same as on the Pandora...?
Hm? And what operation would that be?
Turn the volume down to zero, same as on the Pandora...?
PulseAudio only uses a lot of CPU when it's mixing multiple streams with different bitrates into one.
That's where ALSA also needs a lot of CPU.
What is your Pulse output setting set to?PulseAudio only uses a lot of CPU when it's mixing multiple streams with different bitrates into one.
That's where ALSA also needs a lot of CPU.
I just tried running a single program with audio open (it was DraStic using SDL, 44.1KHz/16bit) Pulse consistently used about 2% CPU time on my i5-2500K (quad core Sandy Bridge currently @ 1.6GHz. Although not exactly a "lot" it's IMO still too much. I'd like to see what the percentage would be running on Pyra @ ~500MHz and 1.5GHz.
EDIT: Still uses same percentage with the CPU locked at 3.6GHz vs locked at 1.6GHz. Not sure if this means that the CPU usage is frequency independent here or what.
What is your Pulse output setting set to?
If it's set to 48kHz, it also needs to downsample, even if you only run one stream.
You can check that with:
pacmd list-sinks
BTW:
PulseAudio has 65537 different volume steps... should be accurate enough for anyone.
In my opinion, the ideal daemon should work like this:
* Normally, the hardware wheel is enabled and changes the software master volume.
* If the software master volume is changed, it should disable the hardware wheel.
* To reenable the hardware wheel, you need to move it to the current software setting and then it picks it up and takes over again.
* On shutdown, the daemon saves whether the hardware wheel was currently enabled and disabled and should behave accordingly on startup.
This is the best solution of both worlds.
If you never touch the software controls, the wheel works exactly the same as before.
If you touch the software controls, moving the hardware wheel won't make a sudden volume change.
I'd modify "To reenable the hardware wheel, you need to move it to the current software setting" to "To reenable the hardware wheel, you need to move it to the current software setting or zero". No sound should always be no sound. This would enable the apparently typical use case of always moving the wheel to zero before raising it to a comfortable volume I do myself as well.
I messed around a lot with ALSA, partly due to driver bugs that required workarounds. My current asoundrc file has over 600 lines with only a minimal amount of comments, it includes stuff like custom volume controls (software mic boost), LADSPA plugins (5.1 upmix with an elaborate lowpass filter for the subwoofer), customizable default input/output devices via environment variables , and dmix/dsnoop mixers for 12 channels at 32bit 44.1kHz. Of course I hardly use all of the 12 channels available through my hardware at the same time, but I do have quite a bunch of programs running that want to output some audio data all the time.
Everything is like it should be, despite the float transitions required by LADSPA (LADSPA plugins only accept float samples) I can't see any noticeable CPU loads caused solely by audio. Yet PusleAudio manages to cause quite some impressive CPU usage while only using its basic 5.1 upmix settings (or even its default stereo setup), no matter what kind of remix algorithm I chose. I really like the additional features that PulseAudio offers, but whatever I did, I only ran into totally exaggerated CPU usage...
Did I miss something or does this still assume without hard evidence that the software mechanism will always be capable of low latency response to wheel changes?