M4L: Automatically route MC-Outputs to MC-Inputs of specific M4L-device/Track

Nodanoma's icon

Hi all,
I've hacked the BrowseRouting-abstraction and understood the details of how the routing works between M4L-devices. However, if I want to host a mixdown of several other multichannel M4L-devices in a separate device, I need to know this host's Inputs' dictionary references – their ID does not help in registering its Inputs in other devices: the identifiers (available_routing_types::identifier) are required to route channels. The problem is, that these 'identifiers' canot be queried from the respective host device itself to offer them to other devices since they are not among 'available' routing types for the same device, and unfortunately, neither the ID of the device, nor the IDs of its Inputs can help query these identifiers elsewhere. This must therefore be done in the remote device by matching the display_name (available_routing_types::display_name) with that of the host, which can of course be identical to other tracks' names and is less reliable.

As a temporary 'workaround' (should there be a better solution?) I use [dict.route] to match the 'display_name' of the host-device's track to then allocate the routing_channel to the M4L-MC-output in question using [poly~] (this is to avoid recurring errors evolving around 'setting the ID by notification' and 'invalid syntax' bugs etc. This seems to work, though some channels are always dropped, don't transmit correctly or the mapping is shifted (the latter might be my own error).

I would like to know if I can provide the identifiers of a host's [mc.plugin~] inputs to all M4L-devices in whichever data form so they can allocate their Outputs to them (without having to look for the name of the track). The current solution is not really solution.

Example:
The host processes 6 inputs channels and mixes them to stereo for audio output.
All othersound-devices then transmit 6 channels to this device's inputs (i.e. to 3 4 5 6 7 8) automatically and reliably without user interaction. Adding another such transmitting device to the environment automatically routes the Outputs to the host's inputs or updates when a host is added to the set likewise.

Q: How?

Thank you !