yes, that is a very good question, when such “problems” point out the single type boundary of spreads. actually as far as i am concerned with this design issue at the moment, there seems to be no way around different special (formatting) task nodes, e.g. PWM, SERVO, STEPPER (as soon as some common message construction could be found on this one on the Firmata turf and the stepper message leaves its state of proposal…), etc.
Shift registers in common are daisychainable, so as soon as the buffer overflows, the data hits the next in the row. For simple shifters a simple integer value is sufficient enough or can easily be constructed from a spread of booleans, but again, yes, as you pointed out correctly, with PWM shifters this will not work that seamless…
Another issue of declaring one pin as SHIFT are the two accompanying pins for clock and latch. This could easily be solved as taking the two follow ups. But still, not something that makes me too happy.
I totally agree, that shifters and i2c will leverage the Arduino use with vvvv to a new height, so there will be a solution :)