After reconsidering the stream-interaction patch[1] I opted to refactor/rewrite the implementation instead. First patch refactors module argument parsing and uses LLIST for groups. Second patch updates how the interaction is handled. Now both trigger roles (streams that when active trigger corking or ducking) and interaction roles (streams that are ducked when trigger roles are active) are tracked individually which hopefully makes the logic a bit more easy to follow. Third patch is of convenience and probably not widely needed but as the change to functionality is minimal it would be nice to have upstream. [1] https://lists.freedesktop.org/archives/pulseaudio-discuss/2018-July/030158.html