yeah, input and output can be targeted specifically to a DEVICE/HOST/DIN and also channel number.
(and also port on USB HOST, if usb device exposes multiple ports)
I assume you mean when using USB HOST, determine the manufacturer string etc from usb descriptor?
currently we don't send the usb manufacture/device id anywhere, I guess we could if we needed.
though it gets more complicated when you support hubs (we don't currently) as obviously then you need to know which port its connected to.
(bare in mind midi messages only contains channel number and message type , and of course 2 data bytes)
anyway for you purposes it should be fine...
Id be interested to hear what you are planning to do with the Linnstrument / step sequencer...
as essentially Im wanting to do the same thing with the Push, so there is very likely an opportunity for collaboration there.
note sure if you've seen but my general (axocube) project is described here : https://sebiik.github.io/community.axoloti.com.backup/t/axocube-project/425, and more specifically the work I'm doing with the push here : https://sebiik.github.io/community.axoloti.com.backup/t/ableton-push-controlling-axoloti/248
whilst the push video is not entirely applicable to your ideas... it covers an important point, which is how to control 'arbitrary' parameters from a controller, rather than having to patch the controller directly in to the patch.
(this is going to be support in a new feature called 'controller objects' which I've just added to axoloti, not yet in main repo)
what I want to do is to have something similar with a really elaborate step sequencer. something between what the Spectralis and Elektron has. (obviously will 'evolve to this') ... my current idea is to build a new sequencer object, and then that could be 'rendered' differently to different controllers (which obviously have different capabilities)
anyway... may be can work together on making this a reality, as its alot of work for one... and I tend to be working on many things simultaneously