On Wed, 14 Aug 2024, Fons Adriaensen wrote:

On Tue, Aug 13, 2024 at 02:47:53PM -0700, Len Ovens wrote:

These are not pipewire design goals,...
...
This is not a design goal of PW.
...
This is not a design goal of PW.

On  <https://docs.pipewire.org/page_config.html>:

 "One of the design goals of PipeWire is to be able to closely
  control and configure all aspects of the processing graph."

If that is true, then nothing of what I mentioned before should
be a problem.

Then there is a long way to go.

To 'closely control' things IMHO includes having the option to
disable anything automatic. If for example I can't tell pipewire
to not use a particular sound card that is the exact opposite
of providing control.

I agree. I have not found a way to tell PW to ignore a device. I think the 'closely control' means PW controls things closely automatically. Many things can be configured but this means preconfigured not on the fly configuring. The target users are desktop and device firmware (like audio for a car). The jack graph control is not what you or I are used to, there are some parameters that can be changed on the fly but none of them seem to be universal. Each node can have differing parameters. A desktop app that asks for a SR and buffer size will be given that at the point it connects to the graph and if the node it connects to is not currently in use, then that node or device will also get set to the parameters the application asked for. Otherwise pw will insert an SRC block in between. (automatically rather than telling the application that rate/buffersize is not available)

So your idea (and mine) of what 'closely control' means and PW's idea would seem to be at variance. Certainly there are no GUI or CLI utilities available that I am aware of that would make configuring PW an easier task (I don't think it will ever be easy). The main problem is finding out what parameters exist and then in many cases what those parameters actually do. I have seen many queries about latency, for example, where the user expects one latency but gets another because there are more than one (maybe three or four?) parameters that might effect this.

I think PW wants to support profesional audio requirements but doesn't have a clear understanding of what that might be in all it's uses. To be fair, there are many (semi?)profesional audio uses where PW works just fine.

Config files are pretty much standard linux.
...

That's another issue which I didn't even want to mention
originally.

As long as you consider only the files and assume that either
only one of them is used or able to completely override the
others the situation is clear. It's a good system, allowing
the distro to provide 'convenient' defaults, while still
allowing the admin or user to override them.

But what about the drop-in directories ? If for example I have a
~/.config/pipewire/pipewire.conf, indicating that I want to take
matters into my own hands, does that mean that the files in the
drop-in directories in /etc and /usr/share are ignored as well ?
Or do I have to override each and every one of them ? The real
semantics of this are not clear at all.

The effect should be, if we think in terms of a sh or bash script

. /usr/share/PW/pipewire.config
# actually there would be a list of these
. /etc/PW/configfile
# again more than one file
. ~/.config/PW/config.files


And then there is this:

<https://docs.pipewire.org/page_man_pipewire_conf_5.html>

 "Dictionary sections are merged, overriding properties if
  they already existed, and array sections are appended to."

So can a 'user' config really override the 'distro' one ?

That should mean that they are merged as above. Package params are read in first, then system params which add to or replace, then user. There are, however, sets of commands that are used like script snippets that do not like to be run more than once. For example, I took /usr/share/pipewire/jack.conf and copied it to ~/.config/pipewire/ so I could edit it to my liking. I found there is a section called jack.rules that caused errors unless I removed it. So it would seem that one would have to use one's config to first remove a rule and then reset it. These rules are application specific. I would suggest by reading the list of settings these rules change, that they could all be moved to more universal settings as in all cases it seems the settings changed make PW more jack like not less. I did not find the method to use to remove these rules (I didn't look very hard either).

To be honest, my personal preference would be to use pipewire in place of pulse with a user defined set of pw-jack bridges and use jackd as I have in the past. I would like to be able to tell PW to use only devices I give it or none for that matter. Some of this may be just laziness (or lack of time) figuring out a new system but there also seem to be things I want to do that PW just won't allow me to do.

This sort of thing has indeed become 'standard linux', it's
not just a pipewire issue. Systemd is an order of magnitude
worse.

I would add the unusable Gnome desktop and the set of apps that surround it that do not allow the user to set their colour schemes, that do not allow good contrasting title bars so one can see at a glance where focus is, a broken menu system.... the list goes on.

One of the things that has always attracted me to Linux has been the configurability to fit my purposes. This seems to be getting harder.


--
Len Ovens
www.ovenwerks.net
_______________________________________________
Linux-audio-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to