-
Notifications
You must be signed in to change notification settings - Fork 2
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
improve system node identification: use port-group prop #176
Comments
OK when looking at this closer I think we have an opportunity here to make this potentially easier and simpler and am curious what you think. Currently the frontend has to construct "virtual" nodes using the port info. When utilizing Happy to chat this through in a call but I wonder if it would be beneficial here to introduce the rule that all non-instance ports are part of a group. This way we can use the The current code also splits system I/O into input and output nodes. How would you feel about introducing two distinct |
Summing up the discussion yesterday it would be great if:
The idea here is basically to get a more representative state of the nodes and ports into the OSCQuery data to reliable represent the state of the graph, nodes and ports on the frontend. In the current state the frontend code does a lot of string matching, creates something I'd describe as "virtual" nodes (system in and out) and therefore is quite cumbersome and error-prone. It also doesn't easily allow for mapping what is returned as JSON from the OSCQuery endpoint to a Graph by just looking at the data. In your proposal above you are introducing the concept of using {
"FULL_PATH": "/rnbo/jack/info/ports/properties",
"DESCRIPTION": "Ports and a list of their properties",
"CONTENTS": {
"<port_id>": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/<port_id>",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"<node_id>\"}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
}
} Where
We'd be interpreting the The only caveat would be that using a group If that were in place the frontend can basically construct and manage the the Jack Graph (nodes, ports and connections) entirely decoupled from the RNBO instance state and manage it in a much simpler way by storing:
Here one more complete example: {
"FULL_PATH": "/rnbo/jack/info/ports/properties",
"DESCRIPTION": "Ports and a list of their properties",
"CONTENTS": {
"system:capture_1": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/system:capture_1",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"rnbo-graph-user-input\",\"physical\":true,\"terminal\":true}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
},
"system:capture_2": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/system:capture_2",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"rnbo-graph-user-input\",\"physical\":true,\"terminal\":true}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
},
"system:playback_1": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/system:playback_1",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"rnbo-graph-user-output\",\"physical\":true,\"terminal\":true}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
},
"system:playback_2": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/system:playback_2",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"rnbo-graph-user-output\",\"physical\":true,\"terminal\":true}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
},
"rnbo-control:midiin": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/rnbo-control:midiin",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"rnbo-control\"}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
},
"system:playback_2": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/system:playback_2",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"rnbo-graph-user-output\",\"physical\":true,\"terminal\":true}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
},
"feedback-synth-0:out1": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/feedback-synth-0:out1",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"feedback-synth-0\"}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
},
"feedback-synth-0:out1": {
"FULL_PATH": "/rnbo/jack/info/ports/properties/feedback-synth-0:out2",
"TYPE": "s",
"VALUE": "{\"http://jackaudio.org/metadata/port-group\":\"feedback-synth-0\"}",
"ACCESS": 3,
"CLIPMODE": "none",
"DESCRIPTION": "JSON key/value object indicating Jack properties for this port"
}
} The frontend would be able to figure out if a If that seems desirable an instance port properties entry could look like: {
"http://jackaudio.org/metadata/port-group" : "feedback-synth-0",
"rnbo-instance": true,
"rnbo-instance-id": 0
} |
The text was updated successfully, but these errors were encountered: