Skip to content
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

Unification of multiple nodes belonging to the same application #1

Open
mkrasnitski opened this issue Nov 16, 2021 · 6 comments
Open
Assignees
Labels
enhancement New feature or request

Comments

@mkrasnitski
Copy link
Contributor

In comparison to using QjackCtl, if an application has multiple outputs or inputs, they each appear as separate nodes in the graph. Helvum also suffers from this problem. For example, if I open pavucontrol, each separate input is on a separate node, one for each currently running application, whereas QjackCtl unifies them into a single node. Here's a screenshot of QjackCtl:
image

Compared to pw-viz:
image

You'll notice QjackCtl doesn't unify everything. It puts inputs and outputs in the same node, but not monitors. pw-viz does the opposite, putting inputs and monitors together, but not outputs. I think it would be great to put them all in one node. Additionally, on the pavucontrol node, all the left channels are stacked together, and then the right channels. I think it'd be better to stack pairs together.

@mkrasnitski mkrasnitski changed the title Unification of nodes pertaining to the same application Unification of nodes belonging to the same application Nov 16, 2021
@mkrasnitski mkrasnitski changed the title Unification of nodes belonging to the same application Unification of multiple nodes belonging to the same application Nov 16, 2021
@Ax9D Ax9D self-assigned this Nov 17, 2021
@Ax9D
Copy link
Owner

Ax9D commented Nov 17, 2021

That seems like a good idea, should be relatively straightforward to implement, I have setup a branch to experiment with this.

@Ax9D Ax9D added the enhancement New feature or request label Nov 17, 2021
Ax9D added a commit that referenced this issue Dec 19, 2021
- Pipewire Nodes with the same name are grouped together and rendered as a single node ( #1 ), in the debug view(on pressing Ctrl), the description and node id of the underlying pipewire node is shown

- Support cycles ( #5 ), graphs in cycles in them are a supported now

- Add support for customizing node background colors (with transparency)

- Add an Arrange button ( related to #7 ), which relayouts the nodes automatically when clicked, the layout algorithm (topological sort) is temporary, will be replaced in the future

- Updated README.md to include better build instructions
@Atakku
Copy link
Contributor

Atakku commented Jan 9, 2022

Unification looks great, except in cases of self linkage, maybe there is a better way to display those
20220109105352

@Atakku
Copy link
Contributor

Atakku commented Jan 9, 2022

also this may not be very intuitive when there are several tabs in Firefox for example, maybe add some sort of a divider in-between?
20220109115430

@Atakku
Copy link
Contributor

Atakku commented Jan 9, 2022

Also apps that interact with my mic and headphones at the same time can look confusing (here is Discord for example)
20220109121913

@Ax9D
Copy link
Owner

Ax9D commented Jan 11, 2022

Unification looks great, except in cases of self linkage, maybe there is a better way to display those 20220109105352

I will be adding parameters to control the bezier curve, also you can make the node background transparent to better see the self links

also this may not be very intuitive when there are several tabs in Firefox for example, maybe add some sort of a divider in-between? 20220109115430

I agree, as a temporary workaround you can hold down the control key, which will show the id of the tabs in between

Also apps that interact with my mic and headphones at the same time can look confusing (here is Discord for example) 20220109121913

While I can see how this can be confusing I think this is fine as rerouting audio like this isn't that common; also grouping nodes together makes finding the input/output port you want to connect to easier(as they are in one place), plus this makes the graph easier to parse visually imo,

the ultimate solution to this would be to make grouping nodes a setting that the user can turn on and off based on their preference/usecase.

Other ideas/suggesetion are ofcourse welcome.

@mriise
Copy link

mriise commented Jan 14, 2022

I personally like the idea of being able to optionally split a node into its outputs, inputs, and monitors for nicer looking graphs. Combined is a sensible default, but the option would be nice.

Ax9D added a commit that referenced this issue Nov 24, 2022
- Pipewire Nodes with the same name are grouped together and rendered as a single node ( #1 ), in the debug view(on pressing Ctrl), the description and node id of the underlying pipewire node is shown

- Support cycles ( #5 ), graphs in cycles in them are a supported now

- Add support for customizing node background colors (with transparency)

- Add an Arrange button ( related to #7 ), which relayouts the nodes automatically when clicked, the layout algorithm (topological sort) is temporary, will be replaced in the future

- Updated README.md to include better build instructions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants