To be completely exact : the bus I am developing has one controller (address 0) and up to 15 slave modules. So yes, it is max 16 nodes per bus
The first reason is that all modules must have a dedicated address and I use either pins on the backplane or a 16-positions switch to tell the address.
The cost of a controller is almost nothing as it uses only a Pico as the simplest version (with a Pico network hat, the cost is 15 euros including the CAN interface), so adding a second bus if necessary is not really an issue
Beside that, I use this bus in a system in my studio, and I found that 16 modules is the maximum to keep the latency as small as possible even with a 1Mbps CAN bus.
Yes. The ID is made of :
- the node address
- the message type
- a sequence counter for fragmented UMP packets
On CAN, everything is broadcast, as all nodes see all messages. So nothing prevents a node to make a dialog with another one. However, the normal strategy for my bus is :
- node 0 can send UMP packets to all nodes (broadcast) or to one node (using address 1 to 15)
- nodes 1 to 15 normally send only to node 0 (which routes the messages to DAW or anything else over RTP-MIDI, USB, etc…)
Yes, messages from Node 0 have higher priority as they are normally use to drive the modules from the DAW, while messages coming from nodes 1 to 15 are typically results of human actions on front panels, so they can be delayed slightly if necessary because Node 0 sends a message
Only standard frames, as I want to keep the bandwidth used as small as possible (so only 11 bits)
1 Mbps. This is the maximum for most CAN chips (as FD is still not yet very widely used and the 5Mbps can be an issue if you don’t use high quality cabling. With 1 Mbps, it still works perfectly with HE10 connectors and flat cables between modules)
Yes, I even use the system daily in my studio
The biggest part of the latency does not come from the CAN bus itself, it comes from the link to the DAW. On the CAN bus itself, for a “serious” use (playing a sequence with a lot of continuous Control Change messages, latency is around 2 ms maximum, and jitter is around 1 ms worst case.
But as I said, I found that USB from the DAW can be a true nightmare… That’s why I prefer to use RTP-MIDI to be honnest (the latency is always kept under 3 ms worst case with RTP-MIDI and Network UMP)
Yes; definitely. And this includes proposing the protocol to MIDI Association. The problem is that the MMA is still very busy with discussions about UMP Networking, as we want to release the protocol specification in the coming months now, and there is no real resources right in the working groups for the other transports.
In all cases, whatever the decision of the MMA, nothing prevents to publish the protocol specification as a “project standard” that becomes later an adopted “global standard”